diff --git a/.env.example b/.env.example new file mode 100644 index 00000000..aa168758 --- /dev/null +++ b/.env.example @@ -0,0 +1,2 @@ +ETHERSCAN_API_KEY=ABC123ABC123ABC123ABC123ABC123ABC1 +PRIVATE_KEY=0xabc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc1 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 new file mode 100644 index 00000000..44172210 --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1 @@ +* @andresaiello @brewmaster012 @lumtis @charliemc0 @fadeev diff --git a/.github/workflows/generated-files.yaml b/.github/workflows/generated-files.yaml new file mode 100644 index 00000000..9dc2dd8c --- /dev/null +++ b/.github/workflows/generated-files.yaml @@ -0,0 +1,42 @@ +name: Generated Files are Updated +on: + pull_request: + branches: + - "*" + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Setup Node.js environment + uses: actions/setup-node@v2 + with: + node-version: "14" + + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install -y jq unzip + yarn install + + - name: Install specific version of aibgen + run: | + wget https://gethstore.blob.core.windows.net/builds/geth-alltools-linux-amd64-1.11.5-a38f4108.tar.gz + tar -zxvf geth-alltools-linux-amd64-1.11.5-a38f4108.tar.gz + sudo mv geth-alltools-linux-amd64-1.11.5-a38f4108/abigen /usr/local/bin/ + + - name: Generate Go packages and typechain-types + run: | + yarn generate + + - name: Check for changes + run: | + if git diff --exit-code --ignore-space-change --ignore-all-space --ignore-cr-at-eol -- pkg typechain-types; then + echo "Generated Go files are up-to-date." + else + echo "::error::Generated files are not up-to-date. Please run 'yarn generate' locally and commit any changes." + exit 1 + fi diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml new file mode 100644 index 00000000..c951c95e --- /dev/null +++ b/.github/workflows/lint.yaml @@ -0,0 +1,26 @@ +name: Lint TS/JS + +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: Lint + run: yarn lint diff --git a/.github/workflows/publish-npm.yaml b/.github/workflows/publish-npm.yaml new file mode 100644 index 00000000..b9e866bd --- /dev/null +++ b/.github/workflows/publish-npm.yaml @@ -0,0 +1,40 @@ +name: Publish to NPM + +on: + release: + types: [published] + +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: Determine NPM Tag + id: determine-npm-tag + run: | + VERSION_TAG=${GITHUB_REF#refs/tags/v} + if [[ $VERSION_TAG == *"-"* ]]; then + echo ::set-output name=NPM_TAG::${VERSION_TAG#*-} + else + echo ::set-output name=NPM_TAG::latest + fi + env: + GITHUB_REF: ${{ github.ref }} + + - name: Publish to NPM + run: yarn publish --new-version ${GITHUB_REF#refs/tags/v} --tag ${{ steps.determine-npm-tag.outputs.NPM_TAG }} --no-git-tag-version + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + GITHUB_REF: ${{ github.ref }} diff --git a/.github/workflows/semantic-pr.yaml b/.github/workflows/semantic-pr.yaml new file mode 100644 index 00000000..498b95be --- /dev/null +++ b/.github/workflows/semantic-pr.yaml @@ -0,0 +1,16 @@ +name: "Semantic PR" +on: + pull_request_target: + types: + - opened + - edited + - synchronize + +jobs: + main: + name: Validate PR title + runs-on: ubuntu-latest + steps: + - uses: amannn/action-semantic-pull-request@v5 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 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/.gitignore b/.gitignore index 89159b56..557eba6c 100644 --- a/.gitignore +++ b/.gitignore @@ -24,4 +24,6 @@ tsconfig.tsbuildinfo # Slither scripts/slither-results/* -!scripts/slither-results/.gitkeep \ No newline at end of file +!scripts/slither-results/.gitkeep + +abi \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..48d6eaf2 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,21 @@ +# Set the base image to ethereum/client-go +FROM ethereum/client-go:alltools-v1.11.5 + +# Update and install dependencies +RUN apk update && \ + apk add jq unzip bash + +# Copy the scripts directory into the docker container +COPY . . + +# Make the script executable +RUN chmod +x /scripts/generate_go.sh + +# Set the working directory +WORKDIR / + +# Print the contents of /scripts/pkg after running the script +CMD ["ls", "-la", "pkg"] + +# Set the entry point to your script +ENTRYPOINT ["/bin/bash", "/scripts/generate_go.sh"] diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..dd5957bf --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 Meta Protocol, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file 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/interfaces/ZetaInterfaces.sol b/contracts/evm/interfaces/ZetaInterfaces.sol index d078d6d0..a28a24f2 100644 --- a/contracts/evm/interfaces/ZetaInterfaces.sol +++ b/contracts/evm/interfaces/ZetaInterfaces.sol @@ -101,6 +101,8 @@ interface ZetaTokenConsumer { address outputToken, uint256 zetaTokenAmount ) external returns (uint256); + + function hasZetaLiquidity() external view returns (bool); } interface ZetaCommonErrors { 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/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/evm/tools/ZetaTokenConsumerTrident.strategy.sol b/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol index 2a20214d..a4ce8240 100644 --- a/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol +++ b/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol @@ -199,4 +199,9 @@ contract ZetaTokenConsumerTrident is ZetaTokenConsumer, ZetaTokenConsumerTrident emit ZetaExchangedForToken(outputToken, zetaTokenAmount, amountOut); return amountOut; } + + function hasZetaLiquidity() external view override returns (bool) { + //@TODO: Implement + return false; + } } diff --git a/contracts/evm/tools/ZetaTokenConsumerUniV2.strategy.sol b/contracts/evm/tools/ZetaTokenConsumerUniV2.strategy.sol index b299d866..28c49268 100644 --- a/contracts/evm/tools/ZetaTokenConsumerUniV2.strategy.sol +++ b/contracts/evm/tools/ZetaTokenConsumerUniV2.strategy.sol @@ -158,4 +158,16 @@ contract ZetaTokenConsumerUniV2 is ZetaTokenConsumer, ZetaTokenConsumerUniV2Erro emit ZetaExchangedForToken(outputToken, zetaTokenAmount, amountOut); return amountOut; } + + function hasZetaLiquidity() external view override returns (bool) { + address[] memory path = new address[](2); + path[0] = wETH; + path[1] = zetaToken; + + try uniswapV2Router.getAmountsOut(1, path) returns (uint256[] memory amounts) { + return amounts[path.length - 1] > 0; + } catch { + return false; + } + } } diff --git a/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol b/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol index bf2cc978..648ac1a2 100644 --- a/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol +++ b/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol @@ -4,7 +4,8 @@ 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-periphery/contracts/interfaces/IQuoter.sol"; +import "@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol"; +import "@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol"; import "../interfaces/ZetaInterfaces.sol"; @@ -30,18 +31,18 @@ contract ZetaTokenConsumerUniV3 is ZetaTokenConsumer, ZetaTokenConsumerUniV3Erro uint24 public immutable zetaPoolFee; uint24 public immutable tokenPoolFee; - address internal immutable WETH9Address; + address public immutable WETH9Address; address public immutable zetaToken; ISwapRouter public immutable uniswapV3Router; - IQuoter public immutable quoter; + IUniswapV3Factory public immutable uniswapV3Factory; bool internal _locked; constructor( address zetaToken_, address uniswapV3Router_, - address quoter_, + address uniswapV3Factory_, address WETH9Address_, uint24 zetaPoolFee_, uint24 tokenPoolFee_ @@ -49,13 +50,13 @@ contract ZetaTokenConsumerUniV3 is ZetaTokenConsumer, ZetaTokenConsumerUniV3Erro if ( zetaToken_ == address(0) || uniswapV3Router_ == address(0) || - quoter_ == address(0) || + uniswapV3Factory_ == address(0) || WETH9Address_ == address(0) ) revert ZetaCommonErrors.InvalidAddress(); zetaToken = zetaToken_; uniswapV3Router = ISwapRouter(uniswapV3Router_); - quoter = IQuoter(quoter_); + uniswapV3Factory = IUniswapV3Factory(uniswapV3Factory_); WETH9Address = WETH9Address_; zetaPoolFee = zetaPoolFee_; tokenPoolFee = tokenPoolFee_; @@ -179,4 +180,16 @@ contract ZetaTokenConsumerUniV3 is ZetaTokenConsumer, ZetaTokenConsumerUniV3Erro 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/Interfaces.sol b/contracts/zevm/Interfaces.sol index aabf751f..f9bba9b2 100644 --- a/contracts/zevm/Interfaces.sol +++ b/contracts/zevm/Interfaces.sol @@ -46,16 +46,6 @@ interface IZRC20 { event UpdatedProtocolFlatFee(uint256 protocolFlatFee); } -abstract contract Context { - function _msgSender() internal view virtual returns (address) { - return msg.sender; - } - - function _msgData() internal view virtual returns (bytes calldata) { - return msg.data; - } -} - interface IZRC20Metadata is IZRC20 { function name() external view returns (string memory); @@ -70,11 +60,3 @@ enum CoinType { Gas, ERC20 } - -/** - * @dev Any ZetaChain Contract must implement this interface to allow SystemContract to interact with. - * This is only required if the contract wants to interact with other chains. - */ -interface zContract { - function onCrossChainCall(address zrc20, uint256 amount, bytes calldata message) external; -} diff --git a/contracts/zevm/SystemContract.sol b/contracts/zevm/SystemContract.sol index e400aa1a..272fbdfd 100644 --- a/contracts/zevm/SystemContract.sol +++ b/contracts/zevm/SystemContract.sol @@ -56,21 +56,26 @@ contract SystemContract is SystemContractErrors { emit SystemContractDeployed(); } - // - /** * @dev Deposit foreign coins into ZRC20 and call user specified contract on zEVM. + * @param context, context data for deposit. * @param zrc20, zrc20 address for deposit. * @param amount, amount to deposit. * @param target, contract address to make a call after deposit. * @param message, calldata for a call. */ - function depositAndCall(address zrc20, uint256 amount, address target, bytes calldata message) external { + function depositAndCall( + zContext calldata context, + address zrc20, + uint256 amount, + address target, + bytes calldata message + ) external { if (msg.sender != FUNGIBLE_MODULE_ADDRESS) revert CallerIsNotFungibleModule(); if (target == FUNGIBLE_MODULE_ADDRESS || target == address(this)) revert InvalidTarget(); IZRC20(zrc20).deposit(target, amount); - zContract(target).onCrossChainCall(zrc20, amount, message); + zContract(target).onCrossChainCall(context, zrc20, amount, message); } /** diff --git a/contracts/zevm/wzeta.sol b/contracts/zevm/WZETA.sol similarity index 100% rename from contracts/zevm/wzeta.sol rename to contracts/zevm/WZETA.sol diff --git a/contracts/zevm/ZRC20.sol b/contracts/zevm/ZRC20.sol index f6bdcc46..5e132fcf 100644 --- a/contracts/zevm/ZRC20.sol +++ b/contracts/zevm/ZRC20.sol @@ -17,7 +17,7 @@ interface ZRC20Errors { error ZeroAddress(); } -contract ZRC20 is Context, IZRC20, IZRC20Metadata, ZRC20Errors { +contract ZRC20 is IZRC20, IZRC20Metadata, ZRC20Errors { /// @notice Fungible address is always the same, maintained at the protocol level address public constant FUNGIBLE_MODULE_ADDRESS = 0x735b14BB79463307AAcBED86DAf3322B1e6226aB; /// @notice Chain id.abi @@ -38,6 +38,14 @@ contract ZRC20 is Context, IZRC20, IZRC20Metadata, ZRC20Errors { string private _symbol; uint8 private _decimals; + function _msgSender() internal view virtual returns (address) { + return msg.sender; + } + + function _msgData() internal view virtual returns (bytes calldata) { + return msg.data; + } + /** * @dev Only fungible module modifier. */ @@ -139,29 +147,6 @@ contract ZRC20 is Context, 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/interfaces/zContract.sol b/contracts/zevm/interfaces/zContract.sol index 7dd6a1b8..1580ee63 100644 --- a/contracts/zevm/interfaces/zContract.sol +++ b/contracts/zevm/interfaces/zContract.sol @@ -1,6 +1,17 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.7; +struct zContext { + bytes origin; + address sender; + uint256 chainID; +} + interface zContract { - function onCrossChainCall(address zrc20, uint256 amount, bytes calldata message) external; + function onCrossChainCall( + zContext calldata context, + address zrc20, + uint256 amount, + bytes calldata message + ) 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 new file mode 100644 index 00000000..3f204c42 --- /dev/null +++ b/data/addresses.json @@ -0,0 +1,132 @@ +{ + "ccm": { + "bsc_mainnet": { + "connector": "", + "erc20Custody": "", + "immutableCreate2Factory": "0x095a03c6a68137fE9a566bBc3e552F299d8b886d", + "tss": "", + "tssUpdater": "", + "zetaToken": "" + }, + "bsc_testnet": { + "connector": "0x0000ecb8cdd25a18f12daa23f6422e07fbf8b9e1", + "erc20Custody": "0x0000a7db254145767262c6a81a7ee1650684258e", + "immutableCreate2Factory": "0x095a03c6a68137fE9a566bBc3e552F299d8b886d", + "tss": "0x8531a5aB847ff5B22D855633C25ED1DA3255247e", + "tssUpdater": "0x55122f7590164Ac222504436943FAB17B62F5d7d", + "zetaToken": "0x0000c9ec4042283e8139c74f4c64bcd1e0b9b54f", + "zetaTokenConsumerUniV2": "", + "zetaTokenConsumerUniV3": "0xFB2fCE3CCca19F0f764Ed8aa26C62181E3dA04C5" + }, + "btc_testnet": { + "connector": "", + "immutableCreate2Factory": "", + "tss": "tb1qy9pqmk2pd9sv63g27jt8r657wy0d9ueeh0nqur", + "tssUpdater": "", + "zetaToken": "", + "zetaTokenConsumerUniV2": "", + "zetaTokenConsumerUniV3": "" + }, + "eth_mainnet": { + "connector": "0x054197b11aA98E6d842073F9362b64b10F2c24A7", + "erc20Custody": "0xb77277Cf4c734894d4f2471492B184E5C71C32a9", + "immutableCreate2Factory": "0x095a03c6a68137fE9a566bBc3e552F299d8b886d", + "tss": "0x6F28967E382765cEF6149fa02Cd0Ba0753B01A6b", + "tssUpdater": "0xfCA0392567D5eb77681843b2608dE9C625F57948", + "zetaToken": "0x5CDf9f824526Bf2A4638BF6879591F635Bb8f0B8" + }, + "goerli_testnet": { + "connector": "0x00005e3125aba53c5652f9f0ce1a4cf91d8b15ea", + "erc20Custody": "0x000047f11c6e42293f433c82473532e869ce4ec5", + "immutableCreate2Factory": "0x095a03c6a68137fE9a566bBc3e552F299d8b886d", + "tss": "0x8531a5aB847ff5B22D855633C25ED1DA3255247e", + "tssUpdater": "0x55122f7590164Ac222504436943FAB17B62F5d7d", + "zetaToken": "0x0000c304d2934c00db1d51995b9f6996affd17c0", + "zetaTokenConsumerUniV2": "0x8eAc517b92eeE82177a83851268F13109878f8c4", + "zetaTokenConsumerUniV3": "" + }, + "mumbai_testnet": { + "connector": "0x0000ecb8cdd25a18f12daa23f6422e07fbf8b9e1", + "erc20Custody": "0x0000a7db254145767262c6a81a7ee1650684258e", + "immutableCreate2Factory": "0x095a03c6a68137fE9a566bBc3e552F299d8b886d", + "tss": "0x8531a5aB847ff5B22D855633C25ED1DA3255247e", + "tssUpdater": "0x55122f7590164Ac222504436943FAB17B62F5d7d", + "zetaToken": "0x0000c9ec4042283e8139c74f4c64bcd1e0b9b54f", + "zetaTokenConsumerUniV2": "", + "zetaTokenConsumerUniV3": "0x7e792f3736751e168864106AdbAC50152641A927" + }, + "zeta_testnet": { + "connector": "0x239e96c8f17C85c30100AC26F635Ea15f23E9c67", + "immutableCreate2Factory": "", + "tss": "0x7c125C1d515b8945841b3d5144a060115C58725F", + "tssUpdater": "0x7274d1d5dddef36aac53dd45b93487ce01ef0a55", + "zetaToken": "0x5F0b1a82749cb4E2278EC87F8BF6B618dC71a8bf", + "zetaTokenConsumerUniV2": "", + "zetaTokenConsumerUniV3": "" + } + }, + "non_zeta": { + "bsc_mainnet": { + "uniswapV2Factory": "", + "uniswapV2Router02": "", + "uniswapV3Factory": "", + "uniswapV3Router": "", + "weth9": "" + }, + "bsc_testnet": { + "uniswapV2Factory": "", + "uniswapV2Router02": "0x9Ac64Cc6e4415144C455BD8E4837Fea55603e5c3", + "uniswapV3Factory": "0x0BFbCF9fa4f9C56B0F40a671Ad40E0805A091865", + "uniswapV3Router": "0x9a489505a00cE272eAa5e07Dba6491314CaE3796", + "weth9": "0xae13d989daC2f0dEbFf460aC112a837C89BAa7cd" + }, + "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": "0x9c3C9283D3e44854697Cd22D3Faa240Cfb032889" + }, + "zeta_testnet": { + "uniswapV2Factory": "", + "uniswapV2Router02": "", + "uniswapV3Factory": "", + "uniswapV3Router": "", + "weth9": "" + } + }, + "zevm": { + "bsc_testnet": { + "zrc20": "0xd97B1de3619ed2c6BEb3860147E30cA8A7dC9891" + }, + "goerli_testnet": { + "zrc20": "0x13A0c5930C028511Dc02665E7285134B6d11A5f4" + }, + "mumbai_testnet": { + "zrc20": "0x48f80608B672DC30DC7e3dbBd0343c5F02C738Eb" + }, + "btc_testnet": { + "zrc20": "0x65a45c57636f9BcCeD4fe193A602008578BcA90b" + }, + "zeta_testnet": { + "fungibleModule": "0x735b14BB79463307AAcBED86DAf3322B1e6226aB", + "systemContract": "0xEdf1c3275d13489aCdC6cD6eD246E72458B8795B", + "uniswapv2Factory": "0x9fd96203f7b22bCF72d9DCb40ff98302376cE09c", + "uniswapv2Router02": "0x2ca7d64A7EFE2D62A725E2B35Cf7230D6677FfEe" + } + } +} \ No newline at end of file diff --git a/hardhat.config.ts b/hardhat.config.ts index bb5d9088..fafd83c9 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -4,6 +4,7 @@ import "@typechain/hardhat"; import "tsconfig-paths/register"; import "hardhat-abi-exporter"; +import { getHardhatConfigNetworks } from "@zetachain/networks"; import * as dotenv from "dotenv"; import type { HardhatUserConfig } from "hardhat/types"; @@ -11,82 +12,20 @@ import "./tasks/addresses"; dotenv.config(); -const PRIVATE_KEYS = process.env.PRIVATE_KEY !== undefined ? [`0x${process.env.PRIVATE_KEY}`] : []; - const config: HardhatUserConfig = { - networks: { - athens: { - accounts: PRIVATE_KEYS, - // chainId: 7001, - gas: 5000000, - gasPrice: 80000000000, - url: `https://rpc.ankr.com/zetachain_evm_testnet`, - }, - "bsc-localnet": { - gas: 5000000, - gasPrice: 80000000000, - url: "http://localhost:8120", - }, - "bsc-testnet": { - accounts: PRIVATE_KEYS, - gas: 5000000, - gasPrice: 80000000000, - url: `https://data-seed-prebsc-1-s1.binance.org:8545`, - }, - "eth-localnet": { - gas: 2100000, - gasPrice: 80000000000, - url: "http://localhost:8100", - }, - "eth-mainnet": { - accounts: PRIVATE_KEYS, - url: "https://rpc.ankr.com/eth", - }, - goerli: { - accounts: PRIVATE_KEYS, - gas: 2100000, - gasPrice: 38000000000, - url: `https://rpc.ankr.com/eth_goerli`, - }, - hardhat: { - chainId: 1337, - forking: { - blockNumber: 14672712, - url: "https://rpc.ankr.com/eth", - }, - }, - "klaytn-baobab": { - accounts: PRIVATE_KEYS, - chainId: 1001, - gas: 6000000, - gasPrice: 54250000000, - url: "https://api.baobab.klaytn.net:8651", - }, - "klaytn-cypress": { - accounts: PRIVATE_KEYS, - chainId: 8217, - gas: 2100000, - gasPrice: 8000000000, - url: "https://scope.klaytn.com/", - }, - "polygon-localnet": { - gas: 5000000, - gasPrice: 80000000000, - url: "http://localhost:8140", - }, - "polygon-mumbai": { - accounts: PRIVATE_KEYS, - gas: 5000000, - gasPrice: 80000000000, - url: "https://rpc.ankr.com/polygon_mumbai", - }, - ropsten: { - accounts: PRIVATE_KEYS, - gas: 9000000, - gasPrice: 80000000000, - url: "https://ropsten.infura.io/v3/", + //@ts-ignore + etherscan: { + apiKey: { + // BSC + bscTestnet: process.env.BSCSCAN_API_KEY || "", + // ETH + goerli: process.env.ETHERSCAN_API_KEY || "", + mainnet: process.env.ETHERSCAN_API_KEY || "", }, }, + networks: { + ...getHardhatConfigNetworks(), + }, solidity: { compilers: [ { version: "0.4.19" /** For zevm/wzeta.sol */ }, diff --git a/lib/address.helpers.ts b/lib/address.helpers.ts index c497001b..3ddc8a33 100644 --- a/lib/address.helpers.ts +++ b/lib/address.helpers.ts @@ -1,23 +1,14 @@ -import { getAddress as getAddressLib, NetworkName, ZetaAddress, ZetaNetworkName } from "@zetachain/addresses"; -import { network } from "hardhat"; +import { ZetaProtocolNetwork } from "./address.tools"; -const MissingZetaNetworkError = new Error( - "ZETA_NETWORK is not defined, please set the environment variable (e.g.: ZETA_NETWORK=athens )" -); +export declare type TestAddress = "dai" | "usdc"; -export const getAddress = ( - address: ZetaAddress, - { - customNetworkName, - customZetaNetwork, - }: { customNetworkName?: NetworkName; customZetaNetwork?: ZetaNetworkName } = {} -): string => { - const { name: _networkName } = network; - const networkName = customNetworkName || _networkName; +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 { 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 new file mode 100644 index 00000000..61348de8 --- /dev/null +++ b/lib/address.tools.ts @@ -0,0 +1,98 @@ +import addresses from "../data/addresses.json"; + +export declare type ZetaProtocolAddress = + | "connector" + | "erc20Custody" + | "immutableCreate2Factory" + | "tss" + | "tssUpdater" + | "zetaToken" + | "zetaTokenConsumerUniV2" + | "zetaTokenConsumerUniV3"; + +export const zetaProtocolAddress: ZetaProtocolAddress[] = [ + "connector", + "erc20Custody", + "immutableCreate2Factory", + "tss", + "tssUpdater", + "zetaToken", + "zetaTokenConsumerUniV2", + "zetaTokenConsumerUniV3", +]; +export const isZetaProtocolAddress = (str: string): str is ZetaProtocolAddress => + zetaProtocolAddress.includes(str as ZetaProtocolAddress); + +export declare type ZetaZEVMAddress = + | "fungibleModule" + | "systemContract" + | "uniswapv2Factory" + | "uniswapv2Router02" + | "zrc20"; + +export declare type ZetaProtocolTestNetwork = + | "baobab_testnet" + | "bsc_testnet" + | "btc_testnet" + | "goerli_testnet" + | "mumbai_testnet" + | "zeta_testnet"; + +export const zetaProtocolTestNetworks: ZetaProtocolTestNetwork[] = [ + "baobab_testnet", + "bsc_testnet", + "btc_testnet", + "goerli_testnet", + "mumbai_testnet", + "zeta_testnet", +]; + +export declare type NonZetaAddress = + | "uniswapV2Factory" + | "uniswapV2Router02" + | "uniswapV3Factory" + | "uniswapV3Router" + | "weth9"; + +export const nonZetaAddress: NonZetaAddress[] = [ + "uniswapV2Factory", + "uniswapV2Router02", + "uniswapV3Router", + "uniswapV3Factory", + "weth9", +]; + +export declare type ZetaProtocolMainNetwork = "bsc_mainnet" | "eth_mainnet"; +export const zetaProtocolMainNetworks: ZetaProtocolMainNetwork[] = ["eth_mainnet", "bsc_mainnet"]; + +export declare type ZetaProtocolNetwork = ZetaProtocolMainNetwork | ZetaProtocolTestNetwork; +export const zetaProtocolNetworks: ZetaProtocolNetwork[] = [...zetaProtocolTestNetworks, ...zetaProtocolMainNetworks]; + +export declare type ZetaProtocolEnviroment = "mainnet" | "testnet"; + +export const isProtocolNetworkName = (str: string): str is ZetaProtocolNetwork => + zetaProtocolNetworks.includes(str as ZetaProtocolNetwork); + +export const isTestnetNetwork = (network: ZetaProtocolTestNetwork): boolean => { + return zetaProtocolTestNetworks.includes(network); +}; + +export const isMainnetNetwork = (network: ZetaProtocolTestNetwork): boolean => { + return false; +}; + +export const getAddress = (address: ZetaProtocolAddress | ZetaZEVMAddress, network: ZetaProtocolNetwork): string => { + if (isZetaProtocolAddress(address)) { + return (addresses["ccm"] as any)[network][address]; + } + + return (addresses["zevm"] as any)[network][address]; +}; + +export const getZRC20Address = (network: ZetaProtocolNetwork): string => { + return (addresses["zevm"] as any)[network]["zrc20"]; +}; + +export const getNonZetaAddress = (address: NonZetaAddress, network: ZetaProtocolNetwork): string => { + return (addresses["non_zeta"] as any)[network][address]; +}; diff --git a/lib/contracts.constants.ts b/lib/contracts.constants.ts index 0a3c42ae..1ea515fd 100644 --- a/lib/contracts.constants.ts +++ b/lib/contracts.constants.ts @@ -5,12 +5,12 @@ 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 = "38208"; -export const ZETA_TOKEN_SALT_NUMBER_NON_ETH = "29411"; +export const ZETA_TOKEN_SALT_NUMBER_ETH = "84108"; +export const ZETA_TOKEN_SALT_NUMBER_NON_ETH = "29265"; // dev: this values should be calculated using get-salt script -export const ZETA_CONNECTOR_SALT_NUMBER_ETH = "62538"; -export const ZETA_CONNECTOR_SALT_NUMBER_NON_ETH = "4945"; +export const ZETA_CONNECTOR_SALT_NUMBER_ETH = "1414"; +export const ZETA_CONNECTOR_SALT_NUMBER_NON_ETH = "71733"; export const ERC20_CUSTODY_SALT_NUMBER_ETH = "87967"; export const ERC20_CUSTODY_SALT_NUMBER_NON_ETH = "195084"; diff --git a/lib/contracts.helpers.ts b/lib/contracts.helpers.ts index f941a0d1..565d5a78 100644 --- a/lib/contracts.helpers.ts +++ b/lib/contracts.helpers.ts @@ -24,7 +24,10 @@ 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" || + networkName === "bsc_mainnet"; export const deployZetaConnectorBase = async ({ args }: { args: Parameters }) => { const Factory = (await ethers.getContractFactory("ZetaConnectorBase")) as ZetaConnectorBaseFactory; diff --git a/lib/index.ts b/lib/index.ts new file mode 100644 index 00000000..b2321035 --- /dev/null +++ b/lib/index.ts @@ -0,0 +1 @@ +export * from "./address.tools"; diff --git a/package.json b/package.json index 1f43828d..9e7bde0a 100644 --- a/package.json +++ b/package.json @@ -22,9 +22,10 @@ "@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/addresses-tools": "^0.0.7", + "@zetachain/networks": "^2.4.3", "chai": "^4.3.6", + "cpx": "^1.5.0", + "del-cli": "^5.0.0", "dotenv": "^16.0.0", "eslint": "^8.13.0", "eslint-config-prettier": "^8.5.0", @@ -54,26 +55,28 @@ }, "files": [ "contracts", + "abi", "dist" ], "keywords": [], "license": "MIT", - "main": "./dist/typechain-types/index.js", + "main": "./dist/lib/index.js", "name": "@zetachain/protocol-contracts", "publishConfig": { "access": "public", "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": "npx hardhat compile", - "generate:go": "yarn compile && ./scripts/generate_go.sh", - "generate:interfaces": "yarn clean && yarn compile", + "compile": "yarn clean && npx hardhat compile", + "generate": "yarn compile && ./scripts/generate_go.sh", + "lint": "npx eslint . --ext .js,.ts", "lint:fix": "npx eslint . --ext .js,.ts,.json --fix", - "prepublishOnly": "npx tsc", + "prepublishOnly": "yarn build", "test": "npx hardhat clean && npx hardhat test", "tsc:watch": "npx tsc --watch" }, - "types": "./dist/typechain-types/index.d.ts", - "version": "0.0.7" + "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 c3c98992..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: "0x60c06040523480156200001157600080fd5b50604051620021043803806200210483398181016040528101906200003791906200014f565b84600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550826002819055508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b81525050816080818152505050505050506200027c565b6000815190506200011b816200022e565b92915050565b600081519050620001328162000248565b92915050565b600081519050620001498162000262565b92915050565b600080600080600060a086880312156200016e576200016d62000229565b5b60006200017e888289016200010a565b955050602062000191888289016200010a565b9450506040620001a48882890162000138565b9350506060620001b78882890162000138565b9250506080620001ca8882890162000121565b9150509295509295909350565b6000620001e482620001ff565b9050919050565b6000620001f882620001d7565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600080fd5b6200023981620001d7565b81146200024557600080fd5b50565b6200025381620001eb565b81146200025f57600080fd5b50565b6200026d816200021f565b81146200027957600080fd5b50565b60805160a05160601c611e4a620002ba60003960008181610dfd01528181610e66015261105a01526000818161042b0152610c6e0152611e4a6000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80639b19251a11610097578063e5408cfa11610066578063e5408cfa1461024d578063e609055e1461026b578063e8f9cb3a14610287578063ed11692b146102a557610100565b80639b19251a146101c9578063d936547e146101e5578063d9caed1214610215578063de2f6c5e1461023157610100565b80637bdaded3116100d35780637bdaded3146101695780638456cb5914610187578063950837aa146101915780639a590427146101ad57610100565b80633f4ba83a1461010557806353ee30a31461010f57806354b61e811461012d5780635c975abb1461014b575b600080fd5b61010d6102af565b005b6101176103cc565b60405161012491906119b8565b60405180910390f35b6101356103f2565b60405161014291906119b8565b60405180910390f35b610153610418565b6040516101609190611a33565b60405180910390f35b610171610429565b60405161017e9190611b34565b60405180910390f35b61018f61044d565b005b6101ab60048036038101906101a6919061168a565b6105f4565b005b6101c760048036038101906101c291906117de565b61075c565b005b6101e360048036038101906101de91906117de565b610881565b005b6101ff60048036038101906101fa91906117de565b6109a6565b60405161020c9190611a33565b60405180910390f35b61022f600480360381019061022a91906116b7565b6109c6565b005b61024b6004803603810190610246919061180b565b610baa565b005b610255610d07565b6040516102629190611b34565b60405180910390f35b61028560048036038101906102809190611737565b610d0d565b005b61028f611058565b60405161029c9190611a97565b60405180910390f35b6102ad61107c565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610335576040517e611fa600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054906101000a900460ff16610379576040517f6cd6020100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa336040516103c291906119b8565b60405180910390a1565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104d3576040517e611fa600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054906101000a900460ff1615610518576040517f1309a56300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156105a1576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60016000806101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258336040516105ea91906119b8565b60405180910390a1565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461067a576040517e611fa600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156106e1576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fcd2958db8285a532edf298cbe1aa28ea3fb5ec82461253f9a8c1477924e299478160405161075191906119b8565b60405180910390a150565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107e3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f51085ddf9ebdded84b76e829eb58c4078e4b5bdf97d9a94723f336039da4679160405160405180910390a250565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610908576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167faab7954e9d246b167ef88aeddad35209ca2489d95a8aeb59e288d9b19fae5a5460405160405180910390a250565b60036020528060005260406000206000915054906101000a900460ff1681565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a4d576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054906101000a900460ff1615610a92576040517f1309a56300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610b15576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b4083828473ffffffffffffffffffffffffffffffffffffffff166112279092919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb83604051610b9d9190611b34565b60405180910390a3505050565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c31576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000811415610c6c576040517faf13986d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000811115610cc6576040517fc1be451300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806002819055507f6d2d8e313fbaf76898bb9fa55e4b52525e49c7d7182d0874f97bd9076e81d52381604051610cfc9190611b34565b60405180910390a150565b60025481565b60008054906101000a900460ff1615610d52576040517f1309a56300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610dd5576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060025414158015610e355750600073ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614155b15610eac57610eab33600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166112ad909392919063ffffffff16565b5b60008473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610ee791906119b8565b60206040518083038186803b158015610eff57600080fd5b505afa158015610f13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f379190611838565b9050610f663330868873ffffffffffffffffffffffffffffffffffffffff166112ad909392919063ffffffff16565b8473ffffffffffffffffffffffffffffffffffffffff167f1dafa057cc5c3bccb5ad974129a2bccd3c74002d9dfd7062404ba9523b18d6ae8888848973ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610fda91906119b8565b60206040518083038186803b158015610ff257600080fd5b505afa158015611006573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102a9190611838565b6110349190611b92565b8787604051611047959493929190611a4e565b60405180910390a250505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611102576040517e611fa600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561118b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f39ac266bfc011581be62c138d96e4e8782812013bb66fffb4cd207f4bfee37773360405161121d91906119b8565b60405180910390a1565b6112a88363a9059cbb60e01b8484604051602401611246929190611a0a565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611336565b505050565b611330846323b872dd60e01b8585856040516024016112ce939291906119d3565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611336565b50505050565b6000611398826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166113fd9092919063ffffffff16565b90506000815111156113f857808060200190518101906113b8919061170a565b6113f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ee90611b14565b60405180910390fd5b5b505050565b606061140c8484600085611415565b90509392505050565b60608247101561145a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145190611ad4565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161148391906119a1565b60006040518083038185875af1925050503d80600081146114c0576040519150601f19603f3d011682016040523d82523d6000602084013e6114c5565b606091505b50915091506114d6878383876114e2565b92505050949350505050565b606083156115455760008351141561153d576114fd85611558565b61153c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153390611af4565b60405180910390fd5b5b829050611550565b61154f838361157b565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008251111561158e5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c29190611ab2565b60405180910390fd5b6000813590506115da81611db8565b92915050565b6000815190506115ef81611dcf565b92915050565b60008083601f84011261160b5761160a611ccc565b5b8235905067ffffffffffffffff81111561162857611627611cc7565b5b60208301915083600182028301111561164457611643611cd1565b5b9250929050565b60008135905061165a81611de6565b92915050565b60008135905061166f81611dfd565b92915050565b60008151905061168481611dfd565b92915050565b6000602082840312156116a05761169f611cdb565b5b60006116ae848285016115cb565b91505092915050565b6000806000606084860312156116d0576116cf611cdb565b5b60006116de868287016115cb565b93505060206116ef8682870161164b565b925050604061170086828701611660565b9150509250925092565b6000602082840312156117205761171f611cdb565b5b600061172e848285016115e0565b91505092915050565b6000806000806000806080878903121561175457611753611cdb565b5b600087013567ffffffffffffffff81111561177257611771611cd6565b5b61177e89828a016115f5565b9650965050602061179189828a0161164b565b94505060406117a289828a01611660565b935050606087013567ffffffffffffffff8111156117c3576117c2611cd6565b5b6117cf89828a016115f5565b92509250509295509295509295565b6000602082840312156117f4576117f3611cdb565b5b60006118028482850161164b565b91505092915050565b60006020828403121561182157611820611cdb565b5b600061182f84828501611660565b91505092915050565b60006020828403121561184e5761184d611cdb565b5b600061185c84828501611675565b91505092915050565b61186e81611bc6565b82525050565b61187d81611bd8565b82525050565b600061188f8385611b65565b935061189c838584611c56565b6118a583611ce0565b840190509392505050565b60006118bb82611b4f565b6118c58185611b76565b93506118d5818560208601611c65565b80840191505092915050565b6118ea81611c20565b82525050565b60006118fb82611b5a565b6119058185611b81565b9350611915818560208601611c65565b61191e81611ce0565b840191505092915050565b6000611936602683611b81565b915061194182611cf1565b604082019050919050565b6000611959601d83611b81565b915061196482611d40565b602082019050919050565b600061197c602a83611b81565b915061198782611d69565b604082019050919050565b61199b81611c16565b82525050565b60006119ad82846118b0565b915081905092915050565b60006020820190506119cd6000830184611865565b92915050565b60006060820190506119e86000830186611865565b6119f56020830185611865565b611a026040830184611992565b949350505050565b6000604082019050611a1f6000830185611865565b611a2c6020830184611992565b9392505050565b6000602082019050611a486000830184611874565b92915050565b60006060820190508181036000830152611a69818789611883565b9050611a786020830186611992565b8181036040830152611a8b818486611883565b90509695505050505050565b6000602082019050611aac60008301846118e1565b92915050565b60006020820190508181036000830152611acc81846118f0565b905092915050565b60006020820190508181036000830152611aed81611929565b9050919050565b60006020820190508181036000830152611b0d8161194c565b9050919050565b60006020820190508181036000830152611b2d8161196f565b9050919050565b6000602082019050611b496000830184611992565b92915050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000611b9d82611c16565b9150611ba883611c16565b925082821015611bbb57611bba611c98565b5b828203905092915050565b6000611bd182611bf6565b9050919050565b60008115159050919050565b6000611bef82611bc6565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000611c2b82611c32565b9050919050565b6000611c3d82611c44565b9050919050565b6000611c4f82611bf6565b9050919050565b82818337600083830152505050565b60005b83811015611c83578082015181840152602081019050611c68565b83811115611c92576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b611dc181611bc6565b8114611dcc57600080fd5b50565b611dd881611bd8565b8114611de357600080fd5b50565b611def81611be4565b8114611dfa57600080fd5b50565b611e0681611c16565b8114611e1157600080fd5b5056fea264697066735822122062d1e189691e580653c54a3109bfc9fbea9ed46f739b6856b8181a7c3624a01464736f6c63430008070033", + Bin: "0x60c06040523480156200001157600080fd5b50604051620021a0380380620021a0833981810160405281019062000037919062000156565b6001600081905550846001806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550826003819055508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508160808181525050505050505062000283565b600081519050620001228162000235565b92915050565b60008151905062000139816200024f565b92915050565b600081519050620001508162000269565b92915050565b600080600080600060a0868803121562000175576200017462000230565b5b6000620001858882890162000111565b9550506020620001988882890162000111565b9450506040620001ab888289016200013f565b9350506060620001be888289016200013f565b9250506080620001d18882890162000128565b9150509295509295909350565b6000620001eb8262000206565b9050919050565b6000620001ff82620001de565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600080fd5b6200024081620001de565b81146200024c57600080fd5b50565b6200025a81620001f2565b81146200026657600080fd5b50565b620002748162000226565b81146200028057600080fd5b50565b60805160a05160601c611edf620002c160003960008181610dca01528181610e31015261102d01526000818161042d0152610c310152611edf6000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80639b19251a11610097578063e5408cfa11610066578063e5408cfa1461024d578063e609055e1461026b578063e8f9cb3a14610287578063ed11692b146102a557610100565b80639b19251a146101c9578063d936547e146101e5578063d9caed1214610215578063de2f6c5e1461023157610100565b80637bdaded3116100d35780637bdaded3146101695780638456cb5914610187578063950837aa146101915780639a590427146101ad57610100565b80633f4ba83a1461010557806353ee30a31461010f57806354b61e811461012d5780635c975abb1461014b575b600080fd5b61010d6102af565b005b6101176103ce565b6040516101249190611a04565b60405180910390f35b6101356103f2565b6040516101429190611a04565b60405180910390f35b610153610418565b6040516101609190611a7f565b60405180910390f35b61017161042b565b60405161017e9190611ba0565b60405180910390f35b61018f61044f565b005b6101ab60048036038101906101a691906116b3565b6105f5565b005b6101c760048036038101906101c29190611807565b61075c565b005b6101e360048036038101906101de9190611807565b61087f565b005b6101ff60048036038101906101fa9190611807565b6109a2565b60405161020c9190611a7f565b60405180910390f35b61022f600480360381019061022a91906116e0565b6109c2565b005b61024b60048036038101906102469190611834565b610b6f565b005b610255610cca565b6040516102629190611ba0565b60405180910390f35b61028560048036038101906102809190611760565b610cd0565b005b61028f61102b565b60405161029c9190611ae3565b60405180910390f35b6102ad61104f565b005b60018054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610334576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160009054906101000a900460ff1661037a576040517f6cd6020100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600160006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa336040516103c49190611a04565b60405180910390a1565b60018054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b60018054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104d4576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160009054906101000a900460ff161561051b576040517f1309a56300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660018054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156105a2576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018060006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258336040516105eb9190611a04565b60405180910390a1565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461067b576040517e611fa600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156106e2576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806001806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fcd2958db8285a532edf298cbe1aa28ea3fb5ec82461253f9a8c1477924e29947816040516107519190611a04565b60405180910390a150565b60018054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107e1576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f51085ddf9ebdded84b76e829eb58c4078e4b5bdf97d9a94723f336039da4679160405160405180910390a250565b60018054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610904576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167faab7954e9d246b167ef88aeddad35209ca2489d95a8aeb59e288d9b19fae5a5460405160405180910390a250565b60046020528060005260406000206000915054906101000a900460ff1681565b6109ca6111f6565b60018054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a4f576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610ad2576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610afd83828473ffffffffffffffffffffffffffffffffffffffff166112469092919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb83604051610b5a9190611ba0565b60405180910390a3610b6a6112cc565b505050565b60018054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bf4576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000811415610c2f576040517faf13986d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000811115610c89576040517fc1be451300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806003819055507f6d2d8e313fbaf76898bb9fa55e4b52525e49c7d7182d0874f97bd9076e81d52381604051610cbf9190611ba0565b60405180910390a150565b60035481565b610cd86111f6565b600160009054906101000a900460ff1615610d1f576040517f1309a56300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610da2576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035414158015610e025750600073ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614155b15610e7757610e763360018054906101000a900473ffffffffffffffffffffffffffffffffffffffff166003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166112d6909392919063ffffffff16565b5b60008473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610eb29190611a04565b60206040518083038186803b158015610eca57600080fd5b505afa158015610ede573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f029190611861565b9050610f313330868873ffffffffffffffffffffffffffffffffffffffff166112d6909392919063ffffffff16565b8473ffffffffffffffffffffffffffffffffffffffff167f1dafa057cc5c3bccb5ad974129a2bccd3c74002d9dfd7062404ba9523b18d6ae8888848973ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610fa59190611a04565b60206040518083038186803b158015610fbd57600080fd5b505afa158015610fd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff59190611861565b610fff9190611bfe565b8787604051611012959493929190611a9a565b60405180910390a2506110236112cc565b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146110d5576040517e611fa600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660018054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561115c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f39ac266bfc011581be62c138d96e4e8782812013bb66fffb4cd207f4bfee3777336040516111ec9190611a04565b60405180910390a1565b6002600054141561123c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123390611b80565b60405180910390fd5b6002600081905550565b6112c78363a9059cbb60e01b8484604051602401611265929190611a56565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061135f565b505050565b6001600081905550565b611359846323b872dd60e01b8585856040516024016112f793929190611a1f565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061135f565b50505050565b60006113c1826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166114269092919063ffffffff16565b905060008151111561142157808060200190518101906113e19190611733565b611420576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141790611b60565b60405180910390fd5b5b505050565b6060611435848460008561143e565b90509392505050565b606082471015611483576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147a90611b20565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516114ac91906119ed565b60006040518083038185875af1925050503d80600081146114e9576040519150601f19603f3d011682016040523d82523d6000602084013e6114ee565b606091505b50915091506114ff8783838761150b565b92505050949350505050565b6060831561156e576000835114156115665761152685611581565b611565576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155c90611b40565b60405180910390fd5b5b829050611579565b61157883836115a4565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000825111156115b75781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115eb9190611afe565b60405180910390fd5b60008135905061160381611e4d565b92915050565b60008151905061161881611e64565b92915050565b60008083601f84011261163457611633611d38565b5b8235905067ffffffffffffffff81111561165157611650611d33565b5b60208301915083600182028301111561166d5761166c611d3d565b5b9250929050565b60008135905061168381611e7b565b92915050565b60008135905061169881611e92565b92915050565b6000815190506116ad81611e92565b92915050565b6000602082840312156116c9576116c8611d47565b5b60006116d7848285016115f4565b91505092915050565b6000806000606084860312156116f9576116f8611d47565b5b6000611707868287016115f4565b935050602061171886828701611674565b925050604061172986828701611689565b9150509250925092565b60006020828403121561174957611748611d47565b5b600061175784828501611609565b91505092915050565b6000806000806000806080878903121561177d5761177c611d47565b5b600087013567ffffffffffffffff81111561179b5761179a611d42565b5b6117a789828a0161161e565b965096505060206117ba89828a01611674565b94505060406117cb89828a01611689565b935050606087013567ffffffffffffffff8111156117ec576117eb611d42565b5b6117f889828a0161161e565b92509250509295509295509295565b60006020828403121561181d5761181c611d47565b5b600061182b84828501611674565b91505092915050565b60006020828403121561184a57611849611d47565b5b600061185884828501611689565b91505092915050565b60006020828403121561187757611876611d47565b5b60006118858482850161169e565b91505092915050565b61189781611c32565b82525050565b6118a681611c44565b82525050565b60006118b88385611bd1565b93506118c5838584611cc2565b6118ce83611d4c565b840190509392505050565b60006118e482611bbb565b6118ee8185611be2565b93506118fe818560208601611cd1565b80840191505092915050565b61191381611c8c565b82525050565b600061192482611bc6565b61192e8185611bed565b935061193e818560208601611cd1565b61194781611d4c565b840191505092915050565b600061195f602683611bed565b915061196a82611d5d565b604082019050919050565b6000611982601d83611bed565b915061198d82611dac565b602082019050919050565b60006119a5602a83611bed565b91506119b082611dd5565b604082019050919050565b60006119c8601f83611bed565b91506119d382611e24565b602082019050919050565b6119e781611c82565b82525050565b60006119f982846118d9565b915081905092915050565b6000602082019050611a19600083018461188e565b92915050565b6000606082019050611a34600083018661188e565b611a41602083018561188e565b611a4e60408301846119de565b949350505050565b6000604082019050611a6b600083018561188e565b611a7860208301846119de565b9392505050565b6000602082019050611a94600083018461189d565b92915050565b60006060820190508181036000830152611ab58187896118ac565b9050611ac460208301866119de565b8181036040830152611ad78184866118ac565b90509695505050505050565b6000602082019050611af8600083018461190a565b92915050565b60006020820190508181036000830152611b188184611919565b905092915050565b60006020820190508181036000830152611b3981611952565b9050919050565b60006020820190508181036000830152611b5981611975565b9050919050565b60006020820190508181036000830152611b7981611998565b9050919050565b60006020820190508181036000830152611b99816119bb565b9050919050565b6000602082019050611bb560008301846119de565b92915050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000611c0982611c82565b9150611c1483611c82565b925082821015611c2757611c26611d04565b5b828203905092915050565b6000611c3d82611c62565b9050919050565b60008115159050919050565b6000611c5b82611c32565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000611c9782611c9e565b9050919050565b6000611ca982611cb0565b9050919050565b6000611cbb82611c62565b9050919050565b82818337600083830152505050565b60005b83811015611cef578082015181840152602081019050611cd4565b83811115611cfe576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b611e5681611c32565b8114611e6157600080fd5b50565b611e6d81611c44565b8114611e7857600080fd5b50565b611e8481611c50565b8114611e8f57600080fd5b50565b611e9b81611c82565b8114611ea657600080fd5b5056fea26469706673582212205768544075d85a56b1d380f8fcc0c8829b8a656c656277c25c81c31608d9e4ef64736f6c63430008070033", } // ERC20CustodyABI is the input ABI used to generate the binding from. diff --git a/pkg/contracts/evm/interfaces/zetainterfaces.sol/zetatokenconsumer.go b/pkg/contracts/evm/interfaces/zetainterfaces.sol/zetatokenconsumer.go index 617045fb..5a1a03a8 100644 --- a/pkg/contracts/evm/interfaces/zetainterfaces.sol/zetatokenconsumer.go +++ b/pkg/contracts/evm/interfaces/zetainterfaces.sol/zetatokenconsumer.go @@ -31,7 +31,7 @@ var ( // ZetaTokenConsumerMetaData contains all meta data concerning the ZetaTokenConsumer contract. var ZetaTokenConsumerMetaData = &bind.MetaData{ - ABI: "[{\"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\":[{\"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\"}]", + ABI: "[{\"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\":[{\"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\"}]", } // ZetaTokenConsumerABI is the input ABI used to generate the binding from. @@ -180,6 +180,37 @@ func (_ZetaTokenConsumer *ZetaTokenConsumerTransactorRaw) Transact(opts *bind.Tr return _ZetaTokenConsumer.Contract.contract.Transact(opts, method, params...) } +// HasZetaLiquidity is a free data retrieval call binding the contract method 0x80801f84. +// +// Solidity: function hasZetaLiquidity() view returns(bool) +func (_ZetaTokenConsumer *ZetaTokenConsumerCaller) HasZetaLiquidity(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _ZetaTokenConsumer.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 (_ZetaTokenConsumer *ZetaTokenConsumerSession) HasZetaLiquidity() (bool, error) { + return _ZetaTokenConsumer.Contract.HasZetaLiquidity(&_ZetaTokenConsumer.CallOpts) +} + +// HasZetaLiquidity is a free data retrieval call binding the contract method 0x80801f84. +// +// Solidity: function hasZetaLiquidity() view returns(bool) +func (_ZetaTokenConsumer *ZetaTokenConsumerCallerSession) HasZetaLiquidity() (bool, error) { + return _ZetaTokenConsumer.Contract.HasZetaLiquidity(&_ZetaTokenConsumer.CallOpts) +} + // GetEthFromZeta is a paid mutator transaction binding the contract method 0x54c49a2a. // // Solidity: function getEthFromZeta(address destinationAddress, uint256 minAmountOut, uint256 zetaTokenAmount) returns(uint256) 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 62fc3d86..ca42d8e4 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: "0x60c06040523480156200001157600080fd5b506040516200123c3803806200123c833981810160405281019062000037919062000228565b80620000586200004c6200010760201b60201c565b6200010f60201b60201c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620000c0576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b46608081815250508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250505050620002ad565b600033905090565b600160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556200014a816200014d60201b620005bd1760201c565b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050620002228162000293565b92915050565b6000602082840312156200024157620002406200028e565b5b6000620002518482850162000211565b91505092915050565b600062000267826200026e565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200029e816200025a565b8114620002aa57600080fd5b50565b60805160a05160601c610f5f620002dd6000396000818161049b0152610683015260006103690152610f5f6000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806379ba50971161006657806379ba50971461013157806383f3084f1461013b5780638da5cb5b14610159578063e30c397814610177578063f2fde38b146101955761009e565b80632618143f146100a35780633749c51a146100d35780633ff0693c146100ef5780634fd3f7d71461010b578063715018a614610127575b600080fd5b6100bd60048036038101906100b891906109ea565b6101b1565b6040516100ca9190610c03565b60405180910390f35b6100ed60048036038101906100e89190610958565b610251565b005b610109600480360381019061010491906109a1565b6102e7565b005b61012560048036038101906101209190610a17565b6103c8565b005b61012f6103f8565b005b61013961040c565b005b610143610499565b6040516101509190610c25565b60405180910390f35b6101616104bd565b60405161016e9190610be8565b60405180910390f35b61017f6104e6565b60405161018c9190610be8565b60405180910390f35b6101af60048036038101906101aa919061092b565b610510565b005b600260205280600052604060002060009150905080546101d090610de4565b80601f01602080910402602001604051908101604052809291908181526020018280546101fc90610de4565b80156102495780601f1061021e57610100808354040283529160200191610249565b820191906000526020600020905b81548152906001019060200180831161022c57829003601f168201915b505050505081565b8061025a610681565b600260008260200135815260200190815260200160002060405161027e9190610bd1565b60405180910390208180600001906102969190610c80565b6040516102a4929190610bb8565b6040518091039020146102e3576040517fb473eb0a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b806102f0610681565b3073ffffffffffffffffffffffffffffffffffffffff1681600001602081019061031a919061092b565b73ffffffffffffffffffffffffffffffffffffffff1614610367576040517fc03e9c3f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000008160200135146103c4576040517fc03e9c3f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6103d0610713565b81816002600086815260200190815260200160002091906103f29291906107ca565b50505050565b610400610713565b61040a6000610791565b565b60006104166107c2565b90508073ffffffffffffffffffffffffffffffffffffffff166104376104e6565b73ffffffffffffffffffffffffffffffffffffffff161461048d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161048490610c40565b60405180910390fd5b61049681610791565b50565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610518610713565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff166105786104bd565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461071157336040517fcbd9d2e00000000000000000000000000000000000000000000000000000000081526004016107089190610be8565b60405180910390fd5b565b61071b6107c2565b73ffffffffffffffffffffffffffffffffffffffff166107396104bd565b73ffffffffffffffffffffffffffffffffffffffff161461078f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690610c60565b60405180910390fd5b565b600160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556107bf816105bd565b50565b600033905090565b8280546107d690610de4565b90600052602060002090601f0160209004810192826107f8576000855561083f565b82601f1061081157803560ff191683800117855561083f565b8280016001018555821561083f579182015b8281111561083e578235825591602001919060010190610823565b5b50905061084c9190610850565b5090565b5b80821115610869576000816000905550600101610851565b5090565b60008135905061087c81610efb565b92915050565b60008083601f84011261089857610897610e4a565b5b8235905067ffffffffffffffff8111156108b5576108b4610e45565b5b6020830191508360018202830111156108d1576108d0610e5e565b5b9250929050565b600060a082840312156108ee576108ed610e54565b5b81905092915050565b600060c0828403121561090d5761090c610e54565b5b81905092915050565b60008135905061092581610f12565b92915050565b60006020828403121561094157610940610e6d565b5b600061094f8482850161086d565b91505092915050565b60006020828403121561096e5761096d610e6d565b5b600082013567ffffffffffffffff81111561098c5761098b610e68565b5b610998848285016108d8565b91505092915050565b6000602082840312156109b7576109b6610e6d565b5b600082013567ffffffffffffffff8111156109d5576109d4610e68565b5b6109e1848285016108f7565b91505092915050565b600060208284031215610a00576109ff610e6d565b5b6000610a0e84828501610916565b91505092915050565b600080600060408486031215610a3057610a2f610e6d565b5b6000610a3e86828701610916565b935050602084013567ffffffffffffffff811115610a5f57610a5e610e68565b5b610a6b86828701610882565b92509250509250925092565b610a8081610d30565b82525050565b6000610a928385610d14565b9350610a9f838584610da2565b82840190509392505050565b6000610ab682610cf8565b610ac08185610d03565b9350610ad0818560208601610db1565b610ad981610e72565b840191505092915050565b60008154610af181610de4565b610afb8186610d14565b94506001821660008114610b165760018114610b2757610b5a565b60ff19831686528186019350610b5a565b610b3085610ce3565b60005b83811015610b5257815481890152600182019150602081019050610b33565b838801955050505b50505092915050565b610b6c81610d6c565b82525050565b6000610b7f602983610d1f565b9150610b8a82610e83565b604082019050919050565b6000610ba2602083610d1f565b9150610bad82610ed2565b602082019050919050565b6000610bc5828486610a86565b91508190509392505050565b6000610bdd8284610ae4565b915081905092915050565b6000602082019050610bfd6000830184610a77565b92915050565b60006020820190508181036000830152610c1d8184610aab565b905092915050565b6000602082019050610c3a6000830184610b63565b92915050565b60006020820190508181036000830152610c5981610b72565b9050919050565b60006020820190508181036000830152610c7981610b95565b9050919050565b60008083356001602003843603038112610c9d57610c9c610e59565b5b80840192508235915067ffffffffffffffff821115610cbf57610cbe610e4f565b5b602083019250600182023603831315610cdb57610cda610e63565b5b509250929050565b60008190508160005260206000209050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000610d3b82610d42565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610d7782610d7e565b9050919050565b6000610d8982610d90565b9050919050565b6000610d9b82610d42565b9050919050565b82818337600083830152505050565b60005b83811015610dcf578082015181840152602081019050610db4565b83811115610dde576000848401525b50505050565b60006002820490506001821680610dfc57607f821691505b60208210811415610e1057610e0f610e16565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060008201527f6e6577206f776e65720000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b610f0481610d30565b8114610f0f57600080fd5b50565b610f1b81610d62565b8114610f2657600080fd5b5056fea2646970667358221220d9e3115e09568df865aa88831d29a59ade24703a6014528e6d203b5617f4970064736f6c63430008070033", + Bin: "0x60c06040523480156200001157600080fd5b506040516200123c3803806200123c833981810160405281019062000037919062000228565b80620000586200004c6200010760201b60201c565b6200010f60201b60201c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620000c0576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b46608081815250508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250505050620002ad565b600033905090565b600160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556200014a816200014d60201b620005bd1760201c565b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050620002228162000293565b92915050565b6000602082840312156200024157620002406200028e565b5b6000620002518482850162000211565b91505092915050565b600062000267826200026e565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200029e816200025a565b8114620002aa57600080fd5b50565b60805160a05160601c610f5f620002dd6000396000818161049b0152610683015260006103690152610f5f6000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806379ba50971161006657806379ba50971461013157806383f3084f1461013b5780638da5cb5b14610159578063e30c397814610177578063f2fde38b146101955761009e565b80632618143f146100a35780633749c51a146100d35780633ff0693c146100ef5780634fd3f7d71461010b578063715018a614610127575b600080fd5b6100bd60048036038101906100b891906109ea565b6101b1565b6040516100ca9190610c03565b60405180910390f35b6100ed60048036038101906100e89190610958565b610251565b005b610109600480360381019061010491906109a1565b6102e7565b005b61012560048036038101906101209190610a17565b6103c8565b005b61012f6103f8565b005b61013961040c565b005b610143610499565b6040516101509190610c25565b60405180910390f35b6101616104bd565b60405161016e9190610be8565b60405180910390f35b61017f6104e6565b60405161018c9190610be8565b60405180910390f35b6101af60048036038101906101aa919061092b565b610510565b005b600260205280600052604060002060009150905080546101d090610de4565b80601f01602080910402602001604051908101604052809291908181526020018280546101fc90610de4565b80156102495780601f1061021e57610100808354040283529160200191610249565b820191906000526020600020905b81548152906001019060200180831161022c57829003601f168201915b505050505081565b8061025a610681565b600260008260200135815260200190815260200160002060405161027e9190610bd1565b60405180910390208180600001906102969190610c80565b6040516102a4929190610bb8565b6040518091039020146102e3576040517fb473eb0a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b806102f0610681565b3073ffffffffffffffffffffffffffffffffffffffff1681600001602081019061031a919061092b565b73ffffffffffffffffffffffffffffffffffffffff1614610367576040517fc03e9c3f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000008160200135146103c4576040517fc03e9c3f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6103d0610713565b81816002600086815260200190815260200160002091906103f29291906107ca565b50505050565b610400610713565b61040a6000610791565b565b60006104166107c2565b90508073ffffffffffffffffffffffffffffffffffffffff166104376104e6565b73ffffffffffffffffffffffffffffffffffffffff161461048d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161048490610c40565b60405180910390fd5b61049681610791565b50565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610518610713565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff166105786104bd565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461071157336040517fcbd9d2e00000000000000000000000000000000000000000000000000000000081526004016107089190610be8565b60405180910390fd5b565b61071b6107c2565b73ffffffffffffffffffffffffffffffffffffffff166107396104bd565b73ffffffffffffffffffffffffffffffffffffffff161461078f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690610c60565b60405180910390fd5b565b600160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556107bf816105bd565b50565b600033905090565b8280546107d690610de4565b90600052602060002090601f0160209004810192826107f8576000855561083f565b82601f1061081157803560ff191683800117855561083f565b8280016001018555821561083f579182015b8281111561083e578235825591602001919060010190610823565b5b50905061084c9190610850565b5090565b5b80821115610869576000816000905550600101610851565b5090565b60008135905061087c81610efb565b92915050565b60008083601f84011261089857610897610e4a565b5b8235905067ffffffffffffffff8111156108b5576108b4610e45565b5b6020830191508360018202830111156108d1576108d0610e5e565b5b9250929050565b600060a082840312156108ee576108ed610e54565b5b81905092915050565b600060c0828403121561090d5761090c610e54565b5b81905092915050565b60008135905061092581610f12565b92915050565b60006020828403121561094157610940610e6d565b5b600061094f8482850161086d565b91505092915050565b60006020828403121561096e5761096d610e6d565b5b600082013567ffffffffffffffff81111561098c5761098b610e68565b5b610998848285016108d8565b91505092915050565b6000602082840312156109b7576109b6610e6d565b5b600082013567ffffffffffffffff8111156109d5576109d4610e68565b5b6109e1848285016108f7565b91505092915050565b600060208284031215610a00576109ff610e6d565b5b6000610a0e84828501610916565b91505092915050565b600080600060408486031215610a3057610a2f610e6d565b5b6000610a3e86828701610916565b935050602084013567ffffffffffffffff811115610a5f57610a5e610e68565b5b610a6b86828701610882565b92509250509250925092565b610a8081610d30565b82525050565b6000610a928385610d14565b9350610a9f838584610da2565b82840190509392505050565b6000610ab682610cf8565b610ac08185610d03565b9350610ad0818560208601610db1565b610ad981610e72565b840191505092915050565b60008154610af181610de4565b610afb8186610d14565b94506001821660008114610b165760018114610b2757610b5a565b60ff19831686528186019350610b5a565b610b3085610ce3565b60005b83811015610b5257815481890152600182019150602081019050610b33565b838801955050505b50505092915050565b610b6c81610d6c565b82525050565b6000610b7f602983610d1f565b9150610b8a82610e83565b604082019050919050565b6000610ba2602083610d1f565b9150610bad82610ed2565b602082019050919050565b6000610bc5828486610a86565b91508190509392505050565b6000610bdd8284610ae4565b915081905092915050565b6000602082019050610bfd6000830184610a77565b92915050565b60006020820190508181036000830152610c1d8184610aab565b905092915050565b6000602082019050610c3a6000830184610b63565b92915050565b60006020820190508181036000830152610c5981610b72565b9050919050565b60006020820190508181036000830152610c7981610b95565b9050919050565b60008083356001602003843603038112610c9d57610c9c610e59565b5b80840192508235915067ffffffffffffffff821115610cbf57610cbe610e4f565b5b602083019250600182023603831315610cdb57610cda610e63565b5b509250929050565b60008190508160005260206000209050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000610d3b82610d42565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610d7782610d7e565b9050919050565b6000610d8982610d90565b9050919050565b6000610d9b82610d42565b9050919050565b82818337600083830152505050565b60005b83811015610dcf578082015181840152602081019050610db4565b83811115610dde576000848401525b50505050565b60006002820490506001821680610dfc57607f821691505b60208210811415610e1057610e0f610e16565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060008201527f6e6577206f776e65720000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b610f0481610d30565b8114610f0f57600080fd5b50565b610f1b81610d62565b8114610f2657600080fd5b5056fea26469706673582212206999e36457fead1d5e7b5a125ef2e0a49dcff212174326676d6fd53cff4e990364736f6c63430008070033", } // ZetaInteractorMockABI is the input ABI used to generate the binding from. diff --git a/pkg/contracts/evm/testing/zetareceivermock.sol/zetareceivermock.go b/pkg/contracts/evm/testing/zetareceivermock.sol/zetareceivermock.go index 60ad4096..b9cf84ee 100644 --- a/pkg/contracts/evm/testing/zetareceivermock.sol/zetareceivermock.go +++ b/pkg/contracts/evm/testing/zetareceivermock.sol/zetareceivermock.go @@ -51,7 +51,7 @@ type ZetaInterfacesZetaRevert struct { // ZetaReceiverMockMetaData contains all meta data concerning the ZetaReceiverMock contract. var ZetaReceiverMockMetaData = &bind.MetaData{ ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"}],\"name\":\"MockOnZetaMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"zetaTxSenderAddress\",\"type\":\"address\"}],\"name\":\"MockOnZetaRevert\",\"type\":\"event\"},{\"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\"}]", - Bin: "0x608060405234801561001057600080fd5b506102d5806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80633749c51a1461003b5780633ff0693c14610057575b600080fd5b6100556004803603810190610050919061018b565b610073565b005b610071600480360381019061006c91906101d4565b6100bf565b005b7f72a301dee3abcbe15615f3e253229bf4b4f508460603d674991c9a777b833c6e8160400160208101906100a7919061015e565b6040516100b4919061022c565b60405180910390a150565b7f53bd04e26f94f13ff43da96839541821041c309c6f624712192cbe3a2d133cc48160000160208101906100f3919061015e565b604051610100919061022c565b60405180910390a150565b60008135905061011a81610288565b92915050565b600060a0828403121561013657610135610279565b5b81905092915050565b600060c0828403121561015557610154610279565b5b81905092915050565b60006020828403121561017457610173610283565b5b60006101828482850161010b565b91505092915050565b6000602082840312156101a1576101a0610283565b5b600082013567ffffffffffffffff8111156101bf576101be61027e565b5b6101cb84828501610120565b91505092915050565b6000602082840312156101ea576101e9610283565b5b600082013567ffffffffffffffff8111156102085761020761027e565b5b6102148482850161013f565b91505092915050565b61022681610247565b82525050565b6000602082019050610241600083018461021d565b92915050565b600061025282610259565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b600080fd5b600080fd5b61029181610247565b811461029c57600080fd5b5056fea26469706673582212204a52544c9f3eb3bb550c22ab3ce4f78bf6d3c2bf72253e74e50e1b607f43267564736f6c63430008070033", + Bin: "0x608060405234801561001057600080fd5b506102d5806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80633749c51a1461003b5780633ff0693c14610057575b600080fd5b6100556004803603810190610050919061018b565b610073565b005b610071600480360381019061006c91906101d4565b6100bf565b005b7f72a301dee3abcbe15615f3e253229bf4b4f508460603d674991c9a777b833c6e8160400160208101906100a7919061015e565b6040516100b4919061022c565b60405180910390a150565b7f53bd04e26f94f13ff43da96839541821041c309c6f624712192cbe3a2d133cc48160000160208101906100f3919061015e565b604051610100919061022c565b60405180910390a150565b60008135905061011a81610288565b92915050565b600060a0828403121561013657610135610279565b5b81905092915050565b600060c0828403121561015557610154610279565b5b81905092915050565b60006020828403121561017457610173610283565b5b60006101828482850161010b565b91505092915050565b6000602082840312156101a1576101a0610283565b5b600082013567ffffffffffffffff8111156101bf576101be61027e565b5b6101cb84828501610120565b91505092915050565b6000602082840312156101ea576101e9610283565b5b600082013567ffffffffffffffff8111156102085761020761027e565b5b6102148482850161013f565b91505092915050565b61022681610247565b82525050565b6000602082019050610241600083018461021d565b92915050565b600061025282610259565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b600080fd5b600080fd5b61029181610247565b811461029c57600080fd5b5056fea264697066735822122008485e037d9a20d8e9f8d1e9456b89006367d84f7e0966e1d820fe73c0d706ea64736f6c63430008070033", } // ZetaReceiverMockABI is the input ABI used to generate the binding from. diff --git a/pkg/contracts/evm/immutablecreate2factory.sol/immutablecreate2factory.go b/pkg/contracts/evm/tools/immutablecreate2factory.sol/immutablecreate2factory.go similarity index 99% rename from pkg/contracts/evm/immutablecreate2factory.sol/immutablecreate2factory.go rename to pkg/contracts/evm/tools/immutablecreate2factory.sol/immutablecreate2factory.go index eddc1449..f1140f79 100644 --- a/pkg/contracts/evm/immutablecreate2factory.sol/immutablecreate2factory.go +++ b/pkg/contracts/evm/tools/immutablecreate2factory.sol/immutablecreate2factory.go @@ -32,7 +32,7 @@ var ( // ImmutableCreate2FactoryMetaData contains all meta data concerning the ImmutableCreate2Factory contract. var ImmutableCreate2FactoryMetaData = &bind.MetaData{ ABI: "[{\"constant\":true,\"inputs\":[{\"name\":\"deploymentAddress\",\"type\":\"address\"}],\"name\":\"hasBeenDeployed\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"salt\",\"type\":\"bytes32\"},{\"name\":\"initializationCode\",\"type\":\"bytes\"}],\"name\":\"safeCreate2AndTransfer\",\"outputs\":[{\"name\":\"deploymentAddress\",\"type\":\"address\"}],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"salt\",\"type\":\"bytes32\"},{\"name\":\"initializationCode\",\"type\":\"bytes\"}],\"name\":\"safeCreate2\",\"outputs\":[{\"name\":\"deploymentAddress\",\"type\":\"address\"}],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"salt\",\"type\":\"bytes32\"},{\"name\":\"initCode\",\"type\":\"bytes\"}],\"name\":\"findCreate2Address\",\"outputs\":[{\"name\":\"deploymentAddress\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"salt\",\"type\":\"bytes32\"},{\"name\":\"initCodeHash\",\"type\":\"bytes32\"}],\"name\":\"findCreate2AddressViaHash\",\"outputs\":[{\"name\":\"deploymentAddress\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x608060405234801561001057600080fd5b50610c54806100206000396000f3fe60806040526004361061004a5760003560e01c806308508b8f1461004f57806329346003146100b857806364e030871461017b57806385cf97ab14610280578063a49a7c9014610350575b600080fd5b34801561005b57600080fd5b5061009e6004803603602081101561007257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506103d5565b604051808215151515815260200191505060405180910390f35b610139600480360360408110156100ce57600080fd5b8101908080359060200190929190803590602001906401000000008111156100f557600080fd5b82018360208201111561010757600080fd5b8035906020019184600183028401116401000000008311171561012957600080fd5b909192939192939050505061042a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61023e6004803603604081101561019157600080fd5b8101908080359060200190929190803590602001906401000000008111156101b857600080fd5b8201836020820111156101ca57600080fd5b803590602001918460018302840111640100000000831117156101ec57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506105cf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561028c57600080fd5b5061030e600480360360408110156102a357600080fd5b8101908080359060200190929190803590602001906401000000008111156102ca57600080fd5b8201836020820111156102dc57600080fd5b803590602001918460018302840111640100000000831117156102fe57600080fd5b9091929391929390505050610698565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561035c57600080fd5b506103936004803603604081101561037357600080fd5b8101908080359060200190929190803590602001909291905050506107be565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000833373ffffffffffffffffffffffffffffffffffffffff168160601c73ffffffffffffffffffffffffffffffffffffffff16148061048b5750600060601b6bffffffffffffffffffffffff1916816bffffffffffffffffffffffff1916145b6104e0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526045815260200180610b956045913960600191505060405180910390fd5b61052e8585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506108b4565b91508173ffffffffffffffffffffffffffffffffffffffff1663f2fde38b336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156105af57600080fd5b505af11580156105c3573d6000803e3d6000fd5b50505050509392505050565b6000823373ffffffffffffffffffffffffffffffffffffffff168160601c73ffffffffffffffffffffffffffffffffffffffff1614806106305750600060601b6bffffffffffffffffffffffff1916816bffffffffffffffffffffffff1916145b610685576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526045815260200180610b956045913960600191505060405180910390fd5b61068f84846108b4565b91505092915050565b6000308484846040516020018083838082843780830192505050925050506040516020818303038152906040528051906020012060405160200180807fff000000000000000000000000000000000000000000000000000000000000008152506001018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b815260140183815260200182815260200193505050506040516020818303038152906040528051906020012060001c90506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156107b657600090506107b7565b5b9392505050565b600030838360405160200180807fff000000000000000000000000000000000000000000000000000000000000008152506001018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b815260140183815260200182815260200193505050506040516020818303038152906040528051906020012060001c90506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156108ad57600090506108ae565b5b92915050565b6000606082905060003085836040516020018082805190602001908083835b602083106108f657805182526020820191506020810190506020830392506108d3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012060405160200180807fff000000000000000000000000000000000000000000000000000000000000008152506001018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b815260140183815260200182815260200193505050506040516020818303038152906040528051906020012060001c90506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610a63576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603f815260200180610b56603f913960400191505060405180910390fd5b81602001825186818334f5945050508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610af6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526046815260200180610bda6046913960600191505060405180910390fd5b60016000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050509291505056fe496e76616c696420636f6e7472616374206372656174696f6e202d20636f6e74726163742068617320616c7265616479206265656e206465706c6f7965642e496e76616c69642073616c74202d206669727374203230206279746573206f66207468652073616c74206d757374206d617463682063616c6c696e6720616464726573732e4661696c656420746f206465706c6f7920636f6e7472616374207573696e672070726f76696465642073616c7420616e6420696e697469616c697a6174696f6e20636f64652ea265627a7a723058206a0aa1e204f9dfc0c7a03ed0303bb9ac1d31bcf1a912dc5e4ad38bcc1881421564736f6c634300050a0032", + Bin: "0x608060405234801561001057600080fd5b50610c54806100206000396000f3fe60806040526004361061004a5760003560e01c806308508b8f1461004f57806329346003146100b857806364e030871461017b57806385cf97ab14610280578063a49a7c9014610350575b600080fd5b34801561005b57600080fd5b5061009e6004803603602081101561007257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506103d5565b604051808215151515815260200191505060405180910390f35b610139600480360360408110156100ce57600080fd5b8101908080359060200190929190803590602001906401000000008111156100f557600080fd5b82018360208201111561010757600080fd5b8035906020019184600183028401116401000000008311171561012957600080fd5b909192939192939050505061042a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61023e6004803603604081101561019157600080fd5b8101908080359060200190929190803590602001906401000000008111156101b857600080fd5b8201836020820111156101ca57600080fd5b803590602001918460018302840111640100000000831117156101ec57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506105cf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561028c57600080fd5b5061030e600480360360408110156102a357600080fd5b8101908080359060200190929190803590602001906401000000008111156102ca57600080fd5b8201836020820111156102dc57600080fd5b803590602001918460018302840111640100000000831117156102fe57600080fd5b9091929391929390505050610698565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561035c57600080fd5b506103936004803603604081101561037357600080fd5b8101908080359060200190929190803590602001909291905050506107be565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000833373ffffffffffffffffffffffffffffffffffffffff168160601c73ffffffffffffffffffffffffffffffffffffffff16148061048b5750600060601b6bffffffffffffffffffffffff1916816bffffffffffffffffffffffff1916145b6104e0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526045815260200180610b956045913960600191505060405180910390fd5b61052e8585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506108b4565b91508173ffffffffffffffffffffffffffffffffffffffff1663f2fde38b336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156105af57600080fd5b505af11580156105c3573d6000803e3d6000fd5b50505050509392505050565b6000823373ffffffffffffffffffffffffffffffffffffffff168160601c73ffffffffffffffffffffffffffffffffffffffff1614806106305750600060601b6bffffffffffffffffffffffff1916816bffffffffffffffffffffffff1916145b610685576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526045815260200180610b956045913960600191505060405180910390fd5b61068f84846108b4565b91505092915050565b6000308484846040516020018083838082843780830192505050925050506040516020818303038152906040528051906020012060405160200180807fff000000000000000000000000000000000000000000000000000000000000008152506001018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b815260140183815260200182815260200193505050506040516020818303038152906040528051906020012060001c90506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156107b657600090506107b7565b5b9392505050565b600030838360405160200180807fff000000000000000000000000000000000000000000000000000000000000008152506001018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b815260140183815260200182815260200193505050506040516020818303038152906040528051906020012060001c90506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156108ad57600090506108ae565b5b92915050565b6000606082905060003085836040516020018082805190602001908083835b602083106108f657805182526020820191506020810190506020830392506108d3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012060405160200180807fff000000000000000000000000000000000000000000000000000000000000008152506001018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b815260140183815260200182815260200193505050506040516020818303038152906040528051906020012060001c90506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610a63576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603f815260200180610b56603f913960400191505060405180910390fd5b81602001825186818334f5945050508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610af6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526046815260200180610bda6046913960600191505060405180910390fd5b60016000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050509291505056fe496e76616c696420636f6e7472616374206372656174696f6e202d20636f6e74726163742068617320616c7265616479206265656e206465706c6f7965642e496e76616c69642073616c74202d206669727374203230206279746573206f66207468652073616c74206d757374206d617463682063616c6c696e6720616464726573732e4661696c656420746f206465706c6f7920636f6e7472616374207573696e672070726f76696465642073616c7420616e6420696e697469616c697a6174696f6e20636f64652ea265627a7a72305820df6f8cf8f81946679a805d41e12170a28006ccfb64bce758c74108440cc9337b64736f6c634300050a0032", } // ImmutableCreate2FactoryABI is the input ABI used to generate the binding from. diff --git a/pkg/contracts/evm/immutablecreate2factory.sol/ownable.go b/pkg/contracts/evm/tools/immutablecreate2factory.sol/ownable.go similarity index 100% rename from pkg/contracts/evm/immutablecreate2factory.sol/ownable.go rename to pkg/contracts/evm/tools/immutablecreate2factory.sol/ownable.go diff --git a/pkg/contracts/evm/tools/interfaces/tridentconcentratedliquiditypoolfactory.sol/concentratedliquiditypoolfactory.go b/pkg/contracts/evm/tools/interfaces/tridentconcentratedliquiditypoolfactory.sol/concentratedliquiditypoolfactory.go new file mode 100644 index 00000000..96c102f2 --- /dev/null +++ b/pkg/contracts/evm/tools/interfaces/tridentconcentratedliquiditypoolfactory.sol/concentratedliquiditypoolfactory.go @@ -0,0 +1,212 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package tridentconcentratedliquiditypoolfactory + +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 +) + +// ConcentratedLiquidityPoolFactoryMetaData contains all meta data concerning the ConcentratedLiquidityPoolFactory contract. +var ConcentratedLiquidityPoolFactoryMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"startIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"name\":\"getPools\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"pairPools\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", +} + +// ConcentratedLiquidityPoolFactoryABI is the input ABI used to generate the binding from. +// Deprecated: Use ConcentratedLiquidityPoolFactoryMetaData.ABI instead. +var ConcentratedLiquidityPoolFactoryABI = ConcentratedLiquidityPoolFactoryMetaData.ABI + +// ConcentratedLiquidityPoolFactory is an auto generated Go binding around an Ethereum contract. +type ConcentratedLiquidityPoolFactory struct { + ConcentratedLiquidityPoolFactoryCaller // Read-only binding to the contract + ConcentratedLiquidityPoolFactoryTransactor // Write-only binding to the contract + ConcentratedLiquidityPoolFactoryFilterer // Log filterer for contract events +} + +// ConcentratedLiquidityPoolFactoryCaller is an auto generated read-only Go binding around an Ethereum contract. +type ConcentratedLiquidityPoolFactoryCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ConcentratedLiquidityPoolFactoryTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ConcentratedLiquidityPoolFactoryTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ConcentratedLiquidityPoolFactoryFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ConcentratedLiquidityPoolFactoryFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ConcentratedLiquidityPoolFactorySession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ConcentratedLiquidityPoolFactorySession struct { + Contract *ConcentratedLiquidityPoolFactory // 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 +} + +// ConcentratedLiquidityPoolFactoryCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ConcentratedLiquidityPoolFactoryCallerSession struct { + Contract *ConcentratedLiquidityPoolFactoryCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ConcentratedLiquidityPoolFactoryTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ConcentratedLiquidityPoolFactoryTransactorSession struct { + Contract *ConcentratedLiquidityPoolFactoryTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ConcentratedLiquidityPoolFactoryRaw is an auto generated low-level Go binding around an Ethereum contract. +type ConcentratedLiquidityPoolFactoryRaw struct { + Contract *ConcentratedLiquidityPoolFactory // Generic contract binding to access the raw methods on +} + +// ConcentratedLiquidityPoolFactoryCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ConcentratedLiquidityPoolFactoryCallerRaw struct { + Contract *ConcentratedLiquidityPoolFactoryCaller // Generic read-only contract binding to access the raw methods on +} + +// ConcentratedLiquidityPoolFactoryTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ConcentratedLiquidityPoolFactoryTransactorRaw struct { + Contract *ConcentratedLiquidityPoolFactoryTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewConcentratedLiquidityPoolFactory creates a new instance of ConcentratedLiquidityPoolFactory, bound to a specific deployed contract. +func NewConcentratedLiquidityPoolFactory(address common.Address, backend bind.ContractBackend) (*ConcentratedLiquidityPoolFactory, error) { + contract, err := bindConcentratedLiquidityPoolFactory(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ConcentratedLiquidityPoolFactory{ConcentratedLiquidityPoolFactoryCaller: ConcentratedLiquidityPoolFactoryCaller{contract: contract}, ConcentratedLiquidityPoolFactoryTransactor: ConcentratedLiquidityPoolFactoryTransactor{contract: contract}, ConcentratedLiquidityPoolFactoryFilterer: ConcentratedLiquidityPoolFactoryFilterer{contract: contract}}, nil +} + +// NewConcentratedLiquidityPoolFactoryCaller creates a new read-only instance of ConcentratedLiquidityPoolFactory, bound to a specific deployed contract. +func NewConcentratedLiquidityPoolFactoryCaller(address common.Address, caller bind.ContractCaller) (*ConcentratedLiquidityPoolFactoryCaller, error) { + contract, err := bindConcentratedLiquidityPoolFactory(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ConcentratedLiquidityPoolFactoryCaller{contract: contract}, nil +} + +// NewConcentratedLiquidityPoolFactoryTransactor creates a new write-only instance of ConcentratedLiquidityPoolFactory, bound to a specific deployed contract. +func NewConcentratedLiquidityPoolFactoryTransactor(address common.Address, transactor bind.ContractTransactor) (*ConcentratedLiquidityPoolFactoryTransactor, error) { + contract, err := bindConcentratedLiquidityPoolFactory(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ConcentratedLiquidityPoolFactoryTransactor{contract: contract}, nil +} + +// NewConcentratedLiquidityPoolFactoryFilterer creates a new log filterer instance of ConcentratedLiquidityPoolFactory, bound to a specific deployed contract. +func NewConcentratedLiquidityPoolFactoryFilterer(address common.Address, filterer bind.ContractFilterer) (*ConcentratedLiquidityPoolFactoryFilterer, error) { + contract, err := bindConcentratedLiquidityPoolFactory(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ConcentratedLiquidityPoolFactoryFilterer{contract: contract}, nil +} + +// bindConcentratedLiquidityPoolFactory binds a generic wrapper to an already deployed contract. +func bindConcentratedLiquidityPoolFactory(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ConcentratedLiquidityPoolFactoryMetaData.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 (_ConcentratedLiquidityPoolFactory *ConcentratedLiquidityPoolFactoryRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ConcentratedLiquidityPoolFactory.Contract.ConcentratedLiquidityPoolFactoryCaller.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 (_ConcentratedLiquidityPoolFactory *ConcentratedLiquidityPoolFactoryRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ConcentratedLiquidityPoolFactory.Contract.ConcentratedLiquidityPoolFactoryTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ConcentratedLiquidityPoolFactory *ConcentratedLiquidityPoolFactoryRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ConcentratedLiquidityPoolFactory.Contract.ConcentratedLiquidityPoolFactoryTransactor.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 (_ConcentratedLiquidityPoolFactory *ConcentratedLiquidityPoolFactoryCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ConcentratedLiquidityPoolFactory.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 (_ConcentratedLiquidityPoolFactory *ConcentratedLiquidityPoolFactoryTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ConcentratedLiquidityPoolFactory.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ConcentratedLiquidityPoolFactory *ConcentratedLiquidityPoolFactoryTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ConcentratedLiquidityPoolFactory.Contract.contract.Transact(opts, method, params...) +} + +// GetPools is a free data retrieval call binding the contract method 0x71a25812. +// +// Solidity: function getPools(address token0, address token1, uint256 startIndex, uint256 count) view returns(address[] pairPools) +func (_ConcentratedLiquidityPoolFactory *ConcentratedLiquidityPoolFactoryCaller) GetPools(opts *bind.CallOpts, token0 common.Address, token1 common.Address, startIndex *big.Int, count *big.Int) ([]common.Address, error) { + var out []interface{} + err := _ConcentratedLiquidityPoolFactory.contract.Call(opts, &out, "getPools", token0, token1, startIndex, count) + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// GetPools is a free data retrieval call binding the contract method 0x71a25812. +// +// Solidity: function getPools(address token0, address token1, uint256 startIndex, uint256 count) view returns(address[] pairPools) +func (_ConcentratedLiquidityPoolFactory *ConcentratedLiquidityPoolFactorySession) GetPools(token0 common.Address, token1 common.Address, startIndex *big.Int, count *big.Int) ([]common.Address, error) { + return _ConcentratedLiquidityPoolFactory.Contract.GetPools(&_ConcentratedLiquidityPoolFactory.CallOpts, token0, token1, startIndex, count) +} + +// GetPools is a free data retrieval call binding the contract method 0x71a25812. +// +// Solidity: function getPools(address token0, address token1, uint256 startIndex, uint256 count) view returns(address[] pairPools) +func (_ConcentratedLiquidityPoolFactory *ConcentratedLiquidityPoolFactoryCallerSession) GetPools(token0 common.Address, token1 common.Address, startIndex *big.Int, count *big.Int) ([]common.Address, error) { + return _ConcentratedLiquidityPoolFactory.Contract.GetPools(&_ConcentratedLiquidityPoolFactory.CallOpts, token0, token1, startIndex, count) +} diff --git a/pkg/contracts/evm/tools/interfaces/tridentipoolrouter.sol/ipoolrouter.go b/pkg/contracts/evm/tools/interfaces/tridentipoolrouter.sol/ipoolrouter.go new file mode 100644 index 00000000..a829cc0d --- /dev/null +++ b/pkg/contracts/evm/tools/interfaces/tridentipoolrouter.sol/ipoolrouter.go @@ -0,0 +1,326 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package tridentipoolrouter + +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 +) + +// IPoolRouterExactInputParams is an auto generated low-level Go binding around an user-defined struct. +type IPoolRouterExactInputParams struct { + TokenIn common.Address + AmountIn *big.Int + AmountOutMinimum *big.Int + Path []common.Address + To common.Address + Unwrap bool +} + +// IPoolRouterExactInputSingleParams is an auto generated low-level Go binding around an user-defined struct. +type IPoolRouterExactInputSingleParams struct { + TokenIn common.Address + AmountIn *big.Int + AmountOutMinimum *big.Int + Pool common.Address + To common.Address + Unwrap bool +} + +// IPoolRouterExactOutputParams is an auto generated low-level Go binding around an user-defined struct. +type IPoolRouterExactOutputParams struct { + TokenIn common.Address + AmountOut *big.Int + AmountInMaximum *big.Int + Path []common.Address + To common.Address + Unwrap bool +} + +// IPoolRouterExactOutputSingleParams is an auto generated low-level Go binding around an user-defined struct. +type IPoolRouterExactOutputSingleParams struct { + TokenIn common.Address + AmountOut *big.Int + AmountInMaximum *big.Int + Pool common.Address + To common.Address + Unwrap bool +} + +// IPoolRouterMetaData contains all meta data concerning the IPoolRouter contract. +var IPoolRouterMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMinimum\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"unwrap\",\"type\":\"bool\"}],\"internalType\":\"structIPoolRouter.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\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMinimum\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"unwrap\",\"type\":\"bool\"}],\"internalType\":\"structIPoolRouter.ExactInputSingleParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactInputSingle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMaximum\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"unwrap\",\"type\":\"bool\"}],\"internalType\":\"structIPoolRouter.ExactOutputParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactOutput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMaximum\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"unwrap\",\"type\":\"bool\"}],\"internalType\":\"structIPoolRouter.ExactOutputSingleParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactOutputSingle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"sweep\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}]", +} + +// IPoolRouterABI is the input ABI used to generate the binding from. +// Deprecated: Use IPoolRouterMetaData.ABI instead. +var IPoolRouterABI = IPoolRouterMetaData.ABI + +// IPoolRouter is an auto generated Go binding around an Ethereum contract. +type IPoolRouter struct { + IPoolRouterCaller // Read-only binding to the contract + IPoolRouterTransactor // Write-only binding to the contract + IPoolRouterFilterer // Log filterer for contract events +} + +// IPoolRouterCaller is an auto generated read-only Go binding around an Ethereum contract. +type IPoolRouterCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IPoolRouterTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IPoolRouterTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IPoolRouterFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IPoolRouterFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IPoolRouterSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IPoolRouterSession struct { + Contract *IPoolRouter // 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 +} + +// IPoolRouterCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IPoolRouterCallerSession struct { + Contract *IPoolRouterCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IPoolRouterTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IPoolRouterTransactorSession struct { + Contract *IPoolRouterTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IPoolRouterRaw is an auto generated low-level Go binding around an Ethereum contract. +type IPoolRouterRaw struct { + Contract *IPoolRouter // Generic contract binding to access the raw methods on +} + +// IPoolRouterCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IPoolRouterCallerRaw struct { + Contract *IPoolRouterCaller // Generic read-only contract binding to access the raw methods on +} + +// IPoolRouterTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IPoolRouterTransactorRaw struct { + Contract *IPoolRouterTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIPoolRouter creates a new instance of IPoolRouter, bound to a specific deployed contract. +func NewIPoolRouter(address common.Address, backend bind.ContractBackend) (*IPoolRouter, error) { + contract, err := bindIPoolRouter(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IPoolRouter{IPoolRouterCaller: IPoolRouterCaller{contract: contract}, IPoolRouterTransactor: IPoolRouterTransactor{contract: contract}, IPoolRouterFilterer: IPoolRouterFilterer{contract: contract}}, nil +} + +// NewIPoolRouterCaller creates a new read-only instance of IPoolRouter, bound to a specific deployed contract. +func NewIPoolRouterCaller(address common.Address, caller bind.ContractCaller) (*IPoolRouterCaller, error) { + contract, err := bindIPoolRouter(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IPoolRouterCaller{contract: contract}, nil +} + +// NewIPoolRouterTransactor creates a new write-only instance of IPoolRouter, bound to a specific deployed contract. +func NewIPoolRouterTransactor(address common.Address, transactor bind.ContractTransactor) (*IPoolRouterTransactor, error) { + contract, err := bindIPoolRouter(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IPoolRouterTransactor{contract: contract}, nil +} + +// NewIPoolRouterFilterer creates a new log filterer instance of IPoolRouter, bound to a specific deployed contract. +func NewIPoolRouterFilterer(address common.Address, filterer bind.ContractFilterer) (*IPoolRouterFilterer, error) { + contract, err := bindIPoolRouter(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IPoolRouterFilterer{contract: contract}, nil +} + +// bindIPoolRouter binds a generic wrapper to an already deployed contract. +func bindIPoolRouter(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IPoolRouterMetaData.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 (_IPoolRouter *IPoolRouterRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IPoolRouter.Contract.IPoolRouterCaller.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 (_IPoolRouter *IPoolRouterRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IPoolRouter.Contract.IPoolRouterTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IPoolRouter *IPoolRouterRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IPoolRouter.Contract.IPoolRouterTransactor.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 (_IPoolRouter *IPoolRouterCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IPoolRouter.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 (_IPoolRouter *IPoolRouterTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IPoolRouter.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IPoolRouter *IPoolRouterTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IPoolRouter.Contract.contract.Transact(opts, method, params...) +} + +// ExactInput is a paid mutator transaction binding the contract method 0x363a9dba. +// +// Solidity: function exactInput((address,uint256,uint256,address[],address,bool) params) payable returns(uint256 amountOut) +func (_IPoolRouter *IPoolRouterTransactor) ExactInput(opts *bind.TransactOpts, params IPoolRouterExactInputParams) (*types.Transaction, error) { + return _IPoolRouter.contract.Transact(opts, "exactInput", params) +} + +// ExactInput is a paid mutator transaction binding the contract method 0x363a9dba. +// +// Solidity: function exactInput((address,uint256,uint256,address[],address,bool) params) payable returns(uint256 amountOut) +func (_IPoolRouter *IPoolRouterSession) ExactInput(params IPoolRouterExactInputParams) (*types.Transaction, error) { + return _IPoolRouter.Contract.ExactInput(&_IPoolRouter.TransactOpts, params) +} + +// ExactInput is a paid mutator transaction binding the contract method 0x363a9dba. +// +// Solidity: function exactInput((address,uint256,uint256,address[],address,bool) params) payable returns(uint256 amountOut) +func (_IPoolRouter *IPoolRouterTransactorSession) ExactInput(params IPoolRouterExactInputParams) (*types.Transaction, error) { + return _IPoolRouter.Contract.ExactInput(&_IPoolRouter.TransactOpts, params) +} + +// ExactInputSingle is a paid mutator transaction binding the contract method 0xc07f5c32. +// +// Solidity: function exactInputSingle((address,uint256,uint256,address,address,bool) params) payable returns(uint256 amountOut) +func (_IPoolRouter *IPoolRouterTransactor) ExactInputSingle(opts *bind.TransactOpts, params IPoolRouterExactInputSingleParams) (*types.Transaction, error) { + return _IPoolRouter.contract.Transact(opts, "exactInputSingle", params) +} + +// ExactInputSingle is a paid mutator transaction binding the contract method 0xc07f5c32. +// +// Solidity: function exactInputSingle((address,uint256,uint256,address,address,bool) params) payable returns(uint256 amountOut) +func (_IPoolRouter *IPoolRouterSession) ExactInputSingle(params IPoolRouterExactInputSingleParams) (*types.Transaction, error) { + return _IPoolRouter.Contract.ExactInputSingle(&_IPoolRouter.TransactOpts, params) +} + +// ExactInputSingle is a paid mutator transaction binding the contract method 0xc07f5c32. +// +// Solidity: function exactInputSingle((address,uint256,uint256,address,address,bool) params) payable returns(uint256 amountOut) +func (_IPoolRouter *IPoolRouterTransactorSession) ExactInputSingle(params IPoolRouterExactInputSingleParams) (*types.Transaction, error) { + return _IPoolRouter.Contract.ExactInputSingle(&_IPoolRouter.TransactOpts, params) +} + +// ExactOutput is a paid mutator transaction binding the contract method 0xbee20e05. +// +// Solidity: function exactOutput((address,uint256,uint256,address[],address,bool) params) payable returns(uint256 amountIn) +func (_IPoolRouter *IPoolRouterTransactor) ExactOutput(opts *bind.TransactOpts, params IPoolRouterExactOutputParams) (*types.Transaction, error) { + return _IPoolRouter.contract.Transact(opts, "exactOutput", params) +} + +// ExactOutput is a paid mutator transaction binding the contract method 0xbee20e05. +// +// Solidity: function exactOutput((address,uint256,uint256,address[],address,bool) params) payable returns(uint256 amountIn) +func (_IPoolRouter *IPoolRouterSession) ExactOutput(params IPoolRouterExactOutputParams) (*types.Transaction, error) { + return _IPoolRouter.Contract.ExactOutput(&_IPoolRouter.TransactOpts, params) +} + +// ExactOutput is a paid mutator transaction binding the contract method 0xbee20e05. +// +// Solidity: function exactOutput((address,uint256,uint256,address[],address,bool) params) payable returns(uint256 amountIn) +func (_IPoolRouter *IPoolRouterTransactorSession) ExactOutput(params IPoolRouterExactOutputParams) (*types.Transaction, error) { + return _IPoolRouter.Contract.ExactOutput(&_IPoolRouter.TransactOpts, params) +} + +// ExactOutputSingle is a paid mutator transaction binding the contract method 0x54c1b650. +// +// Solidity: function exactOutputSingle((address,uint256,uint256,address,address,bool) params) payable returns(uint256 amountIn) +func (_IPoolRouter *IPoolRouterTransactor) ExactOutputSingle(opts *bind.TransactOpts, params IPoolRouterExactOutputSingleParams) (*types.Transaction, error) { + return _IPoolRouter.contract.Transact(opts, "exactOutputSingle", params) +} + +// ExactOutputSingle is a paid mutator transaction binding the contract method 0x54c1b650. +// +// Solidity: function exactOutputSingle((address,uint256,uint256,address,address,bool) params) payable returns(uint256 amountIn) +func (_IPoolRouter *IPoolRouterSession) ExactOutputSingle(params IPoolRouterExactOutputSingleParams) (*types.Transaction, error) { + return _IPoolRouter.Contract.ExactOutputSingle(&_IPoolRouter.TransactOpts, params) +} + +// ExactOutputSingle is a paid mutator transaction binding the contract method 0x54c1b650. +// +// Solidity: function exactOutputSingle((address,uint256,uint256,address,address,bool) params) payable returns(uint256 amountIn) +func (_IPoolRouter *IPoolRouterTransactorSession) ExactOutputSingle(params IPoolRouterExactOutputSingleParams) (*types.Transaction, error) { + return _IPoolRouter.Contract.ExactOutputSingle(&_IPoolRouter.TransactOpts, params) +} + +// Sweep is a paid mutator transaction binding the contract method 0xdc2c256f. +// +// Solidity: function sweep(address token, uint256 amount, address recipient) payable returns() +func (_IPoolRouter *IPoolRouterTransactor) Sweep(opts *bind.TransactOpts, token common.Address, amount *big.Int, recipient common.Address) (*types.Transaction, error) { + return _IPoolRouter.contract.Transact(opts, "sweep", token, amount, recipient) +} + +// Sweep is a paid mutator transaction binding the contract method 0xdc2c256f. +// +// Solidity: function sweep(address token, uint256 amount, address recipient) payable returns() +func (_IPoolRouter *IPoolRouterSession) Sweep(token common.Address, amount *big.Int, recipient common.Address) (*types.Transaction, error) { + return _IPoolRouter.Contract.Sweep(&_IPoolRouter.TransactOpts, token, amount, recipient) +} + +// Sweep is a paid mutator transaction binding the contract method 0xdc2c256f. +// +// Solidity: function sweep(address token, uint256 amount, address recipient) payable returns() +func (_IPoolRouter *IPoolRouterTransactorSession) Sweep(token common.Address, amount *big.Int, recipient common.Address) (*types.Transaction, error) { + return _IPoolRouter.Contract.Sweep(&_IPoolRouter.TransactOpts, token, amount, recipient) +} diff --git a/pkg/contracts/evm/zetainteractor.sol/zetainteractor.go b/pkg/contracts/evm/tools/zetainteractor.sol/zetainteractor.go similarity index 100% rename from pkg/contracts/evm/zetainteractor.sol/zetainteractor.go rename to pkg/contracts/evm/tools/zetainteractor.sol/zetainteractor.go 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/tools/zetatokenconsumertrident.strategy.sol/weth9.go b/pkg/contracts/evm/tools/zetatokenconsumertrident.strategy.sol/weth9.go new file mode 100644 index 00000000..b81ea215 --- /dev/null +++ b/pkg/contracts/evm/tools/zetatokenconsumertrident.strategy.sol/weth9.go @@ -0,0 +1,265 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package zetatokenconsumertrident + +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\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"depositTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"withdrawTo\",\"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...) +} + +// Deposit is a paid mutator transaction binding the contract method 0xd0e30db0. +// +// Solidity: function deposit() payable returns() +func (_WETH9 *WETH9Transactor) Deposit(opts *bind.TransactOpts) (*types.Transaction, error) { + return _WETH9.contract.Transact(opts, "deposit") +} + +// Deposit is a paid mutator transaction binding the contract method 0xd0e30db0. +// +// Solidity: function deposit() payable returns() +func (_WETH9 *WETH9Session) Deposit() (*types.Transaction, error) { + return _WETH9.Contract.Deposit(&_WETH9.TransactOpts) +} + +// Deposit is a paid mutator transaction binding the contract method 0xd0e30db0. +// +// Solidity: function deposit() payable returns() +func (_WETH9 *WETH9TransactorSession) Deposit() (*types.Transaction, error) { + return _WETH9.Contract.Deposit(&_WETH9.TransactOpts) +} + +// DepositTo is a paid mutator transaction binding the contract method 0xb760faf9. +// +// Solidity: function depositTo(address to) payable returns() +func (_WETH9 *WETH9Transactor) DepositTo(opts *bind.TransactOpts, to common.Address) (*types.Transaction, error) { + return _WETH9.contract.Transact(opts, "depositTo", to) +} + +// DepositTo is a paid mutator transaction binding the contract method 0xb760faf9. +// +// Solidity: function depositTo(address to) payable returns() +func (_WETH9 *WETH9Session) DepositTo(to common.Address) (*types.Transaction, error) { + return _WETH9.Contract.DepositTo(&_WETH9.TransactOpts, to) +} + +// DepositTo is a paid mutator transaction binding the contract method 0xb760faf9. +// +// Solidity: function depositTo(address to) payable returns() +func (_WETH9 *WETH9TransactorSession) DepositTo(to common.Address) (*types.Transaction, error) { + return _WETH9.Contract.DepositTo(&_WETH9.TransactOpts, to) +} + +// 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) +} + +// WithdrawTo is a paid mutator transaction binding the contract method 0x205c2878. +// +// Solidity: function withdrawTo(address to, uint256 value) returns() +func (_WETH9 *WETH9Transactor) WithdrawTo(opts *bind.TransactOpts, to common.Address, value *big.Int) (*types.Transaction, error) { + return _WETH9.contract.Transact(opts, "withdrawTo", to, value) +} + +// WithdrawTo is a paid mutator transaction binding the contract method 0x205c2878. +// +// Solidity: function withdrawTo(address to, uint256 value) returns() +func (_WETH9 *WETH9Session) WithdrawTo(to common.Address, value *big.Int) (*types.Transaction, error) { + return _WETH9.Contract.WithdrawTo(&_WETH9.TransactOpts, to, value) +} + +// WithdrawTo is a paid mutator transaction binding the contract method 0x205c2878. +// +// Solidity: function withdrawTo(address to, uint256 value) returns() +func (_WETH9 *WETH9TransactorSession) WithdrawTo(to common.Address, value *big.Int) (*types.Transaction, error) { + return _WETH9.Contract.WithdrawTo(&_WETH9.TransactOpts, to, value) +} diff --git a/pkg/contracts/evm/tools/zetatokenconsumertrident.strategy.sol/zetatokenconsumertrident.go b/pkg/contracts/evm/tools/zetatokenconsumertrident.strategy.sol/zetatokenconsumertrident.go new file mode 100644 index 00000000..c6938a39 --- /dev/null +++ b/pkg/contracts/evm/tools/zetatokenconsumertrident.strategy.sol/zetatokenconsumertrident.go @@ -0,0 +1,974 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package zetatokenconsumertrident + +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 +) + +// ZetaTokenConsumerTridentMetaData contains all meta data concerning the ZetaTokenConsumerTrident contract. +var ZetaTokenConsumerTridentMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"zetaToken_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"uniswapV3Router_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"WETH9Address_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"poolFactory_\",\"type\":\"address\"}],\"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\":[{\"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\":\"poolFactory\",\"outputs\":[{\"internalType\":\"contractConcentratedLiquidityPoolFactory\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tridentRouter\",\"outputs\":[{\"internalType\":\"contractIPoolRouter\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", + Bin: "0x6101006040523480156200001257600080fd5b5060405162002b5a38038062002b5a833981810160405281019062000038919062000245565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480620000a05750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80620000d85750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80620001105750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b1562000148576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508273ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660e08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b81525050505050506200030a565b6000815190506200023f81620002f0565b92915050565b60008060008060808587031215620002625762000261620002eb565b5b600062000272878288016200022e565b945050602062000285878288016200022e565b935050604062000298878288016200022e565b9250506060620002ab878288016200022e565b91505092959194509250565b6000620002c482620002cb565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b620002fb81620002b7565b81146200030757600080fd5b50565b60805160601c60a05160601c60c05160601c60e05160601c6127466200041460003960008181610316015281816107000152818161080c01528181610b4201528181610d14015281816111e301526112cf0152600081816104620152818161068501528181610a4801528181610c5901528181610e7f01528181610f7401528181611128015261152b0152600081816102ea01528181610557015281816107dc01528181610c0f01528181610c7b01528181610cc701528181610dd9015281816110de0152818161114a0152818161119601526114b60152600081816102c9015281816106d4015281816107bb01528181610ce8015281816111b7015261129e01526127466000f3fe60806040526004361061007f5760003560e01c806354c49a2a1161004e57806354c49a2a1461014e57806364b5528a1461018b57806380801f84146101b6578063a53fb10b146101e157610086565b8063013b2ff81461008b57806321e093b1146100bb5780632405620a146100e65780634219dc401461012357610086565b3661008657005b600080fd5b6100a560048036038101906100a09190611c10565b61021e565b6040516100b2919061231a565b60405180910390f35b3480156100c757600080fd5b506100d0610555565b6040516100dd91906120ca565b60405180910390f35b3480156100f257600080fd5b5061010d60048036038101906101089190611c50565b610579565b60405161011a919061231a565b60405180910390f35b34801561012f57600080fd5b50610138610b40565b6040516101459190612205565b60405180910390f35b34801561015a57600080fd5b5061017560048036038101906101709190611cb7565b610b64565b604051610182919061231a565b60405180910390f35b34801561019757600080fd5b506101a0610f72565b6040516101ad9190612220565b60405180910390f35b3480156101c257600080fd5b506101cb610f96565b6040516101d891906121ea565b60405180910390f35b3480156101ed57600080fd5b5061020860048036038101906102039190611c50565b610f9b565b604051610215919061231a565b60405180910390f35b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610286576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60003414156102c1576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008061030e7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061163d565b9150915060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166371a258128484600060016040518563ffffffff1660e01b8152600401610375949392919061210e565b60006040518083038186803b15801561038d57600080fd5b505afa1580156103a1573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906103ca9190611d0a565b905060006040518060c00160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020013481526020018781526020018360008151811061041657610415612532565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff16815260200160001515815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c07f5c3234846040518363ffffffff1660e01b81526004016104ba91906122ff565b6020604051808303818588803b1580156104d357600080fd5b505af11580156104e7573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061050c9190611d80565b90507f87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da11348260405161053f929190612335565b60405180910390a1809550505050505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806105e15750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15610618576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000821415610653576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106803330848673ffffffffffffffffffffffffffffffffffffffff1661168d909392919063ffffffff16565b6106cb7f0000000000000000000000000000000000000000000000000000000000000000838573ffffffffffffffffffffffffffffffffffffffff166117169092919063ffffffff16565b6000806106f8857f000000000000000000000000000000000000000000000000000000000000000061163d565b9150915060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166371a258128484600060016040518563ffffffff1660e01b815260040161075f949392919061210e565b60006040518083038186803b15801561077757600080fd5b505afa15801561078b573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906107b49190611d0a565b90506108007f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061163d565b809350819450505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166371a258128585600060016040518563ffffffff1660e01b815260040161086b949392919061210e565b60006040518083038186803b15801561088357600080fd5b505afa158015610897573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906108c09190611d0a565b90506000600267ffffffffffffffff8111156108df576108de612561565b5b60405190808252806020026020018201604052801561090d5781602001602082028036833780820191505090505b5090508260008151811061092457610923612532565b5b6020026020010151816000815181106109405761093f612532565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508160008151811061098e5761098d612532565b5b6020026020010151816001815181106109aa576109a9612532565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060006040518060c001604052808a73ffffffffffffffffffffffffffffffffffffffff1681526020018981526020018b81526020018381526020018c73ffffffffffffffffffffffffffffffffffffffff16815260200160001515815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663363a9dba836040518263ffffffff1660e01b8152600401610a9f91906122dd565b602060405180830381600087803b158015610ab957600080fd5b505af1158015610acd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af19190611d80565b90507f017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f8a8a83604051610b26939291906121b3565b60405180910390a180975050505050505050949350505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610bcc576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000821415610c07576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c543330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661168d909392919063ffffffff16565b610cbf7f0000000000000000000000000000000000000000000000000000000000000000837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166117169092919063ffffffff16565b600080610d0c7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061163d565b9150915060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166371a258128484600060016040518563ffffffff1660e01b8152600401610d73949392919061210e565b60006040518083038186803b158015610d8b57600080fd5b505afa158015610d9f573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610dc89190611d0a565b905060006040518060c001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16815260200187815260200188815260200183600081518110610e3357610e32612532565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1681526020018973ffffffffffffffffffffffffffffffffffffffff16815260200160011515815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c07f5c32836040518263ffffffff1660e01b8152600401610ed691906122ff565b602060405180830381600087803b158015610ef057600080fd5b505af1158015610f04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f289190611d80565b90507f74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae8782604051610f5b929190612335565b60405180910390a180955050505050509392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600090565b60008060009054906101000a900460ff1615610fe3576040517f29f745a700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60016000806101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806110645750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561109b576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008214156110d6576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111233330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661168d909392919063ffffffff16565b61118e7f0000000000000000000000000000000000000000000000000000000000000000837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166117169092919063ffffffff16565b6000806111db7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061163d565b9150915060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166371a258128484600060016040518563ffffffff1660e01b8152600401611242949392919061210e565b60006040518083038186803b15801561125a57600080fd5b505afa15801561126e573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906112979190611d0a565b90506112c37f00000000000000000000000000000000000000000000000000000000000000008761163d565b809350819450505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166371a258128585600060016040518563ffffffff1660e01b815260040161132e949392919061210e565b60006040518083038186803b15801561134657600080fd5b505afa15801561135a573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906113839190611d0a565b90506000600267ffffffffffffffff8111156113a2576113a1612561565b5b6040519080825280602002602001820160405280156113d05781602001602082028036833780820191505090505b509050826000815181106113e7576113e6612532565b5b60200260200101518160008151811061140357611402612532565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508160008151811061145157611450612532565b5b60200260200101518160018151811061146d5761146c612532565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060006040518060c001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020018981526020018b81526020018381526020018c73ffffffffffffffffffffffffffffffffffffffff16815260200160001515815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663363a9dba836040518263ffffffff1660e01b815260040161158291906122dd565b602060405180830381600087803b15801561159c57600080fd5b505af11580156115b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115d49190611d80565b90507f0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b8a8a83604051611609939291906121b3565b60405180910390a18097505050505050505060008060006101000a81548160ff021916908315150217905550949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16101561167f57838391509150611686565b8284915091505b9250929050565b611710846323b872dd60e01b8585856040516024016116ae93929190612153565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611874565b50505050565b60008114806117af575060008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b815260040161175d9291906120e5565b60206040518083038186803b15801561177557600080fd5b505afa158015611789573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ad9190611d80565b145b6117ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e5906122bd565b60405180910390fd5b61186f8363095ea7b360e01b848460405160240161180d92919061218a565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611874565b505050565b60006118d6826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661193b9092919063ffffffff16565b905060008151111561193657808060200190518101906118f69190611d53565b611935576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192c9061229d565b60405180910390fd5b5b505050565b606061194a8484600085611953565b90509392505050565b606082471015611998576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198f9061225d565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516119c191906120b3565b60006040518083038185875af1925050503d80600081146119fe576040519150601f19603f3d011682016040523d82523d6000602084013e611a03565b606091505b5091509150611a1487838387611a20565b92505050949350505050565b60608315611a8357600083511415611a7b57611a3b85611a96565b611a7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a719061227d565b60405180910390fd5b5b829050611a8e565b611a8d8383611ab9565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600082511115611acc5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b00919061223b565b60405180910390fd5b6000611b1c611b1784612383565b61235e565b90508083825260208201905082856020860282011115611b3f57611b3e612595565b5b60005b85811015611b6f5781611b558882611b8e565b845260208401935060208301925050600181019050611b42565b5050509392505050565b600081359050611b88816126cb565b92915050565b600081519050611b9d816126cb565b92915050565b600082601f830112611bb857611bb7612590565b5b8151611bc8848260208601611b09565b91505092915050565b600081519050611be0816126e2565b92915050565b600081359050611bf5816126f9565b92915050565b600081519050611c0a816126f9565b92915050565b60008060408385031215611c2757611c2661259f565b5b6000611c3585828601611b79565b9250506020611c4685828601611be6565b9150509250929050565b60008060008060808587031215611c6a57611c6961259f565b5b6000611c7887828801611b79565b9450506020611c8987828801611be6565b9350506040611c9a87828801611b79565b9250506060611cab87828801611be6565b91505092959194509250565b600080600060608486031215611cd057611ccf61259f565b5b6000611cde86828701611b79565b9350506020611cef86828701611be6565b9250506040611d0086828701611be6565b9150509250925092565b600060208284031215611d2057611d1f61259f565b5b600082015167ffffffffffffffff811115611d3e57611d3d61259a565b5b611d4a84828501611ba3565b91505092915050565b600060208284031215611d6957611d6861259f565b5b6000611d7784828501611bd1565b91505092915050565b600060208284031215611d9657611d9561259f565b5b6000611da484828501611bfb565b91505092915050565b6000611db98383611dc5565b60208301905092915050565b611dce8161241a565b82525050565b611ddd8161241a565b82525050565b6000611dee826123bf565b611df881856123ed565b9350611e03836123af565b8060005b83811015611e34578151611e1b8882611dad565b9750611e26836123e0565b925050600181019050611e07565b5085935050505092915050565b611e4a8161242c565b82525050565b611e598161242c565b82525050565b6000611e6a826123ca565b611e7481856123fe565b9350611e848185602086016124ce565b80840191505092915050565b611e9981612462565b82525050565b611ea881612474565b82525050565b611eb781612486565b82525050565b611ec681612498565b82525050565b6000611ed7826123d5565b611ee18185612409565b9350611ef18185602086016124ce565b611efa816125a4565b840191505092915050565b6000611f12602683612409565b9150611f1d826125b5565b604082019050919050565b6000611f35601d83612409565b9150611f4082612604565b602082019050919050565b6000611f58602a83612409565b9150611f638261262d565b604082019050919050565b6000611f7b603683612409565b9150611f868261267c565b604082019050919050565b600060c083016000830151611fa96000860182611dc5565b506020830151611fbc6020860182612095565b506040830151611fcf6040860182612095565b5060608301518482036060860152611fe78282611de3565b9150506080830151611ffc6080860182611dc5565b5060a083015161200f60a0860182611e41565b508091505092915050565b60c0820160008201516120306000850182611dc5565b5060208201516120436020850182612095565b5060408201516120566040850182612095565b5060608201516120696060850182611dc5565b50608082015161207c6080850182611dc5565b5060a082015161208f60a0850182611e41565b50505050565b61209e81612458565b82525050565b6120ad81612458565b82525050565b60006120bf8284611e5f565b915081905092915050565b60006020820190506120df6000830184611dd4565b92915050565b60006040820190506120fa6000830185611dd4565b6121076020830184611dd4565b9392505050565b60006080820190506121236000830187611dd4565b6121306020830186611dd4565b61213d6040830185611eae565b61214a6060830184611ebd565b95945050505050565b60006060820190506121686000830186611dd4565b6121756020830185611dd4565b61218260408301846120a4565b949350505050565b600060408201905061219f6000830185611dd4565b6121ac60208301846120a4565b9392505050565b60006060820190506121c86000830186611dd4565b6121d560208301856120a4565b6121e260408301846120a4565b949350505050565b60006020820190506121ff6000830184611e50565b92915050565b600060208201905061221a6000830184611e90565b92915050565b60006020820190506122356000830184611e9f565b92915050565b600060208201905081810360008301526122558184611ecc565b905092915050565b6000602082019050818103600083015261227681611f05565b9050919050565b6000602082019050818103600083015261229681611f28565b9050919050565b600060208201905081810360008301526122b681611f4b565b9050919050565b600060208201905081810360008301526122d681611f6e565b9050919050565b600060208201905081810360008301526122f78184611f91565b905092915050565b600060c082019050612314600083018461201a565b92915050565b600060208201905061232f60008301846120a4565b92915050565b600060408201905061234a60008301856120a4565b61235760208301846120a4565b9392505050565b6000612368612379565b90506123748282612501565b919050565b6000604051905090565b600067ffffffffffffffff82111561239e5761239d612561565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061242582612438565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061246d826124aa565b9050919050565b600061247f826124aa565b9050919050565b600061249182612458565b9050919050565b60006124a382612458565b9050919050565b60006124b5826124bc565b9050919050565b60006124c782612438565b9050919050565b60005b838110156124ec5780820151818401526020810190506124d1565b838111156124fb576000848401525b50505050565b61250a826125a4565b810181811067ffffffffffffffff8211171561252957612528612561565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60008201527f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000602082015250565b6126d48161241a565b81146126df57600080fd5b50565b6126eb8161242c565b81146126f657600080fd5b50565b61270281612458565b811461270d57600080fd5b5056fea26469706673582212207db2a1e3db417b41f7491218078aed9cfec4ce5d3704cc0cd4a870ca5e85a28864736f6c63430008070033", +} + +// ZetaTokenConsumerTridentABI is the input ABI used to generate the binding from. +// Deprecated: Use ZetaTokenConsumerTridentMetaData.ABI instead. +var ZetaTokenConsumerTridentABI = ZetaTokenConsumerTridentMetaData.ABI + +// ZetaTokenConsumerTridentBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ZetaTokenConsumerTridentMetaData.Bin instead. +var ZetaTokenConsumerTridentBin = ZetaTokenConsumerTridentMetaData.Bin + +// DeployZetaTokenConsumerTrident deploys a new Ethereum contract, binding an instance of ZetaTokenConsumerTrident to it. +func DeployZetaTokenConsumerTrident(auth *bind.TransactOpts, backend bind.ContractBackend, zetaToken_ common.Address, uniswapV3Router_ common.Address, WETH9Address_ common.Address, poolFactory_ common.Address) (common.Address, *types.Transaction, *ZetaTokenConsumerTrident, error) { + parsed, err := ZetaTokenConsumerTridentMetaData.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(ZetaTokenConsumerTridentBin), backend, zetaToken_, uniswapV3Router_, WETH9Address_, poolFactory_) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ZetaTokenConsumerTrident{ZetaTokenConsumerTridentCaller: ZetaTokenConsumerTridentCaller{contract: contract}, ZetaTokenConsumerTridentTransactor: ZetaTokenConsumerTridentTransactor{contract: contract}, ZetaTokenConsumerTridentFilterer: ZetaTokenConsumerTridentFilterer{contract: contract}}, nil +} + +// ZetaTokenConsumerTrident is an auto generated Go binding around an Ethereum contract. +type ZetaTokenConsumerTrident struct { + ZetaTokenConsumerTridentCaller // Read-only binding to the contract + ZetaTokenConsumerTridentTransactor // Write-only binding to the contract + ZetaTokenConsumerTridentFilterer // Log filterer for contract events +} + +// ZetaTokenConsumerTridentCaller is an auto generated read-only Go binding around an Ethereum contract. +type ZetaTokenConsumerTridentCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaTokenConsumerTridentTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ZetaTokenConsumerTridentTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaTokenConsumerTridentFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ZetaTokenConsumerTridentFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaTokenConsumerTridentSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ZetaTokenConsumerTridentSession struct { + Contract *ZetaTokenConsumerTrident // 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 +} + +// ZetaTokenConsumerTridentCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ZetaTokenConsumerTridentCallerSession struct { + Contract *ZetaTokenConsumerTridentCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ZetaTokenConsumerTridentTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ZetaTokenConsumerTridentTransactorSession struct { + Contract *ZetaTokenConsumerTridentTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaTokenConsumerTridentRaw is an auto generated low-level Go binding around an Ethereum contract. +type ZetaTokenConsumerTridentRaw struct { + Contract *ZetaTokenConsumerTrident // Generic contract binding to access the raw methods on +} + +// ZetaTokenConsumerTridentCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ZetaTokenConsumerTridentCallerRaw struct { + Contract *ZetaTokenConsumerTridentCaller // Generic read-only contract binding to access the raw methods on +} + +// ZetaTokenConsumerTridentTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ZetaTokenConsumerTridentTransactorRaw struct { + Contract *ZetaTokenConsumerTridentTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewZetaTokenConsumerTrident creates a new instance of ZetaTokenConsumerTrident, bound to a specific deployed contract. +func NewZetaTokenConsumerTrident(address common.Address, backend bind.ContractBackend) (*ZetaTokenConsumerTrident, error) { + contract, err := bindZetaTokenConsumerTrident(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ZetaTokenConsumerTrident{ZetaTokenConsumerTridentCaller: ZetaTokenConsumerTridentCaller{contract: contract}, ZetaTokenConsumerTridentTransactor: ZetaTokenConsumerTridentTransactor{contract: contract}, ZetaTokenConsumerTridentFilterer: ZetaTokenConsumerTridentFilterer{contract: contract}}, nil +} + +// NewZetaTokenConsumerTridentCaller creates a new read-only instance of ZetaTokenConsumerTrident, bound to a specific deployed contract. +func NewZetaTokenConsumerTridentCaller(address common.Address, caller bind.ContractCaller) (*ZetaTokenConsumerTridentCaller, error) { + contract, err := bindZetaTokenConsumerTrident(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ZetaTokenConsumerTridentCaller{contract: contract}, nil +} + +// NewZetaTokenConsumerTridentTransactor creates a new write-only instance of ZetaTokenConsumerTrident, bound to a specific deployed contract. +func NewZetaTokenConsumerTridentTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaTokenConsumerTridentTransactor, error) { + contract, err := bindZetaTokenConsumerTrident(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ZetaTokenConsumerTridentTransactor{contract: contract}, nil +} + +// NewZetaTokenConsumerTridentFilterer creates a new log filterer instance of ZetaTokenConsumerTrident, bound to a specific deployed contract. +func NewZetaTokenConsumerTridentFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaTokenConsumerTridentFilterer, error) { + contract, err := bindZetaTokenConsumerTrident(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ZetaTokenConsumerTridentFilterer{contract: contract}, nil +} + +// bindZetaTokenConsumerTrident binds a generic wrapper to an already deployed contract. +func bindZetaTokenConsumerTrident(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ZetaTokenConsumerTridentMetaData.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 (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaTokenConsumerTrident.Contract.ZetaTokenConsumerTridentCaller.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 (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaTokenConsumerTrident.Contract.ZetaTokenConsumerTridentTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaTokenConsumerTrident.Contract.ZetaTokenConsumerTridentTransactor.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 (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaTokenConsumerTrident.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 (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaTokenConsumerTrident.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaTokenConsumerTrident.Contract.contract.Transact(opts, method, params...) +} + +// HasZetaLiquidity is a free data retrieval call binding the contract method 0x80801f84. +// +// Solidity: function hasZetaLiquidity() view returns(bool) +func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentCaller) HasZetaLiquidity(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _ZetaTokenConsumerTrident.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 (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentSession) HasZetaLiquidity() (bool, error) { + return _ZetaTokenConsumerTrident.Contract.HasZetaLiquidity(&_ZetaTokenConsumerTrident.CallOpts) +} + +// HasZetaLiquidity is a free data retrieval call binding the contract method 0x80801f84. +// +// Solidity: function hasZetaLiquidity() view returns(bool) +func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentCallerSession) HasZetaLiquidity() (bool, error) { + return _ZetaTokenConsumerTrident.Contract.HasZetaLiquidity(&_ZetaTokenConsumerTrident.CallOpts) +} + +// PoolFactory is a free data retrieval call binding the contract method 0x4219dc40. +// +// Solidity: function poolFactory() view returns(address) +func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentCaller) PoolFactory(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZetaTokenConsumerTrident.contract.Call(opts, &out, "poolFactory") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// PoolFactory is a free data retrieval call binding the contract method 0x4219dc40. +// +// Solidity: function poolFactory() view returns(address) +func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentSession) PoolFactory() (common.Address, error) { + return _ZetaTokenConsumerTrident.Contract.PoolFactory(&_ZetaTokenConsumerTrident.CallOpts) +} + +// PoolFactory is a free data retrieval call binding the contract method 0x4219dc40. +// +// Solidity: function poolFactory() view returns(address) +func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentCallerSession) PoolFactory() (common.Address, error) { + return _ZetaTokenConsumerTrident.Contract.PoolFactory(&_ZetaTokenConsumerTrident.CallOpts) +} + +// TridentRouter is a free data retrieval call binding the contract method 0x64b5528a. +// +// Solidity: function tridentRouter() view returns(address) +func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentCaller) TridentRouter(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZetaTokenConsumerTrident.contract.Call(opts, &out, "tridentRouter") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// TridentRouter is a free data retrieval call binding the contract method 0x64b5528a. +// +// Solidity: function tridentRouter() view returns(address) +func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentSession) TridentRouter() (common.Address, error) { + return _ZetaTokenConsumerTrident.Contract.TridentRouter(&_ZetaTokenConsumerTrident.CallOpts) +} + +// TridentRouter is a free data retrieval call binding the contract method 0x64b5528a. +// +// Solidity: function tridentRouter() view returns(address) +func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentCallerSession) TridentRouter() (common.Address, error) { + return _ZetaTokenConsumerTrident.Contract.TridentRouter(&_ZetaTokenConsumerTrident.CallOpts) +} + +// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. +// +// Solidity: function zetaToken() view returns(address) +func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentCaller) ZetaToken(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZetaTokenConsumerTrident.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 (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentSession) ZetaToken() (common.Address, error) { + return _ZetaTokenConsumerTrident.Contract.ZetaToken(&_ZetaTokenConsumerTrident.CallOpts) +} + +// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. +// +// Solidity: function zetaToken() view returns(address) +func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentCallerSession) ZetaToken() (common.Address, error) { + return _ZetaTokenConsumerTrident.Contract.ZetaToken(&_ZetaTokenConsumerTrident.CallOpts) +} + +// GetEthFromZeta is a paid mutator transaction binding the contract method 0x54c49a2a. +// +// Solidity: function getEthFromZeta(address destinationAddress, uint256 minAmountOut, uint256 zetaTokenAmount) returns(uint256) +func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentTransactor) GetEthFromZeta(opts *bind.TransactOpts, destinationAddress common.Address, minAmountOut *big.Int, zetaTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerTrident.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 (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentSession) GetEthFromZeta(destinationAddress common.Address, minAmountOut *big.Int, zetaTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerTrident.Contract.GetEthFromZeta(&_ZetaTokenConsumerTrident.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 (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentTransactorSession) GetEthFromZeta(destinationAddress common.Address, minAmountOut *big.Int, zetaTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerTrident.Contract.GetEthFromZeta(&_ZetaTokenConsumerTrident.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 (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentTransactor) GetTokenFromZeta(opts *bind.TransactOpts, destinationAddress common.Address, minAmountOut *big.Int, outputToken common.Address, zetaTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerTrident.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 (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentSession) GetTokenFromZeta(destinationAddress common.Address, minAmountOut *big.Int, outputToken common.Address, zetaTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerTrident.Contract.GetTokenFromZeta(&_ZetaTokenConsumerTrident.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 (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentTransactorSession) GetTokenFromZeta(destinationAddress common.Address, minAmountOut *big.Int, outputToken common.Address, zetaTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerTrident.Contract.GetTokenFromZeta(&_ZetaTokenConsumerTrident.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 (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentTransactor) GetZetaFromEth(opts *bind.TransactOpts, destinationAddress common.Address, minAmountOut *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerTrident.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 (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentSession) GetZetaFromEth(destinationAddress common.Address, minAmountOut *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerTrident.Contract.GetZetaFromEth(&_ZetaTokenConsumerTrident.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 (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentTransactorSession) GetZetaFromEth(destinationAddress common.Address, minAmountOut *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerTrident.Contract.GetZetaFromEth(&_ZetaTokenConsumerTrident.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 (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentTransactor) GetZetaFromToken(opts *bind.TransactOpts, destinationAddress common.Address, minAmountOut *big.Int, inputToken common.Address, inputTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerTrident.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 (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentSession) GetZetaFromToken(destinationAddress common.Address, minAmountOut *big.Int, inputToken common.Address, inputTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerTrident.Contract.GetZetaFromToken(&_ZetaTokenConsumerTrident.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 (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentTransactorSession) GetZetaFromToken(destinationAddress common.Address, minAmountOut *big.Int, inputToken common.Address, inputTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerTrident.Contract.GetZetaFromToken(&_ZetaTokenConsumerTrident.TransactOpts, destinationAddress, minAmountOut, inputToken, inputTokenAmount) +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentTransactor) Receive(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaTokenConsumerTrident.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 (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentSession) Receive() (*types.Transaction, error) { + return _ZetaTokenConsumerTrident.Contract.Receive(&_ZetaTokenConsumerTrident.TransactOpts) +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentTransactorSession) Receive() (*types.Transaction, error) { + return _ZetaTokenConsumerTrident.Contract.Receive(&_ZetaTokenConsumerTrident.TransactOpts) +} + +// ZetaTokenConsumerTridentEthExchangedForZetaIterator is returned from FilterEthExchangedForZeta and is used to iterate over the raw logs and unpacked data for EthExchangedForZeta events raised by the ZetaTokenConsumerTrident contract. +type ZetaTokenConsumerTridentEthExchangedForZetaIterator struct { + Event *ZetaTokenConsumerTridentEthExchangedForZeta // 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 *ZetaTokenConsumerTridentEthExchangedForZetaIterator) 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(ZetaTokenConsumerTridentEthExchangedForZeta) + 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(ZetaTokenConsumerTridentEthExchangedForZeta) + 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 *ZetaTokenConsumerTridentEthExchangedForZetaIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaTokenConsumerTridentEthExchangedForZetaIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaTokenConsumerTridentEthExchangedForZeta represents a EthExchangedForZeta event raised by the ZetaTokenConsumerTrident contract. +type ZetaTokenConsumerTridentEthExchangedForZeta 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 (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentFilterer) FilterEthExchangedForZeta(opts *bind.FilterOpts) (*ZetaTokenConsumerTridentEthExchangedForZetaIterator, error) { + + logs, sub, err := _ZetaTokenConsumerTrident.contract.FilterLogs(opts, "EthExchangedForZeta") + if err != nil { + return nil, err + } + return &ZetaTokenConsumerTridentEthExchangedForZetaIterator{contract: _ZetaTokenConsumerTrident.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 (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentFilterer) WatchEthExchangedForZeta(opts *bind.WatchOpts, sink chan<- *ZetaTokenConsumerTridentEthExchangedForZeta) (event.Subscription, error) { + + logs, sub, err := _ZetaTokenConsumerTrident.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(ZetaTokenConsumerTridentEthExchangedForZeta) + if err := _ZetaTokenConsumerTrident.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 (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentFilterer) ParseEthExchangedForZeta(log types.Log) (*ZetaTokenConsumerTridentEthExchangedForZeta, error) { + event := new(ZetaTokenConsumerTridentEthExchangedForZeta) + if err := _ZetaTokenConsumerTrident.contract.UnpackLog(event, "EthExchangedForZeta", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaTokenConsumerTridentTokenExchangedForZetaIterator is returned from FilterTokenExchangedForZeta and is used to iterate over the raw logs and unpacked data for TokenExchangedForZeta events raised by the ZetaTokenConsumerTrident contract. +type ZetaTokenConsumerTridentTokenExchangedForZetaIterator struct { + Event *ZetaTokenConsumerTridentTokenExchangedForZeta // 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 *ZetaTokenConsumerTridentTokenExchangedForZetaIterator) 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(ZetaTokenConsumerTridentTokenExchangedForZeta) + 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(ZetaTokenConsumerTridentTokenExchangedForZeta) + 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 *ZetaTokenConsumerTridentTokenExchangedForZetaIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaTokenConsumerTridentTokenExchangedForZetaIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaTokenConsumerTridentTokenExchangedForZeta represents a TokenExchangedForZeta event raised by the ZetaTokenConsumerTrident contract. +type ZetaTokenConsumerTridentTokenExchangedForZeta 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 (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentFilterer) FilterTokenExchangedForZeta(opts *bind.FilterOpts) (*ZetaTokenConsumerTridentTokenExchangedForZetaIterator, error) { + + logs, sub, err := _ZetaTokenConsumerTrident.contract.FilterLogs(opts, "TokenExchangedForZeta") + if err != nil { + return nil, err + } + return &ZetaTokenConsumerTridentTokenExchangedForZetaIterator{contract: _ZetaTokenConsumerTrident.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 (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentFilterer) WatchTokenExchangedForZeta(opts *bind.WatchOpts, sink chan<- *ZetaTokenConsumerTridentTokenExchangedForZeta) (event.Subscription, error) { + + logs, sub, err := _ZetaTokenConsumerTrident.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(ZetaTokenConsumerTridentTokenExchangedForZeta) + if err := _ZetaTokenConsumerTrident.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 (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentFilterer) ParseTokenExchangedForZeta(log types.Log) (*ZetaTokenConsumerTridentTokenExchangedForZeta, error) { + event := new(ZetaTokenConsumerTridentTokenExchangedForZeta) + if err := _ZetaTokenConsumerTrident.contract.UnpackLog(event, "TokenExchangedForZeta", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaTokenConsumerTridentZetaExchangedForEthIterator is returned from FilterZetaExchangedForEth and is used to iterate over the raw logs and unpacked data for ZetaExchangedForEth events raised by the ZetaTokenConsumerTrident contract. +type ZetaTokenConsumerTridentZetaExchangedForEthIterator struct { + Event *ZetaTokenConsumerTridentZetaExchangedForEth // 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 *ZetaTokenConsumerTridentZetaExchangedForEthIterator) 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(ZetaTokenConsumerTridentZetaExchangedForEth) + 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(ZetaTokenConsumerTridentZetaExchangedForEth) + 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 *ZetaTokenConsumerTridentZetaExchangedForEthIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaTokenConsumerTridentZetaExchangedForEthIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaTokenConsumerTridentZetaExchangedForEth represents a ZetaExchangedForEth event raised by the ZetaTokenConsumerTrident contract. +type ZetaTokenConsumerTridentZetaExchangedForEth 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 (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentFilterer) FilterZetaExchangedForEth(opts *bind.FilterOpts) (*ZetaTokenConsumerTridentZetaExchangedForEthIterator, error) { + + logs, sub, err := _ZetaTokenConsumerTrident.contract.FilterLogs(opts, "ZetaExchangedForEth") + if err != nil { + return nil, err + } + return &ZetaTokenConsumerTridentZetaExchangedForEthIterator{contract: _ZetaTokenConsumerTrident.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 (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentFilterer) WatchZetaExchangedForEth(opts *bind.WatchOpts, sink chan<- *ZetaTokenConsumerTridentZetaExchangedForEth) (event.Subscription, error) { + + logs, sub, err := _ZetaTokenConsumerTrident.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(ZetaTokenConsumerTridentZetaExchangedForEth) + if err := _ZetaTokenConsumerTrident.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 (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentFilterer) ParseZetaExchangedForEth(log types.Log) (*ZetaTokenConsumerTridentZetaExchangedForEth, error) { + event := new(ZetaTokenConsumerTridentZetaExchangedForEth) + if err := _ZetaTokenConsumerTrident.contract.UnpackLog(event, "ZetaExchangedForEth", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaTokenConsumerTridentZetaExchangedForTokenIterator is returned from FilterZetaExchangedForToken and is used to iterate over the raw logs and unpacked data for ZetaExchangedForToken events raised by the ZetaTokenConsumerTrident contract. +type ZetaTokenConsumerTridentZetaExchangedForTokenIterator struct { + Event *ZetaTokenConsumerTridentZetaExchangedForToken // 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 *ZetaTokenConsumerTridentZetaExchangedForTokenIterator) 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(ZetaTokenConsumerTridentZetaExchangedForToken) + 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(ZetaTokenConsumerTridentZetaExchangedForToken) + 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 *ZetaTokenConsumerTridentZetaExchangedForTokenIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaTokenConsumerTridentZetaExchangedForTokenIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaTokenConsumerTridentZetaExchangedForToken represents a ZetaExchangedForToken event raised by the ZetaTokenConsumerTrident contract. +type ZetaTokenConsumerTridentZetaExchangedForToken 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 (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentFilterer) FilterZetaExchangedForToken(opts *bind.FilterOpts) (*ZetaTokenConsumerTridentZetaExchangedForTokenIterator, error) { + + logs, sub, err := _ZetaTokenConsumerTrident.contract.FilterLogs(opts, "ZetaExchangedForToken") + if err != nil { + return nil, err + } + return &ZetaTokenConsumerTridentZetaExchangedForTokenIterator{contract: _ZetaTokenConsumerTrident.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 (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentFilterer) WatchZetaExchangedForToken(opts *bind.WatchOpts, sink chan<- *ZetaTokenConsumerTridentZetaExchangedForToken) (event.Subscription, error) { + + logs, sub, err := _ZetaTokenConsumerTrident.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(ZetaTokenConsumerTridentZetaExchangedForToken) + if err := _ZetaTokenConsumerTrident.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 (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentFilterer) ParseZetaExchangedForToken(log types.Log) (*ZetaTokenConsumerTridentZetaExchangedForToken, error) { + event := new(ZetaTokenConsumerTridentZetaExchangedForToken) + if err := _ZetaTokenConsumerTrident.contract.UnpackLog(event, "ZetaExchangedForToken", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/pkg/contracts/evm/tools/zetatokenconsumertrident.strategy.sol/zetatokenconsumertridenterrors.go b/pkg/contracts/evm/tools/zetatokenconsumertrident.strategy.sol/zetatokenconsumertridenterrors.go new file mode 100644 index 00000000..da424409 --- /dev/null +++ b/pkg/contracts/evm/tools/zetatokenconsumertrident.strategy.sol/zetatokenconsumertridenterrors.go @@ -0,0 +1,181 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package zetatokenconsumertrident + +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 +) + +// ZetaTokenConsumerTridentErrorsMetaData contains all meta data concerning the ZetaTokenConsumerTridentErrors contract. +var ZetaTokenConsumerTridentErrorsMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"ErrorSendingETH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InputCantBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyError\",\"type\":\"error\"}]", +} + +// ZetaTokenConsumerTridentErrorsABI is the input ABI used to generate the binding from. +// Deprecated: Use ZetaTokenConsumerTridentErrorsMetaData.ABI instead. +var ZetaTokenConsumerTridentErrorsABI = ZetaTokenConsumerTridentErrorsMetaData.ABI + +// ZetaTokenConsumerTridentErrors is an auto generated Go binding around an Ethereum contract. +type ZetaTokenConsumerTridentErrors struct { + ZetaTokenConsumerTridentErrorsCaller // Read-only binding to the contract + ZetaTokenConsumerTridentErrorsTransactor // Write-only binding to the contract + ZetaTokenConsumerTridentErrorsFilterer // Log filterer for contract events +} + +// ZetaTokenConsumerTridentErrorsCaller is an auto generated read-only Go binding around an Ethereum contract. +type ZetaTokenConsumerTridentErrorsCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaTokenConsumerTridentErrorsTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ZetaTokenConsumerTridentErrorsTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaTokenConsumerTridentErrorsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ZetaTokenConsumerTridentErrorsFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaTokenConsumerTridentErrorsSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ZetaTokenConsumerTridentErrorsSession struct { + Contract *ZetaTokenConsumerTridentErrors // 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 +} + +// ZetaTokenConsumerTridentErrorsCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ZetaTokenConsumerTridentErrorsCallerSession struct { + Contract *ZetaTokenConsumerTridentErrorsCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ZetaTokenConsumerTridentErrorsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ZetaTokenConsumerTridentErrorsTransactorSession struct { + Contract *ZetaTokenConsumerTridentErrorsTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaTokenConsumerTridentErrorsRaw is an auto generated low-level Go binding around an Ethereum contract. +type ZetaTokenConsumerTridentErrorsRaw struct { + Contract *ZetaTokenConsumerTridentErrors // Generic contract binding to access the raw methods on +} + +// ZetaTokenConsumerTridentErrorsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ZetaTokenConsumerTridentErrorsCallerRaw struct { + Contract *ZetaTokenConsumerTridentErrorsCaller // Generic read-only contract binding to access the raw methods on +} + +// ZetaTokenConsumerTridentErrorsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ZetaTokenConsumerTridentErrorsTransactorRaw struct { + Contract *ZetaTokenConsumerTridentErrorsTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewZetaTokenConsumerTridentErrors creates a new instance of ZetaTokenConsumerTridentErrors, bound to a specific deployed contract. +func NewZetaTokenConsumerTridentErrors(address common.Address, backend bind.ContractBackend) (*ZetaTokenConsumerTridentErrors, error) { + contract, err := bindZetaTokenConsumerTridentErrors(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ZetaTokenConsumerTridentErrors{ZetaTokenConsumerTridentErrorsCaller: ZetaTokenConsumerTridentErrorsCaller{contract: contract}, ZetaTokenConsumerTridentErrorsTransactor: ZetaTokenConsumerTridentErrorsTransactor{contract: contract}, ZetaTokenConsumerTridentErrorsFilterer: ZetaTokenConsumerTridentErrorsFilterer{contract: contract}}, nil +} + +// NewZetaTokenConsumerTridentErrorsCaller creates a new read-only instance of ZetaTokenConsumerTridentErrors, bound to a specific deployed contract. +func NewZetaTokenConsumerTridentErrorsCaller(address common.Address, caller bind.ContractCaller) (*ZetaTokenConsumerTridentErrorsCaller, error) { + contract, err := bindZetaTokenConsumerTridentErrors(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ZetaTokenConsumerTridentErrorsCaller{contract: contract}, nil +} + +// NewZetaTokenConsumerTridentErrorsTransactor creates a new write-only instance of ZetaTokenConsumerTridentErrors, bound to a specific deployed contract. +func NewZetaTokenConsumerTridentErrorsTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaTokenConsumerTridentErrorsTransactor, error) { + contract, err := bindZetaTokenConsumerTridentErrors(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ZetaTokenConsumerTridentErrorsTransactor{contract: contract}, nil +} + +// NewZetaTokenConsumerTridentErrorsFilterer creates a new log filterer instance of ZetaTokenConsumerTridentErrors, bound to a specific deployed contract. +func NewZetaTokenConsumerTridentErrorsFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaTokenConsumerTridentErrorsFilterer, error) { + contract, err := bindZetaTokenConsumerTridentErrors(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ZetaTokenConsumerTridentErrorsFilterer{contract: contract}, nil +} + +// bindZetaTokenConsumerTridentErrors binds a generic wrapper to an already deployed contract. +func bindZetaTokenConsumerTridentErrors(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ZetaTokenConsumerTridentErrorsMetaData.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 (_ZetaTokenConsumerTridentErrors *ZetaTokenConsumerTridentErrorsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaTokenConsumerTridentErrors.Contract.ZetaTokenConsumerTridentErrorsCaller.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 (_ZetaTokenConsumerTridentErrors *ZetaTokenConsumerTridentErrorsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaTokenConsumerTridentErrors.Contract.ZetaTokenConsumerTridentErrorsTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaTokenConsumerTridentErrors *ZetaTokenConsumerTridentErrorsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaTokenConsumerTridentErrors.Contract.ZetaTokenConsumerTridentErrorsTransactor.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 (_ZetaTokenConsumerTridentErrors *ZetaTokenConsumerTridentErrorsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaTokenConsumerTridentErrors.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 (_ZetaTokenConsumerTridentErrors *ZetaTokenConsumerTridentErrorsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaTokenConsumerTridentErrors.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaTokenConsumerTridentErrors *ZetaTokenConsumerTridentErrorsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaTokenConsumerTridentErrors.Contract.contract.Transact(opts, method, params...) +} diff --git a/pkg/contracts/evm/zetatokenconsumeruniv2.strategy.sol/zetatokenconsumeruniv2.go b/pkg/contracts/evm/tools/zetatokenconsumeruniv2.strategy.sol/zetatokenconsumeruniv2.go similarity index 68% rename from pkg/contracts/evm/zetatokenconsumeruniv2.strategy.sol/zetatokenconsumeruniv2.go rename to pkg/contracts/evm/tools/zetatokenconsumeruniv2.strategy.sol/zetatokenconsumeruniv2.go index f02a7604..04ca8867 100644 --- a/pkg/contracts/evm/zetatokenconsumeruniv2.strategy.sol/zetatokenconsumeruniv2.go +++ b/pkg/contracts/evm/tools/zetatokenconsumeruniv2.strategy.sol/zetatokenconsumeruniv2.go @@ -31,8 +31,8 @@ var ( // ZetaTokenConsumerUniV2MetaData contains all meta data concerning the ZetaTokenConsumerUniV2 contract. var ZetaTokenConsumerUniV2MetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"zetaToken_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"uniswapV2Router_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InputCantBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAddress\",\"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\":[{\"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\":\"zetaToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x60e06040523480156200001157600080fd5b50604051620026c2380380620026c283398181016040528101906200003791906200024e565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806200009f5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15620000d7576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200018c57600080fd5b505afa158015620001a1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c791906200021c565b73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250505050620002e8565b6000815190506200021681620002ce565b92915050565b600060208284031215620002355762000234620002c9565b5b6000620002458482850162000205565b91505092915050565b60008060408385031215620002685762000267620002c9565b5b6000620002788582860162000205565b92505060206200028b8582860162000205565b9150509250929050565b6000620002a282620002a9565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b620002d98162000295565b8114620002e557600080fd5b50565b60805160601c60a05160601c60c05160601c612300620003c26000396000818161033401528181610598015281816108e101528181610b0f01528181610ca501528181610f0701526112700152600081816102c30152818161046a015281816106f10152818161086f01528181610ac501528181610b3101528181610bc501528181610ebd01528181610f29015281816110110152611140015260008181610254015281816105e2015281816106820152818161080001528181610c3401528181610f710152818161108001526111af01526123006000f3fe60806040526004361061004a5760003560e01c8063013b2ff81461004f57806321e093b11461007f5780632405620a146100aa57806354c49a2a146100e7578063a53fb10b14610124575b600080fd5b61006960048036038101906100649190611917565b610161565b6040516100769190611de1565b60405180910390f35b34801561008b57600080fd5b50610094610468565b6040516100a19190611c64565b60405180910390f35b3480156100b657600080fd5b506100d160048036038101906100cc9190611957565b61048c565b6040516100de9190611de1565b60405180910390f35b3480156100f357600080fd5b5061010e600480360381019061010991906119be565b610a1a565b60405161011b9190611de1565b60405180910390f35b34801561013057600080fd5b5061014b60048036038101906101469190611957565b610ddb565b6040516101589190611de1565b60405180910390f35b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156101c9576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000341415610204576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600267ffffffffffffffff8111156102215761022061211b565b5b60405190808252806020026020018201604052801561024f5781602001602082028036833780820191505090505b5090507f000000000000000000000000000000000000000000000000000000000000000081600081518110610287576102866120ec565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816001815181106102f6576102f56120ec565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16637ff36ab53486858960c84261037f9190611f87565b6040518663ffffffff1660e01b815260040161039e9493929190611dfc565b6000604051808303818588803b1580156103b757600080fd5b505af11580156103cb573d6000803e3d6000fd5b50505050506040513d6000823e3d601f19601f820116820180604052508101906103f59190611a11565b9050600081600184516104089190611fdd565b81518110610419576104186120ec565b5b602002602001015190507f87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da113482604051610454929190611e48565b60405180910390a180935050505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806104f45750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561052b576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000821415610566576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105933330848673ffffffffffffffffffffffffffffffffffffffff166113a9909392919063ffffffff16565b6105de7f0000000000000000000000000000000000000000000000000000000000000000838573ffffffffffffffffffffffffffffffffffffffff166114329092919063ffffffff16565b60607f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561076357600267ffffffffffffffff81111561064f5761064e61211b565b5b60405190808252806020026020018201604052801561067d5781602001602082028036833780820191505090505b5090507f0000000000000000000000000000000000000000000000000000000000000000816000815181106106b5576106b46120ec565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110610724576107236120ec565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506108dd565b600367ffffffffffffffff81111561077e5761077d61211b565b5b6040519080825280602002602001820160405280156107ac5781602001602082028036833780820191505090505b50905083816000815181106107c4576107c36120ec565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110610833576108326120ec565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816002815181106108a2576108a16120ec565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166338ed17398588858b60c84261092c9190611f87565b6040518663ffffffff1660e01b815260040161094c959493929190611e71565b600060405180830381600087803b15801561096657600080fd5b505af115801561097a573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906109a39190611a11565b9050600081600184516109b69190611fdd565b815181106109c7576109c66120ec565b5b602002602001015190507f017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f868683604051610a0493929190611d08565b60405180910390a1809350505050949350505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610a82576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000821415610abd576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b0a3330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166113a9909392919063ffffffff16565b610b757f0000000000000000000000000000000000000000000000000000000000000000837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166114329092919063ffffffff16565b6000600267ffffffffffffffff811115610b9257610b9161211b565b5b604051908082528060200260200182016040528015610bc05781602001602082028036833780820191505090505b5090507f000000000000000000000000000000000000000000000000000000000000000081600081518110610bf857610bf76120ec565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110610c6757610c666120ec565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318cbafe58587858a60c842610cf09190611f87565b6040518663ffffffff1660e01b8152600401610d10959493929190611e71565b600060405180830381600087803b158015610d2a57600080fd5b505af1158015610d3e573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610d679190611a11565b905060008160018451610d7a9190611fdd565b81518110610d8b57610d8a6120ec565b5b602002602001015190507f74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae8582604051610dc6929190611e48565b60405180910390a18093505050509392505050565b60008073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610e435750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15610e7a576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000821415610eb5576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f023330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166113a9909392919063ffffffff16565b610f6d7f0000000000000000000000000000000000000000000000000000000000000000837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166114329092919063ffffffff16565b60607f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156110f257600267ffffffffffffffff811115610fde57610fdd61211b565b5b60405190808252806020026020018201604052801561100c5781602001602082028036833780820191505090505b5090507f000000000000000000000000000000000000000000000000000000000000000081600081518110611044576110436120ec565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816001815181106110b3576110b26120ec565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061126c565b600367ffffffffffffffff81111561110d5761110c61211b565b5b60405190808252806020026020018201604052801561113b5781602001602082028036833780820191505090505b5090507f000000000000000000000000000000000000000000000000000000000000000081600081518110611173576111726120ec565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816001815181106111e2576111e16120ec565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508381600281518110611231576112306120ec565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166338ed17398588858b60c8426112bb9190611f87565b6040518663ffffffff1660e01b81526004016112db959493929190611e71565b600060405180830381600087803b1580156112f557600080fd5b505af1158015611309573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906113329190611a11565b9050600081600184516113459190611fdd565b81518110611356576113556120ec565b5b602002602001015190507f0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b86868360405161139393929190611d08565b60405180910390a1809350505050949350505050565b61142c846323b872dd60e01b8585856040516024016113ca93929190611ca8565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611590565b50505050565b60008114806114cb575060008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b8152600401611479929190611c7f565b60206040518083038186803b15801561149157600080fd5b505afa1580156114a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c99190611a87565b145b61150a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150190611dc1565b60405180910390fd5b61158b8363095ea7b360e01b8484604051602401611529929190611cdf565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611590565b505050565b60006115f2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166116579092919063ffffffff16565b905060008151111561165257808060200190518101906116129190611a5a565b611651576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164890611da1565b60405180910390fd5b5b505050565b6060611666848460008561166f565b90509392505050565b6060824710156116b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ab90611d61565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516116dd9190611c4d565b60006040518083038185875af1925050503d806000811461171a576040519150601f19603f3d011682016040523d82523d6000602084013e61171f565b606091505b50915091506117308783838761173c565b92505050949350505050565b6060831561179f5760008351141561179757611757856117b2565b611796576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178d90611d81565b60405180910390fd5b5b8290506117aa565b6117a983836117d5565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000825111156117e85781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181c9190611d3f565b60405180910390fd5b600061183861183384611ef0565b611ecb565b9050808382526020820190508285602086028201111561185b5761185a61214f565b5b60005b8581101561188b57816118718882611902565b84526020840193506020830192505060018101905061185e565b5050509392505050565b6000813590506118a481612285565b92915050565b600082601f8301126118bf576118be61214a565b5b81516118cf848260208601611825565b91505092915050565b6000815190506118e78161229c565b92915050565b6000813590506118fc816122b3565b92915050565b600081519050611911816122b3565b92915050565b6000806040838503121561192e5761192d612159565b5b600061193c85828601611895565b925050602061194d858286016118ed565b9150509250929050565b6000806000806080858703121561197157611970612159565b5b600061197f87828801611895565b9450506020611990878288016118ed565b93505060406119a187828801611895565b92505060606119b2878288016118ed565b91505092959194509250565b6000806000606084860312156119d7576119d6612159565b5b60006119e586828701611895565b93505060206119f6868287016118ed565b9250506040611a07868287016118ed565b9150509250925092565b600060208284031215611a2757611a26612159565b5b600082015167ffffffffffffffff811115611a4557611a44612154565b5b611a51848285016118aa565b91505092915050565b600060208284031215611a7057611a6f612159565b5b6000611a7e848285016118d8565b91505092915050565b600060208284031215611a9d57611a9c612159565b5b6000611aab84828501611902565b91505092915050565b6000611ac08383611acc565b60208301905092915050565b611ad581612011565b82525050565b611ae481612011565b82525050565b6000611af582611f2c565b611aff8185611f5a565b9350611b0a83611f1c565b8060005b83811015611b3b578151611b228882611ab4565b9750611b2d83611f4d565b925050600181019050611b0e565b5085935050505092915050565b6000611b5382611f37565b611b5d8185611f6b565b9350611b6d818560208601612059565b80840191505092915050565b6000611b8482611f42565b611b8e8185611f76565b9350611b9e818560208601612059565b611ba78161215e565b840191505092915050565b6000611bbf602683611f76565b9150611bca8261216f565b604082019050919050565b6000611be2601d83611f76565b9150611bed826121be565b602082019050919050565b6000611c05602a83611f76565b9150611c10826121e7565b604082019050919050565b6000611c28603683611f76565b9150611c3382612236565b604082019050919050565b611c478161204f565b82525050565b6000611c598284611b48565b915081905092915050565b6000602082019050611c796000830184611adb565b92915050565b6000604082019050611c946000830185611adb565b611ca16020830184611adb565b9392505050565b6000606082019050611cbd6000830186611adb565b611cca6020830185611adb565b611cd76040830184611c3e565b949350505050565b6000604082019050611cf46000830185611adb565b611d016020830184611c3e565b9392505050565b6000606082019050611d1d6000830186611adb565b611d2a6020830185611c3e565b611d376040830184611c3e565b949350505050565b60006020820190508181036000830152611d598184611b79565b905092915050565b60006020820190508181036000830152611d7a81611bb2565b9050919050565b60006020820190508181036000830152611d9a81611bd5565b9050919050565b60006020820190508181036000830152611dba81611bf8565b9050919050565b60006020820190508181036000830152611dda81611c1b565b9050919050565b6000602082019050611df66000830184611c3e565b92915050565b6000608082019050611e116000830187611c3e565b8181036020830152611e238186611aea565b9050611e326040830185611adb565b611e3f6060830184611c3e565b95945050505050565b6000604082019050611e5d6000830185611c3e565b611e6a6020830184611c3e565b9392505050565b600060a082019050611e866000830188611c3e565b611e936020830187611c3e565b8181036040830152611ea58186611aea565b9050611eb46060830185611adb565b611ec16080830184611c3e565b9695505050505050565b6000611ed5611ee6565b9050611ee1828261208c565b919050565b6000604051905090565b600067ffffffffffffffff821115611f0b57611f0a61211b565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000611f928261204f565b9150611f9d8361204f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611fd257611fd16120bd565b5b828201905092915050565b6000611fe88261204f565b9150611ff38361204f565b925082821015612006576120056120bd565b5b828203905092915050565b600061201c8261202f565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101561207757808201518184015260208101905061205c565b83811115612086576000848401525b50505050565b6120958261215e565b810181811067ffffffffffffffff821117156120b4576120b361211b565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60008201527f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000602082015250565b61228e81612011565b811461229957600080fd5b50565b6122a581612023565b81146122b057600080fd5b50565b6122bc8161204f565b81146122c757600080fd5b5056fea26469706673582212205727201d26a6b4f3558647e33c123feac1fdbf611b7aeafc5030788ad83a5cba64736f6c63430008070033", + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"zetaToken_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"uniswapV2Router_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InputCantBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAddress\",\"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\":[{\"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\":\"zetaToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", + Bin: "0x60e06040523480156200001157600080fd5b50604051620029a0380380620029a083398181016040528101906200003791906200024e565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806200009f5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15620000d7576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200018c57600080fd5b505afa158015620001a1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c791906200021c565b73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250505050620002e8565b6000815190506200021681620002ce565b92915050565b600060208284031215620002355762000234620002c9565b5b6000620002458482850162000205565b91505092915050565b60008060408385031215620002685762000267620002c9565b5b6000620002788582860162000205565b92505060206200028b8582860162000205565b9150509250929050565b6000620002a282620002a9565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b620002d98162000295565b8114620002e557600080fd5b50565b60805160601c60a05160601c60c05160601c6125c9620003d76000396000818161036a015281816105ce0152818161091701528181610b4501528181610cdb01528181610f400152818161115501526114be0152600081816102f9015281816104a001528181610727015281816108a501528181610afb01528181610b6701528181610bfb01528181610ed10152818161110b015281816111770152818161125f015261138e01526000818161028a01528181610618015281816106b80152818161083601528181610c6a01528181610e62015281816111bf015281816112ce01526113fd01526125c96000f3fe6080604052600436106100555760003560e01c8063013b2ff81461005a57806321e093b11461008a5780632405620a146100b557806354c49a2a146100f257806380801f841461012f578063a53fb10b1461015a575b600080fd5b610074600480360381019061006f9190611b65565b610197565b6040516100819190612098565b60405180910390f35b34801561009657600080fd5b5061009f61049e565b6040516100ac9190611ed0565b60405180910390f35b3480156100c157600080fd5b506100dc60048036038101906100d79190611ba5565b6104c2565b6040516100e99190612098565b60405180910390f35b3480156100fe57600080fd5b5061011960048036038101906101149190611c0c565b610a50565b6040516101269190612098565b60405180910390f35b34801561013b57600080fd5b50610144610e11565b6040516101519190611fab565b60405180910390f35b34801561016657600080fd5b50610181600480360381019061017c9190611ba5565b611029565b60405161018e9190612098565b60405180910390f35b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156101ff576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600034141561023a576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600267ffffffffffffffff811115610257576102566123e4565b5b6040519080825280602002602001820160405280156102855781602001602082028036833780820191505090505b5090507f0000000000000000000000000000000000000000000000000000000000000000816000815181106102bd576102bc6123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061032c5761032b6123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16637ff36ab53486858960c8426103b5919061223e565b6040518663ffffffff1660e01b81526004016103d494939291906120b3565b6000604051808303818588803b1580156103ed57600080fd5b505af1158015610401573d6000803e3d6000fd5b50505050506040513d6000823e3d601f19601f8201168201806040525081019061042b9190611c5f565b90506000816001845161043e9190612294565b8151811061044f5761044e6123b5565b5b602002602001015190507f87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da11348260405161048a9291906120ff565b60405180910390a180935050505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148061052a5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15610561576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082141561059c576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105c93330848673ffffffffffffffffffffffffffffffffffffffff166115f7909392919063ffffffff16565b6106147f0000000000000000000000000000000000000000000000000000000000000000838573ffffffffffffffffffffffffffffffffffffffff166116809092919063ffffffff16565b60607f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561079957600267ffffffffffffffff811115610685576106846123e4565b5b6040519080825280602002602001820160405280156106b35781602001602082028036833780820191505090505b5090507f0000000000000000000000000000000000000000000000000000000000000000816000815181106106eb576106ea6123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061075a576107596123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050610913565b600367ffffffffffffffff8111156107b4576107b36123e4565b5b6040519080825280602002602001820160405280156107e25781602001602082028036833780820191505090505b50905083816000815181106107fa576107f96123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110610869576108686123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816002815181106108d8576108d76123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166338ed17398588858b60c842610962919061223e565b6040518663ffffffff1660e01b8152600401610982959493929190612128565b600060405180830381600087803b15801561099c57600080fd5b505af11580156109b0573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906109d99190611c5f565b9050600081600184516109ec9190612294565b815181106109fd576109fc6123b5565b5b602002602001015190507f017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f868683604051610a3a93929190611f74565b60405180910390a1809350505050949350505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610ab8576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000821415610af3576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b403330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166115f7909392919063ffffffff16565b610bab7f0000000000000000000000000000000000000000000000000000000000000000837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166116809092919063ffffffff16565b6000600267ffffffffffffffff811115610bc857610bc76123e4565b5b604051908082528060200260200182016040528015610bf65781602001602082028036833780820191505090505b5090507f000000000000000000000000000000000000000000000000000000000000000081600081518110610c2e57610c2d6123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110610c9d57610c9c6123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318cbafe58587858a60c842610d26919061223e565b6040518663ffffffff1660e01b8152600401610d46959493929190612128565b600060405180830381600087803b158015610d6057600080fd5b505af1158015610d74573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610d9d9190611c5f565b905060008160018451610db09190612294565b81518110610dc157610dc06123b5565b5b602002602001015190507f74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae8582604051610dfc9291906120ff565b60405180910390a18093505050509392505050565b600080600267ffffffffffffffff811115610e2f57610e2e6123e4565b5b604051908082528060200260200182016040528015610e5d5781602001602082028036833780820191505090505b5090507f000000000000000000000000000000000000000000000000000000000000000081600081518110610e9557610e946123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110610f0457610f036123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d06ca61f6001836040518363ffffffff1660e01b8152600401610f9a929190611fc6565b60006040518083038186803b158015610fb257600080fd5b505afa925050508015610fe857506040513d6000823e3d601f19601f82011682018060405250810190610fe59190611c5f565b60015b610ff6576000915050611026565b600081600184516110079190612294565b81518110611018576110176123b5565b5b602002602001015111925050505b90565b60008073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806110915750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156110c8576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000821415611103576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111503330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166115f7909392919063ffffffff16565b6111bb7f0000000000000000000000000000000000000000000000000000000000000000837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166116809092919063ffffffff16565b60607f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561134057600267ffffffffffffffff81111561122c5761122b6123e4565b5b60405190808252806020026020018201604052801561125a5781602001602082028036833780820191505090505b5090507f000000000000000000000000000000000000000000000000000000000000000081600081518110611292576112916123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110611301576113006123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506114ba565b600367ffffffffffffffff81111561135b5761135a6123e4565b5b6040519080825280602002602001820160405280156113895781602001602082028036833780820191505090505b5090507f0000000000000000000000000000000000000000000000000000000000000000816000815181106113c1576113c06123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816001815181106114305761142f6123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050838160028151811061147f5761147e6123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166338ed17398588858b60c842611509919061223e565b6040518663ffffffff1660e01b8152600401611529959493929190612128565b600060405180830381600087803b15801561154357600080fd5b505af1158015611557573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906115809190611c5f565b9050600081600184516115939190612294565b815181106115a4576115a36123b5565b5b602002602001015190507f0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b8686836040516115e193929190611f74565b60405180910390a1809350505050949350505050565b61167a846323b872dd60e01b85858560405160240161161893929190611f14565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506117de565b50505050565b6000811480611719575060008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b81526004016116c7929190611eeb565b60206040518083038186803b1580156116df57600080fd5b505afa1580156116f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117179190611cd5565b145b611758576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174f90612078565b60405180910390fd5b6117d98363095ea7b360e01b8484604051602401611777929190611f4b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506117de565b505050565b6000611840826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166118a59092919063ffffffff16565b90506000815111156118a057808060200190518101906118609190611ca8565b61189f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189690612058565b60405180910390fd5b5b505050565b60606118b484846000856118bd565b90509392505050565b606082471015611902576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f990612018565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161192b9190611eb9565b60006040518083038185875af1925050503d8060008114611968576040519150601f19603f3d011682016040523d82523d6000602084013e61196d565b606091505b509150915061197e8783838761198a565b92505050949350505050565b606083156119ed576000835114156119e5576119a585611a00565b6119e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119db90612038565b60405180910390fd5b5b8290506119f8565b6119f78383611a23565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600082511115611a365781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6a9190611ff6565b60405180910390fd5b6000611a86611a81846121a7565b612182565b90508083825260208201905082856020860282011115611aa957611aa8612418565b5b60005b85811015611ad95781611abf8882611b50565b845260208401935060208301925050600181019050611aac565b5050509392505050565b600081359050611af28161254e565b92915050565b600082601f830112611b0d57611b0c612413565b5b8151611b1d848260208601611a73565b91505092915050565b600081519050611b3581612565565b92915050565b600081359050611b4a8161257c565b92915050565b600081519050611b5f8161257c565b92915050565b60008060408385031215611b7c57611b7b612422565b5b6000611b8a85828601611ae3565b9250506020611b9b85828601611b3b565b9150509250929050565b60008060008060808587031215611bbf57611bbe612422565b5b6000611bcd87828801611ae3565b9450506020611bde87828801611b3b565b9350506040611bef87828801611ae3565b9250506060611c0087828801611b3b565b91505092959194509250565b600080600060608486031215611c2557611c24612422565b5b6000611c3386828701611ae3565b9350506020611c4486828701611b3b565b9250506040611c5586828701611b3b565b9150509250925092565b600060208284031215611c7557611c74612422565b5b600082015167ffffffffffffffff811115611c9357611c9261241d565b5b611c9f84828501611af8565b91505092915050565b600060208284031215611cbe57611cbd612422565b5b6000611ccc84828501611b26565b91505092915050565b600060208284031215611ceb57611cea612422565b5b6000611cf984828501611b50565b91505092915050565b6000611d0e8383611d1a565b60208301905092915050565b611d23816122c8565b82525050565b611d32816122c8565b82525050565b6000611d43826121e3565b611d4d8185612211565b9350611d58836121d3565b8060005b83811015611d89578151611d708882611d02565b9750611d7b83612204565b925050600181019050611d5c565b5085935050505092915050565b611d9f816122da565b82525050565b6000611db0826121ee565b611dba8185612222565b9350611dca818560208601612322565b80840191505092915050565b611ddf81612310565b82525050565b6000611df0826121f9565b611dfa818561222d565b9350611e0a818560208601612322565b611e1381612427565b840191505092915050565b6000611e2b60268361222d565b9150611e3682612438565b604082019050919050565b6000611e4e601d8361222d565b9150611e5982612487565b602082019050919050565b6000611e71602a8361222d565b9150611e7c826124b0565b604082019050919050565b6000611e9460368361222d565b9150611e9f826124ff565b604082019050919050565b611eb381612306565b82525050565b6000611ec58284611da5565b915081905092915050565b6000602082019050611ee56000830184611d29565b92915050565b6000604082019050611f006000830185611d29565b611f0d6020830184611d29565b9392505050565b6000606082019050611f296000830186611d29565b611f366020830185611d29565b611f436040830184611eaa565b949350505050565b6000604082019050611f606000830185611d29565b611f6d6020830184611eaa565b9392505050565b6000606082019050611f896000830186611d29565b611f966020830185611eaa565b611fa36040830184611eaa565b949350505050565b6000602082019050611fc06000830184611d96565b92915050565b6000604082019050611fdb6000830185611dd6565b8181036020830152611fed8184611d38565b90509392505050565b600060208201905081810360008301526120108184611de5565b905092915050565b6000602082019050818103600083015261203181611e1e565b9050919050565b6000602082019050818103600083015261205181611e41565b9050919050565b6000602082019050818103600083015261207181611e64565b9050919050565b6000602082019050818103600083015261209181611e87565b9050919050565b60006020820190506120ad6000830184611eaa565b92915050565b60006080820190506120c86000830187611eaa565b81810360208301526120da8186611d38565b90506120e96040830185611d29565b6120f66060830184611eaa565b95945050505050565b60006040820190506121146000830185611eaa565b6121216020830184611eaa565b9392505050565b600060a08201905061213d6000830188611eaa565b61214a6020830187611eaa565b818103604083015261215c8186611d38565b905061216b6060830185611d29565b6121786080830184611eaa565b9695505050505050565b600061218c61219d565b90506121988282612355565b919050565b6000604051905090565b600067ffffffffffffffff8211156121c2576121c16123e4565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061224982612306565b915061225483612306565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561228957612288612386565b5b828201905092915050565b600061229f82612306565b91506122aa83612306565b9250828210156122bd576122bc612386565b5b828203905092915050565b60006122d3826122e6565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061231b82612306565b9050919050565b60005b83811015612340578082015181840152602081019050612325565b8381111561234f576000848401525b50505050565b61235e82612427565b810181811067ffffffffffffffff8211171561237d5761237c6123e4565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60008201527f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000602082015250565b612557816122c8565b811461256257600080fd5b50565b61256e816122da565b811461257957600080fd5b50565b61258581612306565b811461259057600080fd5b5056fea26469706673582212203b367a485c1c8365253eb443a67a0af9e708d5f18be04ddce696d86f9d990a5364736f6c63430008070033", } // ZetaTokenConsumerUniV2ABI is the input ABI used to generate the binding from. @@ -202,6 +202,37 @@ func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2TransactorRaw) Transact(opt return _ZetaTokenConsumerUniV2.Contract.contract.Transact(opts, method, params...) } +// HasZetaLiquidity is a free data retrieval call binding the contract method 0x80801f84. +// +// Solidity: function hasZetaLiquidity() view returns(bool) +func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2Caller) HasZetaLiquidity(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _ZetaTokenConsumerUniV2.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 (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2Session) HasZetaLiquidity() (bool, error) { + return _ZetaTokenConsumerUniV2.Contract.HasZetaLiquidity(&_ZetaTokenConsumerUniV2.CallOpts) +} + +// HasZetaLiquidity is a free data retrieval call binding the contract method 0x80801f84. +// +// Solidity: function hasZetaLiquidity() view returns(bool) +func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2CallerSession) HasZetaLiquidity() (bool, error) { + return _ZetaTokenConsumerUniV2.Contract.HasZetaLiquidity(&_ZetaTokenConsumerUniV2.CallOpts) +} + // ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. // // Solidity: function zetaToken() view returns(address) diff --git a/pkg/contracts/evm/zetatokenconsumeruniv2.strategy.sol/zetatokenconsumeruniv2errors.go b/pkg/contracts/evm/tools/zetatokenconsumeruniv2.strategy.sol/zetatokenconsumeruniv2errors.go similarity index 100% rename from pkg/contracts/evm/zetatokenconsumeruniv2.strategy.sol/zetatokenconsumeruniv2errors.go rename to pkg/contracts/evm/tools/zetatokenconsumeruniv2.strategy.sol/zetatokenconsumeruniv2errors.go diff --git a/pkg/contracts/evm/zetatokenconsumeruniv3.strategy.sol/weth9.go b/pkg/contracts/evm/tools/zetatokenconsumeruniv3.strategy.sol/weth9.go similarity index 100% rename from pkg/contracts/evm/zetatokenconsumeruniv3.strategy.sol/weth9.go rename to pkg/contracts/evm/tools/zetatokenconsumeruniv3.strategy.sol/weth9.go diff --git a/pkg/contracts/evm/zetatokenconsumeruniv3.strategy.sol/zetatokenconsumeruniv3.go b/pkg/contracts/evm/tools/zetatokenconsumeruniv3.strategy.sol/zetatokenconsumeruniv3.go similarity index 63% rename from pkg/contracts/evm/zetatokenconsumeruniv3.strategy.sol/zetatokenconsumeruniv3.go rename to pkg/contracts/evm/tools/zetatokenconsumeruniv3.strategy.sol/zetatokenconsumeruniv3.go index edfdf6f2..f7af068c 100644 --- a/pkg/contracts/evm/zetatokenconsumeruniv3.strategy.sol/zetatokenconsumeruniv3.go +++ b/pkg/contracts/evm/tools/zetatokenconsumeruniv3.strategy.sol/zetatokenconsumeruniv3.go @@ -31,8 +31,8 @@ var ( // ZetaTokenConsumerUniV3MetaData contains all meta data concerning the ZetaTokenConsumerUniV3 contract. var ZetaTokenConsumerUniV3MetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"zetaToken_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"uniswapV3Router_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"quoter_\",\"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\":[{\"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\":\"quoter\",\"outputs\":[{\"internalType\":\"contractIQuoter\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenPoolFee\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"uniswapV3Router\",\"outputs\":[{\"internalType\":\"contractISwapRouter\",\"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: "0x6101406040523480156200001257600080fd5b50604051620025c7380380620025c783398181016040528101906200003891906200028a565b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161480620000a05750600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b80620000d85750600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80620001105750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1562000148576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff1660e08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508473ffffffffffffffffffffffffffffffffffffffff166101008173ffffffffffffffffffffffffffffffffffffffff1660601b815250508373ffffffffffffffffffffffffffffffffffffffff166101208173ffffffffffffffffffffffffffffffffffffffff1660601b815250508273ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508162ffffff1660808162ffffff1660e81b815250508062ffffff1660a08162ffffff1660e81b81525050505050505050620003a2565b6000815190506200026d816200036e565b92915050565b600081519050620002848162000388565b92915050565b60008060008060008060c08789031215620002aa57620002a962000369565b5b6000620002ba89828a016200025c565b9650506020620002cd89828a016200025c565b9550506040620002e089828a016200025c565b9450506060620002f389828a016200025c565b93505060806200030689828a0162000273565b92505060a06200031989828a0162000273565b9150509295509295509295565b600062000333826200033a565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062ffffff82169050919050565b600080fd5b620003798162000326565b81146200038557600080fd5b50565b62000393816200035a565b81146200039f57600080fd5b50565b60805160e81c60a05160e81c60c05160601c60e05160601c6101005160601c6101205160601c612114620004b360003960006111400152600081816104030152818161062301528181610761015281816108560152818161099101528181610b0301528181610ed30152611031015260008181610343015281816104f5015281816106dc01528181610947015281816109b301528181610a0701528181610e8901528181610ef50152610f480152600081816103070152818161069a01528181610a4301528181610bb00152610f8a01526000818161067901528181610d240152610fab01526000818161037f015281816106bb0152818161087a01528181610a7f0152610f6901526121146000f3fe60806040526004361061008a5760003560e01c80633cbd7005116100595780633cbd70051461015957806354c49a2a146101845780635d9dfdde146101c1578063a53fb10b146101ec578063c6bbd5a71461022957610091565b8063013b2ff81461009657806321e093b1146100c65780632405620a146100f15780632c76d7a61461012e57610091565b3661009157005b600080fd5b6100b060048036038101906100ab9190611632565b610254565b6040516100bd9190611d3c565b60405180910390f35b3480156100d257600080fd5b506100db6104f3565b6040516100e89190611b30565b60405180910390f35b3480156100fd57600080fd5b5061011860048036038101906101139190611672565b610517565b6040516101259190611d3c565b60405180910390f35b34801561013a57600080fd5b50610143610854565b6040516101509190611c26565b60405180910390f35b34801561016557600080fd5b5061016e610878565b60405161017b9190611d21565b60405180910390f35b34801561019057600080fd5b506101ab60048036038101906101a691906116d9565b61089c565b6040516101b89190611d3c565b60405180910390f35b3480156101cd57600080fd5b506101d6610d22565b6040516101e39190611d21565b60405180910390f35b3480156101f857600080fd5b50610213600480360381019061020e9190611672565b610d46565b6040516102209190611d3c565b60405180910390f35b34801561023557600080fd5b5061023e61113e565b60405161024b9190611c0b565b60405180910390f35b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156102bc576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60003414156102f7576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518061010001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000062ffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200160c8426103d19190611dc3565b8152602001348152602001848152602001600073ffffffffffffffffffffffffffffffffffffffff16815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663414bf38934846040518363ffffffff1660e01b815260040161045b9190611d05565b6020604051808303818588803b15801561047457600080fd5b505af1158015610488573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906104ad9190611759565b90507f87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da1134826040516104e0929190611d57565b60405180910390a1809250505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148061057f5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156105b6576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008214156105f1576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61061e3330848673ffffffffffffffffffffffffffffffffffffffff16611162909392919063ffffffff16565b6106697f0000000000000000000000000000000000000000000000000000000000000000838573ffffffffffffffffffffffffffffffffffffffff166111eb9092919063ffffffff16565b60006040518060a00160405280857f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000060405160200161070f959493929190611aa5565b60405160208183030381529060405281526020018773ffffffffffffffffffffffffffffffffffffffff16815260200160c84261074c9190611dc3565b815260200184815260200186815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c04b8d59836040518263ffffffff1660e01b81526004016107b89190611ce3565b602060405180830381600087803b1580156107d257600080fd5b505af11580156107e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080a9190611759565b90507f017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f85858360405161083f93929190611bd4565b60405180910390a18092505050949350505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610904576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082141561093f576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61098c3330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16611162909392919063ffffffff16565b6109f77f0000000000000000000000000000000000000000000000000000000000000000837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166111eb9092919063ffffffff16565b60006040518061010001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000062ffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff16815260200160c842610ad19190611dc3565b8152602001848152602001858152602001600073ffffffffffffffffffffffffffffffffffffffff16815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663414bf389836040518263ffffffff1660e01b8152600401610b5a9190611d05565b602060405180830381600087803b158015610b7457600080fd5b505af1158015610b88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bac9190611759565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b8152600401610c079190611d3c565b600060405180830381600087803b158015610c2157600080fd5b505af1158015610c35573d6000803e3d6000fd5b505050507f74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae8482604051610c6a929190611d57565b60405180910390a160008673ffffffffffffffffffffffffffffffffffffffff1682604051610c9890611b1b565b60006040518083038185875af1925050503d8060008114610cd5576040519150601f19603f3d011682016040523d82523d6000602084013e610cda565b606091505b5050905080610d15576040517f3794aeaf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8193505050509392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008060009054906101000a900460ff1615610d8e576040517f29f745a700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60016000806101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610e0f5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15610e46576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000821415610e81576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ece3330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16611162909392919063ffffffff16565b610f397f0000000000000000000000000000000000000000000000000000000000000000837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166111eb9092919063ffffffff16565b60006040518060a001604052807f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000089604051602001610fdf959493929190611aa5565b60405160208183030381529060405281526020018773ffffffffffffffffffffffffffffffffffffffff16815260200160c84261101c9190611dc3565b815260200184815260200186815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c04b8d59836040518263ffffffff1660e01b81526004016110889190611ce3565b602060405180830381600087803b1580156110a257600080fd5b505af11580156110b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110da9190611759565b90507f0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b85858360405161110f93929190611bd4565b60405180910390a1809250505060008060006101000a81548160ff021916908315150217905550949350505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6111e5846323b872dd60e01b85858560405160240161118393929190611b74565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611349565b50505050565b6000811480611284575060008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b8152600401611232929190611b4b565b60206040518083038186803b15801561124a57600080fd5b505afa15801561125e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112829190611759565b145b6112c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ba90611cc3565b60405180910390fd5b6113448363095ea7b360e01b84846040516024016112e2929190611bab565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611349565b505050565b60006113ab826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166114109092919063ffffffff16565b905060008151111561140b57808060200190518101906113cb919061172c565b61140a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140190611ca3565b60405180910390fd5b5b505050565b606061141f8484600085611428565b90509392505050565b60608247101561146d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146490611c63565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516114969190611b04565b60006040518083038185875af1925050503d80600081146114d3576040519150601f19603f3d011682016040523d82523d6000602084013e6114d8565b606091505b50915091506114e9878383876114f5565b92505050949350505050565b6060831561155857600083511415611550576115108561156b565b61154f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154690611c83565b60405180910390fd5b5b829050611563565b611562838361158e565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000825111156115a15781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d59190611c41565b60405180910390fd5b6000813590506115ed81612099565b92915050565b600081519050611602816120b0565b92915050565b600081359050611617816120c7565b92915050565b60008151905061162c816120c7565b92915050565b6000806040838503121561164957611648611f50565b5b6000611657858286016115de565b925050602061166885828601611608565b9150509250929050565b6000806000806080858703121561168c5761168b611f50565b5b600061169a878288016115de565b94505060206116ab87828801611608565b93505060406116bc878288016115de565b92505060606116cd87828801611608565b91505092959194509250565b6000806000606084860312156116f2576116f1611f50565b5b6000611700868287016115de565b935050602061171186828701611608565b925050604061172286828701611608565b9150509250925092565b60006020828403121561174257611741611f50565b5b6000611750848285016115f3565b91505092915050565b60006020828403121561176f5761176e611f50565b5b600061177d8482850161161d565b91505092915050565b61178f81611e19565b82525050565b61179e81611e19565b82525050565b6117b56117b082611e19565b611eeb565b82525050565b60006117c682611d80565b6117d08185611d96565b93506117e0818560208601611eb8565b6117e981611f55565b840191505092915050565b60006117ff82611d80565b6118098185611da7565b9350611819818560208601611eb8565b80840191505092915050565b61182e81611e70565b82525050565b61183d81611e82565b82525050565b600061184e82611d8b565b6118588185611db2565b9350611868818560208601611eb8565b61187181611f55565b840191505092915050565b6000611889602683611db2565b915061189482611f80565b604082019050919050565b60006118ac600083611da7565b91506118b782611fcf565b600082019050919050565b60006118cf601d83611db2565b91506118da82611fd2565b602082019050919050565b60006118f2602a83611db2565b91506118fd82611ffb565b604082019050919050565b6000611915603683611db2565b91506119208261204a565b604082019050919050565b600060a083016000830151848203600086015261194882826117bb565b915050602083015161195d6020860182611786565b5060408301516119706040860182611a87565b5060608301516119836060860182611a87565b5060808301516119966080860182611a87565b508091505092915050565b610100820160008201516119b86000850182611786565b5060208201516119cb6020850182611786565b5060408201516119de6040850182611a52565b5060608201516119f16060850182611786565b506080820151611a046080850182611a87565b5060a0820151611a1760a0850182611a87565b5060c0820151611a2a60c0850182611a87565b5060e0820151611a3d60e0850182611a43565b50505050565b611a4c81611e37565b82525050565b611a5b81611e57565b82525050565b611a6a81611e57565b82525050565b611a81611a7c82611e57565b611f0f565b82525050565b611a9081611e66565b82525050565b611a9f81611e66565b82525050565b6000611ab182886117a4565b601482019150611ac18287611a70565b600382019150611ad182866117a4565b601482019150611ae18285611a70565b600382019150611af182846117a4565b6014820191508190509695505050505050565b6000611b1082846117f4565b915081905092915050565b6000611b268261189f565b9150819050919050565b6000602082019050611b456000830184611795565b92915050565b6000604082019050611b606000830185611795565b611b6d6020830184611795565b9392505050565b6000606082019050611b896000830186611795565b611b966020830185611795565b611ba36040830184611a96565b949350505050565b6000604082019050611bc06000830185611795565b611bcd6020830184611a96565b9392505050565b6000606082019050611be96000830186611795565b611bf66020830185611a96565b611c036040830184611a96565b949350505050565b6000602082019050611c206000830184611825565b92915050565b6000602082019050611c3b6000830184611834565b92915050565b60006020820190508181036000830152611c5b8184611843565b905092915050565b60006020820190508181036000830152611c7c8161187c565b9050919050565b60006020820190508181036000830152611c9c816118c2565b9050919050565b60006020820190508181036000830152611cbc816118e5565b9050919050565b60006020820190508181036000830152611cdc81611908565b9050919050565b60006020820190508181036000830152611cfd818461192b565b905092915050565b600061010082019050611d1b60008301846119a1565b92915050565b6000602082019050611d366000830184611a61565b92915050565b6000602082019050611d516000830184611a96565b92915050565b6000604082019050611d6c6000830185611a96565b611d796020830184611a96565b9392505050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000611dce82611e66565b9150611dd983611e66565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611e0e57611e0d611f21565b5b828201905092915050565b6000611e2482611e37565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062ffffff82169050919050565b6000819050919050565b6000611e7b82611e94565b9050919050565b6000611e8d82611e94565b9050919050565b6000611e9f82611ea6565b9050919050565b6000611eb182611e37565b9050919050565b60005b83811015611ed6578082015181840152602081019050611ebb565b83811115611ee5576000848401525b50505050565b6000611ef682611efd565b9050919050565b6000611f0882611f73565b9050919050565b6000611f1a82611f66565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b60008160e81b9050919050565b60008160601b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60008201527f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000602082015250565b6120a281611e19565b81146120ad57600080fd5b50565b6120b981611e2b565b81146120c457600080fd5b50565b6120d081611e66565b81146120db57600080fd5b5056fea26469706673582212209a8b1ae9979585504ffe3f94fd38e9b04b7a41e9f3e31bee45a021c5a7fcebed64736f6c63430008070033", + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"zetaToken_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"uniswapV3Router_\",\"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\":\"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\":\"uniswapV3Router\",\"outputs\":[{\"internalType\":\"contractISwapRouter\",\"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: "0x6101406040523480156200001257600080fd5b50604051620029833803806200298383398181016040528101906200003891906200028a565b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161480620000a05750600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b80620000d85750600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80620001105750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1562000148576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff1660e08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508473ffffffffffffffffffffffffffffffffffffffff166101008173ffffffffffffffffffffffffffffffffffffffff1660601b815250508373ffffffffffffffffffffffffffffffffffffffff166101208173ffffffffffffffffffffffffffffffffffffffff1660601b815250508273ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508162ffffff1660808162ffffff1660e81b815250508062ffffff1660a08162ffffff1660e81b81525050505050505050620003a2565b6000815190506200026d816200036e565b92915050565b600081519050620002848162000388565b92915050565b60008060008060008060c08789031215620002aa57620002a962000369565b5b6000620002ba89828a016200025c565b9650506020620002cd89828a016200025c565b9550506040620002e089828a016200025c565b9450506060620002f389828a016200025c565b93505060806200030689828a0162000273565b92505060a06200031989828a0162000273565b9150509295509295509295565b600062000333826200033a565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062ffffff82169050919050565b600080fd5b620003798162000326565b81146200038557600080fd5b50565b62000393816200035a565b81146200039f57600080fd5b50565b60805160e81c60a05160e81c60c05160601c60e05160601c6101005160601c6101205160601c6124ad620004d660003960008181610d900152610ddb01526000818161046f0152818161068f015281816107cd015281816108c2015281816109fd01528181610b6f0152818161115401526112b20152600081816103af0152818161056101528181610748015281816109b301528181610a1f01528181610a7301528181610e380152818161110a0152818161117601526111c90152600081816103730152818161070601528181610aaf01528181610c1c01528181610e170152818161120b01526113c10152600081816106e501528181610db4015261122c0152600081816103eb01528181610727015281816108e601528181610aeb01528181610e5901526111ea01526124ad6000f3fe6080604052600436106100a05760003560e01c806354c49a2a1161006457806354c49a2a1461019a5780635b549182146101d75780635d9dfdde1461020257806380801f841461022d578063a53fb10b14610258578063c469cf1414610295576100a7565b8063013b2ff8146100ac57806321e093b1146100dc5780632405620a146101075780632c76d7a6146101445780633cbd70051461016f576100a7565b366100a757005b600080fd5b6100c660048036038101906100c1919061190a565b6102c0565b6040516100d391906120a2565b60405180910390f35b3480156100e857600080fd5b506100f161055f565b6040516100fe9190611e44565b60405180910390f35b34801561011357600080fd5b5061012e6004803603810190610129919061194a565b610583565b60405161013b91906120a2565b60405180910390f35b34801561015057600080fd5b506101596108c0565b6040516101669190611f71565b60405180910390f35b34801561017b57600080fd5b506101846108e4565b6040516101919190612087565b60405180910390f35b3480156101a657600080fd5b506101c160048036038101906101bc91906119b1565b610908565b6040516101ce91906120a2565b60405180910390f35b3480156101e357600080fd5b506101ec610d8e565b6040516101f99190611f8c565b60405180910390f35b34801561020e57600080fd5b50610217610db2565b6040516102249190612087565b60405180910390f35b34801561023957600080fd5b50610242610dd6565b60405161024f9190611f56565b60405180910390f35b34801561026457600080fd5b5061027f600480360381019061027a919061194a565b610fc7565b60405161028c91906120a2565b60405180910390f35b3480156102a157600080fd5b506102aa6113bf565b6040516102b79190611e44565b60405180910390f35b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610328576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000341415610363576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518061010001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000062ffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200160c84261043d9190612129565b8152602001348152602001848152602001600073ffffffffffffffffffffffffffffffffffffffff16815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663414bf38934846040518363ffffffff1660e01b81526004016104c7919061206b565b6020604051808303818588803b1580156104e057600080fd5b505af11580156104f4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906105199190611a5e565b90507f87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da11348260405161054c9291906120bd565b60405180910390a1809250505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806105eb5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15610622576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082141561065d576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61068a3330848673ffffffffffffffffffffffffffffffffffffffff166113e3909392919063ffffffff16565b6106d57f0000000000000000000000000000000000000000000000000000000000000000838573ffffffffffffffffffffffffffffffffffffffff1661146c9092919063ffffffff16565b60006040518060a00160405280857f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000060405160200161077b959493929190611db9565b60405160208183030381529060405281526020018773ffffffffffffffffffffffffffffffffffffffff16815260200160c8426107b89190612129565b815260200184815260200186815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c04b8d59836040518263ffffffff1660e01b81526004016108249190612049565b602060405180830381600087803b15801561083e57600080fd5b505af1158015610852573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108769190611a5e565b90507f017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f8585836040516108ab93929190611f1f565b60405180910390a18092505050949350505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610970576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008214156109ab576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109f83330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166113e3909392919063ffffffff16565b610a637f0000000000000000000000000000000000000000000000000000000000000000837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661146c9092919063ffffffff16565b60006040518061010001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000062ffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff16815260200160c842610b3d9190612129565b8152602001848152602001858152602001600073ffffffffffffffffffffffffffffffffffffffff16815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663414bf389836040518263ffffffff1660e01b8152600401610bc6919061206b565b602060405180830381600087803b158015610be057600080fd5b505af1158015610bf4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c189190611a5e565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b8152600401610c7391906120a2565b600060405180830381600087803b158015610c8d57600080fd5b505af1158015610ca1573d6000803e3d6000fd5b505050507f74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae8482604051610cd69291906120bd565b60405180910390a160008673ffffffffffffffffffffffffffffffffffffffff1682604051610d0490611e2f565b60006040518083038185875af1925050503d8060008114610d41576040519150601f19603f3d011682016040523d82523d6000602084013e610d46565b606091505b5050905080610d81576040517f3794aeaf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8193505050509392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631698ee827f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006040518463ffffffff1660e01b8152600401610e9693929190611e88565b60206040518083038186803b158015610eae57600080fd5b505afa158015610ec2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee691906118dd565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610f27576000915050610fc4565b600081905060008173ffffffffffffffffffffffffffffffffffffffff16631a6865026040518163ffffffff1660e01b815260040160206040518083038186803b158015610f7457600080fd5b505afa158015610f88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fac9190611a31565b6fffffffffffffffffffffffffffffffff1611925050505b90565b60008060009054906101000a900460ff161561100f576040517f29f745a700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60016000806101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806110905750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156110c7576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000821415611102576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61114f3330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166113e3909392919063ffffffff16565b6111ba7f0000000000000000000000000000000000000000000000000000000000000000837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661146c9092919063ffffffff16565b60006040518060a001604052807f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000089604051602001611260959493929190611db9565b60405160208183030381529060405281526020018773ffffffffffffffffffffffffffffffffffffffff16815260200160c84261129d9190612129565b815260200184815260200186815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c04b8d59836040518263ffffffff1660e01b81526004016113099190612049565b602060405180830381600087803b15801561132357600080fd5b505af1158015611337573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061135b9190611a5e565b90507f0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b85858360405161139093929190611f1f565b60405180910390a1809250505060008060006101000a81548160ff021916908315150217905550949350505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b611466846323b872dd60e01b85858560405160240161140493929190611ebf565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506115ca565b50505050565b6000811480611505575060008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b81526004016114b3929190611e5f565b60206040518083038186803b1580156114cb57600080fd5b505afa1580156114df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115039190611a5e565b145b611544576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153b90612029565b60405180910390fd5b6115c58363095ea7b360e01b8484604051602401611563929190611ef6565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506115ca565b505050565b600061162c826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166116919092919063ffffffff16565b905060008151111561168c578080602001905181019061164c9190611a04565b61168b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168290612009565b60405180910390fd5b5b505050565b60606116a084846000856116a9565b90509392505050565b6060824710156116ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e590611fc9565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516117179190611e18565b60006040518083038185875af1925050503d8060008114611754576040519150601f19603f3d011682016040523d82523d6000602084013e611759565b606091505b509150915061176a87838387611776565b92505050949350505050565b606083156117d9576000835114156117d157611791856117ec565b6117d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c790611fe9565b60405180910390fd5b5b8290506117e4565b6117e3838361180f565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000825111156118225781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118569190611fa7565b60405180910390fd5b60008135905061186e8161241b565b92915050565b6000815190506118838161241b565b92915050565b60008151905061189881612432565b92915050565b6000815190506118ad81612449565b92915050565b6000813590506118c281612460565b92915050565b6000815190506118d781612460565b92915050565b6000602082840312156118f3576118f26122d2565b5b600061190184828501611874565b91505092915050565b60008060408385031215611921576119206122d2565b5b600061192f8582860161185f565b9250506020611940858286016118b3565b9150509250929050565b60008060008060808587031215611964576119636122d2565b5b60006119728782880161185f565b9450506020611983878288016118b3565b93505060406119948782880161185f565b92505060606119a5878288016118b3565b91505092959194509250565b6000806000606084860312156119ca576119c96122d2565b5b60006119d88682870161185f565b93505060206119e9868287016118b3565b92505060406119fa868287016118b3565b9150509250925092565b600060208284031215611a1a57611a196122d2565b5b6000611a2884828501611889565b91505092915050565b600060208284031215611a4757611a466122d2565b5b6000611a558482850161189e565b91505092915050565b600060208284031215611a7457611a736122d2565b5b6000611a82848285016118c8565b91505092915050565b611a948161217f565b82525050565b611aa38161217f565b82525050565b611aba611ab58261217f565b61226d565b82525050565b611ac981612191565b82525050565b6000611ada826120e6565b611ae481856120fc565b9350611af481856020860161223a565b611afd816122d7565b840191505092915050565b6000611b13826120e6565b611b1d818561210d565b9350611b2d81856020860161223a565b80840191505092915050565b611b42816121f2565b82525050565b611b5181612204565b82525050565b6000611b62826120f1565b611b6c8185612118565b9350611b7c81856020860161223a565b611b85816122d7565b840191505092915050565b6000611b9d602683612118565b9150611ba882612302565b604082019050919050565b6000611bc060008361210d565b9150611bcb82612351565b600082019050919050565b6000611be3601d83612118565b9150611bee82612354565b602082019050919050565b6000611c06602a83612118565b9150611c118261237d565b604082019050919050565b6000611c29603683612118565b9150611c34826123cc565b604082019050919050565b600060a0830160008301518482036000860152611c5c8282611acf565b9150506020830151611c716020860182611a8b565b506040830151611c846040860182611d9b565b506060830151611c976060860182611d9b565b506080830151611caa6080860182611d9b565b508091505092915050565b61010082016000820151611ccc6000850182611a8b565b506020820151611cdf6020850182611a8b565b506040820151611cf26040850182611d66565b506060820151611d056060850182611a8b565b506080820151611d186080850182611d9b565b5060a0820151611d2b60a0850182611d9b565b5060c0820151611d3e60c0850182611d9b565b5060e0820151611d5160e0850182611d57565b50505050565b611d60816121b9565b82525050565b611d6f816121d9565b82525050565b611d7e816121d9565b82525050565b611d95611d90826121d9565b612291565b82525050565b611da4816121e8565b82525050565b611db3816121e8565b82525050565b6000611dc58288611aa9565b601482019150611dd58287611d84565b600382019150611de58286611aa9565b601482019150611df58285611d84565b600382019150611e058284611aa9565b6014820191508190509695505050505050565b6000611e248284611b08565b915081905092915050565b6000611e3a82611bb3565b9150819050919050565b6000602082019050611e596000830184611a9a565b92915050565b6000604082019050611e746000830185611a9a565b611e816020830184611a9a565b9392505050565b6000606082019050611e9d6000830186611a9a565b611eaa6020830185611a9a565b611eb76040830184611d75565b949350505050565b6000606082019050611ed46000830186611a9a565b611ee16020830185611a9a565b611eee6040830184611daa565b949350505050565b6000604082019050611f0b6000830185611a9a565b611f186020830184611daa565b9392505050565b6000606082019050611f346000830186611a9a565b611f416020830185611daa565b611f4e6040830184611daa565b949350505050565b6000602082019050611f6b6000830184611ac0565b92915050565b6000602082019050611f866000830184611b39565b92915050565b6000602082019050611fa16000830184611b48565b92915050565b60006020820190508181036000830152611fc18184611b57565b905092915050565b60006020820190508181036000830152611fe281611b90565b9050919050565b6000602082019050818103600083015261200281611bd6565b9050919050565b6000602082019050818103600083015261202281611bf9565b9050919050565b6000602082019050818103600083015261204281611c1c565b9050919050565b600060208201905081810360008301526120638184611c3f565b905092915050565b6000610100820190506120816000830184611cb5565b92915050565b600060208201905061209c6000830184611d75565b92915050565b60006020820190506120b76000830184611daa565b92915050565b60006040820190506120d26000830185611daa565b6120df6020830184611daa565b9392505050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000612134826121e8565b915061213f836121e8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612174576121736122a3565b5b828201905092915050565b600061218a826121b9565b9050919050565b60008115159050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062ffffff82169050919050565b6000819050919050565b60006121fd82612216565b9050919050565b600061220f82612216565b9050919050565b600061222182612228565b9050919050565b6000612233826121b9565b9050919050565b60005b8381101561225857808201518184015260208101905061223d565b83811115612267576000848401525b50505050565b60006122788261227f565b9050919050565b600061228a826122f5565b9050919050565b600061229c826122e8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b60008160e81b9050919050565b60008160601b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60008201527f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000602082015250565b6124248161217f565b811461242f57600080fd5b50565b61243b81612191565b811461244657600080fd5b50565b6124528161219d565b811461245d57600080fd5b50565b612469816121e8565b811461247457600080fd5b5056fea26469706673582212205b01f0993d1aca09a588ccda9fc1b26d546e37338ba85cdc92932152534aeee064736f6c63430008070033", } // ZetaTokenConsumerUniV3ABI is the input ABI used to generate the binding from. @@ -44,7 +44,7 @@ var ZetaTokenConsumerUniV3ABI = ZetaTokenConsumerUniV3MetaData.ABI var ZetaTokenConsumerUniV3Bin = ZetaTokenConsumerUniV3MetaData.Bin // DeployZetaTokenConsumerUniV3 deploys a new Ethereum contract, binding an instance of ZetaTokenConsumerUniV3 to it. -func DeployZetaTokenConsumerUniV3(auth *bind.TransactOpts, backend bind.ContractBackend, zetaToken_ common.Address, uniswapV3Router_ common.Address, quoter_ common.Address, WETH9Address_ common.Address, zetaPoolFee_ *big.Int, tokenPoolFee_ *big.Int) (common.Address, *types.Transaction, *ZetaTokenConsumerUniV3, error) { +func DeployZetaTokenConsumerUniV3(auth *bind.TransactOpts, backend bind.ContractBackend, zetaToken_ common.Address, uniswapV3Router_ common.Address, uniswapV3Factory_ common.Address, WETH9Address_ common.Address, zetaPoolFee_ *big.Int, tokenPoolFee_ *big.Int) (common.Address, *types.Transaction, *ZetaTokenConsumerUniV3, error) { parsed, err := ZetaTokenConsumerUniV3MetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err @@ -53,7 +53,7 @@ func DeployZetaTokenConsumerUniV3(auth *bind.TransactOpts, backend bind.Contract return common.Address{}, nil, nil, errors.New("GetABI returned nil") } - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ZetaTokenConsumerUniV3Bin), backend, zetaToken_, uniswapV3Router_, quoter_, WETH9Address_, zetaPoolFee_, tokenPoolFee_) + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ZetaTokenConsumerUniV3Bin), backend, zetaToken_, uniswapV3Router_, uniswapV3Factory_, WETH9Address_, zetaPoolFee_, tokenPoolFee_) if err != nil { return common.Address{}, nil, nil, err } @@ -202,12 +202,12 @@ func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3TransactorRaw) Transact(opt return _ZetaTokenConsumerUniV3.Contract.contract.Transact(opts, method, params...) } -// Quoter is a free data retrieval call binding the contract method 0xc6bbd5a7. +// WETH9Address is a free data retrieval call binding the contract method 0xc469cf14. // -// Solidity: function quoter() view returns(address) -func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Caller) Quoter(opts *bind.CallOpts) (common.Address, error) { +// Solidity: function WETH9Address() view returns(address) +func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Caller) WETH9Address(opts *bind.CallOpts) (common.Address, error) { var out []interface{} - err := _ZetaTokenConsumerUniV3.contract.Call(opts, &out, "quoter") + err := _ZetaTokenConsumerUniV3.contract.Call(opts, &out, "WETH9Address") if err != nil { return *new(common.Address), err @@ -219,18 +219,49 @@ func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Caller) Quoter(opts *bind.C } -// Quoter is a free data retrieval call binding the contract method 0xc6bbd5a7. +// WETH9Address is a free data retrieval call binding the contract method 0xc469cf14. // -// Solidity: function quoter() view returns(address) -func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Session) Quoter() (common.Address, error) { - return _ZetaTokenConsumerUniV3.Contract.Quoter(&_ZetaTokenConsumerUniV3.CallOpts) +// Solidity: function WETH9Address() view returns(address) +func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Session) WETH9Address() (common.Address, error) { + return _ZetaTokenConsumerUniV3.Contract.WETH9Address(&_ZetaTokenConsumerUniV3.CallOpts) } -// Quoter is a free data retrieval call binding the contract method 0xc6bbd5a7. +// WETH9Address is a free data retrieval call binding the contract method 0xc469cf14. // -// Solidity: function quoter() view returns(address) -func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3CallerSession) Quoter() (common.Address, error) { - return _ZetaTokenConsumerUniV3.Contract.Quoter(&_ZetaTokenConsumerUniV3.CallOpts) +// Solidity: function WETH9Address() view returns(address) +func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3CallerSession) WETH9Address() (common.Address, error) { + return _ZetaTokenConsumerUniV3.Contract.WETH9Address(&_ZetaTokenConsumerUniV3.CallOpts) +} + +// HasZetaLiquidity is a free data retrieval call binding the contract method 0x80801f84. +// +// Solidity: function hasZetaLiquidity() view returns(bool) +func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Caller) HasZetaLiquidity(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _ZetaTokenConsumerUniV3.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 (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Session) HasZetaLiquidity() (bool, error) { + return _ZetaTokenConsumerUniV3.Contract.HasZetaLiquidity(&_ZetaTokenConsumerUniV3.CallOpts) +} + +// HasZetaLiquidity is a free data retrieval call binding the contract method 0x80801f84. +// +// Solidity: function hasZetaLiquidity() view returns(bool) +func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3CallerSession) HasZetaLiquidity() (bool, error) { + return _ZetaTokenConsumerUniV3.Contract.HasZetaLiquidity(&_ZetaTokenConsumerUniV3.CallOpts) } // TokenPoolFee is a free data retrieval call binding the contract method 0x5d9dfdde. @@ -264,6 +295,37 @@ func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3CallerSession) TokenPoolFee return _ZetaTokenConsumerUniV3.Contract.TokenPoolFee(&_ZetaTokenConsumerUniV3.CallOpts) } +// UniswapV3Factory is a free data retrieval call binding the contract method 0x5b549182. +// +// Solidity: function uniswapV3Factory() view returns(address) +func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Caller) UniswapV3Factory(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZetaTokenConsumerUniV3.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 (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Session) UniswapV3Factory() (common.Address, error) { + return _ZetaTokenConsumerUniV3.Contract.UniswapV3Factory(&_ZetaTokenConsumerUniV3.CallOpts) +} + +// UniswapV3Factory is a free data retrieval call binding the contract method 0x5b549182. +// +// Solidity: function uniswapV3Factory() view returns(address) +func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3CallerSession) UniswapV3Factory() (common.Address, error) { + return _ZetaTokenConsumerUniV3.Contract.UniswapV3Factory(&_ZetaTokenConsumerUniV3.CallOpts) +} + // UniswapV3Router is a free data retrieval call binding the contract method 0x2c76d7a6. // // Solidity: function uniswapV3Router() view returns(address) diff --git a/pkg/contracts/evm/zetatokenconsumeruniv3.strategy.sol/zetatokenconsumeruniv3errors.go b/pkg/contracts/evm/tools/zetatokenconsumeruniv3.strategy.sol/zetatokenconsumeruniv3errors.go similarity index 100% rename from pkg/contracts/evm/zetatokenconsumeruniv3.strategy.sol/zetatokenconsumeruniv3errors.go rename to pkg/contracts/evm/tools/zetatokenconsumeruniv3.strategy.sol/zetatokenconsumeruniv3errors.go diff --git a/pkg/contracts/evm/zeta.eth.sol/zetaeth.go b/pkg/contracts/evm/zeta.eth.sol/zetaeth.go index dd456f36..9bfabaa5 100644 --- a/pkg/contracts/evm/zeta.eth.sol/zetaeth.go +++ b/pkg/contracts/evm/zeta.eth.sol/zetaeth.go @@ -31,8 +31,8 @@ var ( // ZetaEthMetaData contains all meta data concerning the ZetaEth contract. var ZetaEthMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"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: "0x60806040523480156200001157600080fd5b50604051620019d7380380620019d7833981810160405281019062000037919062000365565b6040518060400160405280600481526020017f5a657461000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f5a455441000000000000000000000000000000000000000000000000000000008152508160039080519060200190620000bb9291906200029e565b508060049080519060200190620000d49291906200029e565b5050506200011633620000ec6200011d60201b60201c565b60ff16600a620000fd9190620004d7565b836200010a919062000614565b6200012660201b60201c565b5062000768565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000199576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200019090620003cf565b60405180910390fd5b620001ad600083836200029460201b60201c565b8060026000828254620001c191906200041f565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620002749190620003f1565b60405180910390a362000290600083836200029960201b60201c565b5050565b505050565b505050565b828054620002ac906200067f565b90600052602060002090601f016020900481019282620002d057600085556200031c565b82601f10620002eb57805160ff19168380011785556200031c565b828001600101855582156200031c579182015b828111156200031b578251825591602001919060010190620002fe565b5b5090506200032b91906200032f565b5090565b5b808211156200034a57600081600090555060010162000330565b5090565b6000815190506200035f816200074e565b92915050565b6000602082840312156200037e576200037d62000713565b5b60006200038e848285016200034e565b91505092915050565b6000620003a6601f836200040e565b9150620003b38262000725565b602082019050919050565b620003c98162000675565b82525050565b60006020820190508181036000830152620003ea8162000397565b9050919050565b6000602082019050620004086000830184620003be565b92915050565b600082825260208201905092915050565b60006200042c8262000675565b9150620004398362000675565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620004715762000470620006b5565b5b828201905092915050565b6000808291508390505b6001851115620004ce57808604811115620004a657620004a5620006b5565b5b6001851615620004b65780820291505b8081029050620004c68562000718565b945062000486565b94509492505050565b6000620004e48262000675565b9150620004f18362000675565b9250620005207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000528565b905092915050565b6000826200053a57600190506200060d565b816200054a57600090506200060d565b81600181146200056357600281146200056e57620005a4565b60019150506200060d565b60ff841115620005835762000582620006b5565b5b8360020a9150848211156200059d576200059c620006b5565b5b506200060d565b5060208310610133831016604e8410600b8410161715620005de5782820a905083811115620005d857620005d7620006b5565b5b6200060d565b620005ed84848460016200047c565b92509050818404811115620006075762000606620006b5565b5b81810290505b9392505050565b6000620006218262000675565b91506200062e8362000675565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200066a5762000669620006b5565b5b828202905092915050565b6000819050919050565b600060028204905060018216806200069857607f821691505b60208210811415620006af57620006ae620006e4565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b60008160011c9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b620007598162000675565b81146200076557600080fd5b50565b61125f80620007786000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461016857806370a082311461019857806395d89b41146101c8578063a457c2d7146101e6578063a9059cbb14610216578063dd62ed3e14610246576100a9565b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100fc57806323b872dd1461011a578063313ce5671461014a575b600080fd5b6100b6610276565b6040516100c39190610d20565b60405180910390f35b6100e660048036038101906100e19190610b6a565b610308565b6040516100f39190610d05565b60405180910390f35b61010461032b565b6040516101119190610e22565b60405180910390f35b610134600480360381019061012f9190610b17565b610335565b6040516101419190610d05565b60405180910390f35b610152610364565b60405161015f9190610e3d565b60405180910390f35b610182600480360381019061017d9190610b6a565b61036d565b60405161018f9190610d05565b60405180910390f35b6101b260048036038101906101ad9190610aaa565b6103a4565b6040516101bf9190610e22565b60405180910390f35b6101d06103ec565b6040516101dd9190610d20565b60405180910390f35b61020060048036038101906101fb9190610b6a565b61047e565b60405161020d9190610d05565b60405180910390f35b610230600480360381019061022b9190610b6a565b6104f5565b60405161023d9190610d05565b60405180910390f35b610260600480360381019061025b9190610ad7565b610518565b60405161026d9190610e22565b60405180910390f35b60606003805461028590610f52565b80601f01602080910402602001604051908101604052809291908181526020018280546102b190610f52565b80156102fe5780601f106102d3576101008083540402835291602001916102fe565b820191906000526020600020905b8154815290600101906020018083116102e157829003601f168201915b5050505050905090565b60008061031361059f565b90506103208185856105a7565b600191505092915050565b6000600254905090565b60008061034061059f565b905061034d858285610772565b6103588585856107fe565b60019150509392505050565b60006012905090565b60008061037861059f565b905061039981858561038a8589610518565b6103949190610e74565b6105a7565b600191505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6060600480546103fb90610f52565b80601f016020809104026020016040519081016040528092919081815260200182805461042790610f52565b80156104745780601f1061044957610100808354040283529160200191610474565b820191906000526020600020905b81548152906001019060200180831161045757829003601f168201915b5050505050905090565b60008061048961059f565b905060006104978286610518565b9050838110156104dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d390610e02565b60405180910390fd5b6104e982868684036105a7565b60019250505092915050565b60008061050061059f565b905061050d8185856107fe565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610617576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060e90610de2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610687576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067e90610d62565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516107659190610e22565b60405180910390a3505050565b600061077e8484610518565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107f857818110156107ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e190610d82565b60405180910390fd5b6107f784848484036105a7565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561086e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086590610dc2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156108de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d590610d42565b60405180910390fd5b6108e9838383610a76565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561096f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096690610da2565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a5d9190610e22565b60405180910390a3610a70848484610a7b565b50505050565b505050565b505050565b600081359050610a8f816111fb565b92915050565b600081359050610aa481611212565b92915050565b600060208284031215610ac057610abf610fe2565b5b6000610ace84828501610a80565b91505092915050565b60008060408385031215610aee57610aed610fe2565b5b6000610afc85828601610a80565b9250506020610b0d85828601610a80565b9150509250929050565b600080600060608486031215610b3057610b2f610fe2565b5b6000610b3e86828701610a80565b9350506020610b4f86828701610a80565b9250506040610b6086828701610a95565b9150509250925092565b60008060408385031215610b8157610b80610fe2565b5b6000610b8f85828601610a80565b9250506020610ba085828601610a95565b9150509250929050565b610bb381610edc565b82525050565b6000610bc482610e58565b610bce8185610e63565b9350610bde818560208601610f1f565b610be781610fe7565b840191505092915050565b6000610bff602383610e63565b9150610c0a82610ff8565b604082019050919050565b6000610c22602283610e63565b9150610c2d82611047565b604082019050919050565b6000610c45601d83610e63565b9150610c5082611096565b602082019050919050565b6000610c68602683610e63565b9150610c73826110bf565b604082019050919050565b6000610c8b602583610e63565b9150610c968261110e565b604082019050919050565b6000610cae602483610e63565b9150610cb98261115d565b604082019050919050565b6000610cd1602583610e63565b9150610cdc826111ac565b604082019050919050565b610cf081610f08565b82525050565b610cff81610f12565b82525050565b6000602082019050610d1a6000830184610baa565b92915050565b60006020820190508181036000830152610d3a8184610bb9565b905092915050565b60006020820190508181036000830152610d5b81610bf2565b9050919050565b60006020820190508181036000830152610d7b81610c15565b9050919050565b60006020820190508181036000830152610d9b81610c38565b9050919050565b60006020820190508181036000830152610dbb81610c5b565b9050919050565b60006020820190508181036000830152610ddb81610c7e565b9050919050565b60006020820190508181036000830152610dfb81610ca1565b9050919050565b60006020820190508181036000830152610e1b81610cc4565b9050919050565b6000602082019050610e376000830184610ce7565b92915050565b6000602082019050610e526000830184610cf6565b92915050565b600081519050919050565b600082825260208201905092915050565b6000610e7f82610f08565b9150610e8a83610f08565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610ebf57610ebe610f84565b5b828201905092915050565b6000610ed582610ee8565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015610f3d578082015181840152602081019050610f22565b83811115610f4c576000848401525b50505050565b60006002820490506001821680610f6a57607f821691505b60208210811415610f7e57610f7d610fb3565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b61120481610eca565b811461120f57600080fd5b50565b61121b81610f08565b811461122657600080fd5b5056fea2646970667358221220608439435ac4c26d99ca9b00e1b682e8cdea961755ebe9759555a9f6740abcff64736f6c63430008070033", + ABI: "[{\"inputs\":[{\"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: "0x60806040523480156200001157600080fd5b5060405162001a5238038062001a5283398181016040528101906200003791906200037d565b6040518060400160405280600481526020017f5a657461000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f5a455441000000000000000000000000000000000000000000000000000000008152508160039080519060200190620000bb9291906200029f565b508060049080519060200190620000d49291906200029f565b5050506200011682620000ec6200011e60201b60201c565b60ff16600a620000fd919062000504565b836200010a919062000641565b6200012760201b60201c565b5050620007e3565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200019a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200019190620003fc565b60405180910390fd5b620001ae600083836200029560201b60201c565b8060026000828254620001c291906200044c565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200027591906200041e565b60405180910390a362000291600083836200029a60201b60201c565b5050565b505050565b505050565b828054620002ad90620006e0565b90600052602060002090601f016020900481019282620002d157600085556200031d565b82601f10620002ec57805160ff19168380011785556200031d565b828001600101855582156200031d579182015b828111156200031c578251825591602001919060010190620002ff565b5b5090506200032c919062000330565b5090565b5b808211156200034b57600081600090555060010162000331565b5090565b6000815190506200036081620007af565b92915050565b6000815190506200037781620007c9565b92915050565b6000806040838503121562000397576200039662000774565b5b6000620003a7858286016200034f565b9250506020620003ba8582860162000366565b9150509250929050565b6000620003d3601f836200043b565b9150620003e08262000786565b602082019050919050565b620003f681620006d6565b82525050565b600060208201905081810360008301526200041781620003c4565b9050919050565b6000602082019050620004356000830184620003eb565b92915050565b600082825260208201905092915050565b60006200045982620006d6565b91506200046683620006d6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156200049e576200049d62000716565b5b828201905092915050565b6000808291508390505b6001851115620004fb57808604811115620004d357620004d262000716565b5b6001851615620004e35780820291505b8081029050620004f38562000779565b9450620004b3565b94509492505050565b60006200051182620006d6565b91506200051e83620006d6565b92506200054d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000555565b905092915050565b6000826200056757600190506200063a565b816200057757600090506200063a565b81600181146200059057600281146200059b57620005d1565b60019150506200063a565b60ff841115620005b057620005af62000716565b5b8360020a915084821115620005ca57620005c962000716565b5b506200063a565b5060208310610133831016604e8410600b84101617156200060b5782820a90508381111562000605576200060462000716565b5b6200063a565b6200061a8484846001620004a9565b9250905081840481111562000634576200063362000716565b5b81810290505b9392505050565b60006200064e82620006d6565b91506200065b83620006d6565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000697576200069662000716565b5b828202905092915050565b6000620006af82620006b6565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006002820490506001821680620006f957607f821691505b6020821081141562000710576200070f62000745565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b60008160011c9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b620007ba81620006a2565b8114620007c657600080fd5b50565b620007d481620006d6565b8114620007e057600080fd5b50565b61125f80620007f36000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461016857806370a082311461019857806395d89b41146101c8578063a457c2d7146101e6578063a9059cbb14610216578063dd62ed3e14610246576100a9565b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100fc57806323b872dd1461011a578063313ce5671461014a575b600080fd5b6100b6610276565b6040516100c39190610d20565b60405180910390f35b6100e660048036038101906100e19190610b6a565b610308565b6040516100f39190610d05565b60405180910390f35b61010461032b565b6040516101119190610e22565b60405180910390f35b610134600480360381019061012f9190610b17565b610335565b6040516101419190610d05565b60405180910390f35b610152610364565b60405161015f9190610e3d565b60405180910390f35b610182600480360381019061017d9190610b6a565b61036d565b60405161018f9190610d05565b60405180910390f35b6101b260048036038101906101ad9190610aaa565b6103a4565b6040516101bf9190610e22565b60405180910390f35b6101d06103ec565b6040516101dd9190610d20565b60405180910390f35b61020060048036038101906101fb9190610b6a565b61047e565b60405161020d9190610d05565b60405180910390f35b610230600480360381019061022b9190610b6a565b6104f5565b60405161023d9190610d05565b60405180910390f35b610260600480360381019061025b9190610ad7565b610518565b60405161026d9190610e22565b60405180910390f35b60606003805461028590610f52565b80601f01602080910402602001604051908101604052809291908181526020018280546102b190610f52565b80156102fe5780601f106102d3576101008083540402835291602001916102fe565b820191906000526020600020905b8154815290600101906020018083116102e157829003601f168201915b5050505050905090565b60008061031361059f565b90506103208185856105a7565b600191505092915050565b6000600254905090565b60008061034061059f565b905061034d858285610772565b6103588585856107fe565b60019150509392505050565b60006012905090565b60008061037861059f565b905061039981858561038a8589610518565b6103949190610e74565b6105a7565b600191505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6060600480546103fb90610f52565b80601f016020809104026020016040519081016040528092919081815260200182805461042790610f52565b80156104745780601f1061044957610100808354040283529160200191610474565b820191906000526020600020905b81548152906001019060200180831161045757829003601f168201915b5050505050905090565b60008061048961059f565b905060006104978286610518565b9050838110156104dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d390610e02565b60405180910390fd5b6104e982868684036105a7565b60019250505092915050565b60008061050061059f565b905061050d8185856107fe565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610617576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060e90610de2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610687576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067e90610d62565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516107659190610e22565b60405180910390a3505050565b600061077e8484610518565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107f857818110156107ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e190610d82565b60405180910390fd5b6107f784848484036105a7565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561086e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086590610dc2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156108de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d590610d42565b60405180910390fd5b6108e9838383610a76565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561096f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096690610da2565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a5d9190610e22565b60405180910390a3610a70848484610a7b565b50505050565b505050565b505050565b600081359050610a8f816111fb565b92915050565b600081359050610aa481611212565b92915050565b600060208284031215610ac057610abf610fe2565b5b6000610ace84828501610a80565b91505092915050565b60008060408385031215610aee57610aed610fe2565b5b6000610afc85828601610a80565b9250506020610b0d85828601610a80565b9150509250929050565b600080600060608486031215610b3057610b2f610fe2565b5b6000610b3e86828701610a80565b9350506020610b4f86828701610a80565b9250506040610b6086828701610a95565b9150509250925092565b60008060408385031215610b8157610b80610fe2565b5b6000610b8f85828601610a80565b9250506020610ba085828601610a95565b9150509250929050565b610bb381610edc565b82525050565b6000610bc482610e58565b610bce8185610e63565b9350610bde818560208601610f1f565b610be781610fe7565b840191505092915050565b6000610bff602383610e63565b9150610c0a82610ff8565b604082019050919050565b6000610c22602283610e63565b9150610c2d82611047565b604082019050919050565b6000610c45601d83610e63565b9150610c5082611096565b602082019050919050565b6000610c68602683610e63565b9150610c73826110bf565b604082019050919050565b6000610c8b602583610e63565b9150610c968261110e565b604082019050919050565b6000610cae602483610e63565b9150610cb98261115d565b604082019050919050565b6000610cd1602583610e63565b9150610cdc826111ac565b604082019050919050565b610cf081610f08565b82525050565b610cff81610f12565b82525050565b6000602082019050610d1a6000830184610baa565b92915050565b60006020820190508181036000830152610d3a8184610bb9565b905092915050565b60006020820190508181036000830152610d5b81610bf2565b9050919050565b60006020820190508181036000830152610d7b81610c15565b9050919050565b60006020820190508181036000830152610d9b81610c38565b9050919050565b60006020820190508181036000830152610dbb81610c5b565b9050919050565b60006020820190508181036000830152610ddb81610c7e565b9050919050565b60006020820190508181036000830152610dfb81610ca1565b9050919050565b60006020820190508181036000830152610e1b81610cc4565b9050919050565b6000602082019050610e376000830184610ce7565b92915050565b6000602082019050610e526000830184610cf6565b92915050565b600081519050919050565b600082825260208201905092915050565b6000610e7f82610f08565b9150610e8a83610f08565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610ebf57610ebe610f84565b5b828201905092915050565b6000610ed582610ee8565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015610f3d578082015181840152602081019050610f22565b83811115610f4c576000848401525b50505050565b60006002820490506001821680610f6a57607f821691505b60208210811415610f7e57610f7d610fb3565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b61120481610eca565b811461120f57600080fd5b50565b61121b81610f08565b811461122657600080fd5b5056fea2646970667358221220e33277034a5236435f4dc6a93d4c4dc71fb8a6be9f4a752ea3f374446caf920b64736f6c63430008070033", } // ZetaEthABI is the input ABI used to generate the binding from. @@ -44,7 +44,7 @@ var ZetaEthABI = ZetaEthMetaData.ABI var ZetaEthBin = ZetaEthMetaData.Bin // DeployZetaEth deploys a new Ethereum contract, binding an instance of ZetaEth to it. -func DeployZetaEth(auth *bind.TransactOpts, backend bind.ContractBackend, initialSupply *big.Int) (common.Address, *types.Transaction, *ZetaEth, error) { +func DeployZetaEth(auth *bind.TransactOpts, backend bind.ContractBackend, creator common.Address, initialSupply *big.Int) (common.Address, *types.Transaction, *ZetaEth, error) { parsed, err := ZetaEthMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err @@ -53,7 +53,7 @@ func DeployZetaEth(auth *bind.TransactOpts, backend bind.ContractBackend, initia return common.Address{}, nil, nil, errors.New("GetABI returned nil") } - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ZetaEthBin), backend, initialSupply) + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ZetaEthBin), backend, creator, initialSupply) if err != nil { return common.Address{}, nil, nil, err } 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 0318938e..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: "0x60a06040523480156200001157600080fd5b50604051620012c3380380620012c383398181016040528101906200003791906200027c565b60008060006101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480620000b95750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80620000f15750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80620001295750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b1562000161576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b8152505082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505062000341565b600081519050620002768162000327565b92915050565b6000806000806080858703121562000299576200029862000322565b5b6000620002a98782880162000265565b9450506020620002bc8782880162000265565b9350506040620002cf8782880162000265565b9250506060620002e28782880162000265565b91505092959194509250565b6000620002fb8262000302565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200033281620002ee565b81146200033e57600080fd5b50565b60805160601c610f636200036060003960006102160152610f636000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636128480f1161008c5780639122c344116100665780639122c344146101a2578063942a5e16146101be578063ec026901146101da578063f7fb869b146101f6576100cf565b80636128480f14610172578063779e3b631461018e5780638456cb5914610198576100cf565b806321e093b1146100d457806329dd214d146100f2578063328a01d01461010e5780633f4ba83a1461012c5780635b112591146101365780635c975abb14610154575b600080fd5b6100dc610214565b6040516100e99190610d76565b60405180910390f35b61010c60048036038101906101079190610bfa565b610238565b005b610116610242565b6040516101239190610d76565b60405180910390f35b610134610268565b005b61013e610304565b60405161014b9190610d76565b60405180910390f35b61015c61032a565b6040516101699190610dba565b60405180910390f35b61018c60048036038101906101879190610aeb565b610340565b005b6101966104b6565b005b6101a0610636565b005b6101bc60048036038101906101b79190610aeb565b6106d2565b005b6101d860048036038101906101d39190610b18565b6108a4565b005b6101f460048036038101906101ef9190610cc9565b6108af565b005b6101fe6108b2565b60405161020b9190610d76565b60405180910390f35b7f000000000000000000000000000000000000000000000000000000000000000081565b5050505050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146102fa57336040517f4677a0d30000000000000000000000000000000000000000000000000000000081526004016102f19190610d76565b60405180910390fd5b6103026108d8565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900460ff16905090565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103d257336040517f4677a0d30000000000000000000000000000000000000000000000000000000081526004016103c99190610d76565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610439576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd41d83655d484bdf299598751c371b2d92088667266fe3774b25a97bdd5d039733826040516104ab929190610d91565b60405180910390a150565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461054857336040517fe700765e00000000000000000000000000000000000000000000000000000000815260040161053f9190610d76565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156105d1576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106c857336040517f4677a0d30000000000000000000000000000000000000000000000000000000081526004016106bf9190610d76565b60405180910390fd5b6106d061093a565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561077e5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b156107c057336040517fcdfcef970000000000000000000000000000000000000000000000000000000081526004016107b79190610d76565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610827576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff3382604051610899929190610d91565b60405180910390a150565b505050505050505050565b50565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6108e061099c565b60008060006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6109236109e5565b6040516109309190610d76565b60405180910390a1565b6109426109ed565b60016000806101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586109856109e5565b6040516109929190610d76565b60405180910390a1565b6109a461032a565b6109e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109da90610dd5565b60405180910390fd5b565b600033905090565b6109f561032a565b15610a35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2c90610df5565b60405180910390fd5b565b600081359050610a4681610ee8565b92915050565b600081359050610a5b81610eff565b92915050565b60008083601f840112610a7757610a76610e7d565b5b8235905067ffffffffffffffff811115610a9457610a93610e78565b5b602083019150836001820283011115610ab057610aaf610e87565b5b9250929050565b600060c08284031215610acd57610acc610e82565b5b81905092915050565b600081359050610ae581610f16565b92915050565b600060208284031215610b0157610b00610e91565b5b6000610b0f84828501610a37565b91505092915050565b600080600080600080600080600060e08a8c031215610b3a57610b39610e91565b5b6000610b488c828d01610a37565b9950506020610b598c828d01610ad6565b98505060408a013567ffffffffffffffff811115610b7a57610b79610e8c565b5b610b868c828d01610a61565b97509750506060610b998c828d01610ad6565b9550506080610baa8c828d01610ad6565b94505060a08a013567ffffffffffffffff811115610bcb57610bca610e8c565b5b610bd78c828d01610a61565b935093505060c0610bea8c828d01610a4c565b9150509295985092959850929598565b60008060008060008060008060c0898b031215610c1a57610c19610e91565b5b600089013567ffffffffffffffff811115610c3857610c37610e8c565b5b610c448b828c01610a61565b98509850506020610c578b828c01610ad6565b9650506040610c688b828c01610a37565b9550506060610c798b828c01610ad6565b945050608089013567ffffffffffffffff811115610c9a57610c99610e8c565b5b610ca68b828c01610a61565b935093505060a0610cb98b828c01610a4c565b9150509295985092959890939650565b600060208284031215610cdf57610cde610e91565b5b600082013567ffffffffffffffff811115610cfd57610cfc610e8c565b5b610d0984828501610ab7565b91505092915050565b610d1b81610e26565b82525050565b610d2a81610e38565b82525050565b6000610d3d601483610e15565b9150610d4882610e96565b602082019050919050565b6000610d60601083610e15565b9150610d6b82610ebf565b602082019050919050565b6000602082019050610d8b6000830184610d12565b92915050565b6000604082019050610da66000830185610d12565b610db36020830184610d12565b9392505050565b6000602082019050610dcf6000830184610d21565b92915050565b60006020820190508181036000830152610dee81610d30565b9050919050565b60006020820190508181036000830152610e0e81610d53565b9050919050565b600082825260208201905092915050565b6000610e3182610e4e565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b610ef181610e26565b8114610efc57600080fd5b50565b610f0881610e44565b8114610f1357600080fd5b50565b610f1f81610e6e565b8114610f2a57600080fd5b5056fea264697066735822122091d42cc99d1647645b48218062c24a645660da47f026e339bb2a22289ce06c2564736f6c63430008070033", + 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 d8ce0966..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: "0x60a06040523480156200001157600080fd5b506040516200208b3803806200208b833981810160405281019062000037919062000284565b8383838360008060006101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480620000bd5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80620000f55750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b806200012d5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b1562000165576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b8152505082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050505050505062000349565b6000815190506200027e816200032f565b92915050565b60008060008060808587031215620002a157620002a06200032a565b5b6000620002b1878288016200026d565b9450506020620002c4878288016200026d565b9350506040620002d7878288016200026d565b9250506060620002ea878288016200026d565b91505092959194509250565b600062000303826200030a565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200033a81620002f6565b81146200034657600080fd5b50565b60805160601c611d07620003846000396000818161024f01528181610275015281816103b701528181610d3a0152610fbd0152611d076000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80636128480f1161008c5780639122c344116100665780639122c344146101db578063942a5e16146101f7578063ec02690114610213578063f7fb869b1461022f576100ea565b80636128480f146101ab578063779e3b63146101c75780638456cb59146101d1576100ea565b8063328a01d0116100c8578063328a01d0146101475780633f4ba83a146101655780635b1125911461016f5780635c975abb1461018d576100ea565b806321e093b1146100ef578063252bc8861461010d57806329dd214d1461012b575b600080fd5b6100f761024d565b6040516101049190611828565b60405180910390f35b610115610271565b6040516101229190611a95565b60405180910390f35b610145600480360381019061014091906114df565b610321565b005b61014f61063a565b60405161015c9190611828565b60405180910390f35b61016d610660565b005b6101776106fc565b6040516101849190611828565b60405180910390f35b610195610722565b6040516101a291906119ad565b60405180910390f35b6101c560048036038101906101c091906113a3565b610738565b005b6101cf6108ae565b005b6101d9610a2e565b005b6101f560048036038101906101f091906113a3565b610aca565b005b610211600480360381019061020c91906113d0565b610c9c565b005b61022d600480360381019061022891906115ae565b610fb1565b005b610237611140565b6040516102449190611828565b60405180910390f35b7f000000000000000000000000000000000000000000000000000000000000000081565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016102cc9190611828565b60206040518083038186803b1580156102e457600080fd5b505afa1580156102f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061031c91906115f7565b905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103b357336040517fff70ace20000000000000000000000000000000000000000000000000000000081526004016103aa9190611828565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb87876040518363ffffffff1660e01b815260040161041092919061191f565b602060405180830381600087803b15801561042a57600080fd5b505af115801561043e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046291906114b2565b90508061049b576040517f20878f6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008484905011156105d7578573ffffffffffffffffffffffffffffffffffffffff16633749c51a6040518060a001604052808c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505081526020018a81526020018973ffffffffffffffffffffffffffffffffffffffff16815260200188815260200187878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508152506040518263ffffffff1660e01b81526004016105a49190611a51565b600060405180830381600087803b1580156105be57600080fd5b505af11580156105d2573d6000803e3d6000fd5b505050505b818673ffffffffffffffffffffffffffffffffffffffff16887ff1302855733b40d8acb467ee990b6d56c05c80e28ebcabfa6e6f3f57cb50d6988c8c8a8a8a6040516106279594939291906119c8565b60405180910390a4505050505050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106f257336040517f4677a0d30000000000000000000000000000000000000000000000000000000081526004016106e99190611828565b60405180910390fd5b6106fa611166565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900460ff16905090565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107ca57336040517f4677a0d30000000000000000000000000000000000000000000000000000000081526004016107c19190611828565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610831576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd41d83655d484bdf299598751c371b2d92088667266fe3774b25a97bdd5d039733826040516108a3929190611843565b60405180910390a150565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461094057336040517fe700765e0000000000000000000000000000000000000000000000000000000081526004016109379190611828565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156109c9576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ac057336040517f4677a0d3000000000000000000000000000000000000000000000000000000008152600401610ab79190611828565b60405180910390fd5b610ac86111c8565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610b765750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15610bb857336040517fcdfcef97000000000000000000000000000000000000000000000000000000008152600401610baf9190611828565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610c1f576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff3382604051610c91929190611843565b60405180910390a150565b610ca461122a565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d3657336040517fff70ace2000000000000000000000000000000000000000000000000000000008152600401610d2d9190611828565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8b876040518363ffffffff1660e01b8152600401610d9392919061191f565b602060405180830381600087803b158015610dad57600080fd5b505af1158015610dc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de591906114b2565b905080610e1e576040517f20878f6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000848490501115610f60578973ffffffffffffffffffffffffffffffffffffffff16633ff0693c6040518060c001604052808d73ffffffffffffffffffffffffffffffffffffffff1681526020018c81526020018b8b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050815260200189815260200188815260200187878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508152506040518263ffffffff1660e01b8152600401610f2d9190611a73565b600060405180830381600087803b158015610f4757600080fd5b505af1158015610f5b573d6000803e3d6000fd5b505050505b81867f521fb0b407c2eb9b1375530e9b9a569889992140a688bc076aa72c1712012c888c8c8c8c8b8b8b604051610f9d9796959493929190611948565b60405180910390a350505050505050505050565b610fb961122a565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166323b872dd333085608001356040518463ffffffff1660e01b815260040161101c9392919061186c565b602060405180830381600087803b15801561103657600080fd5b505af115801561104a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106e91906114b2565b9050806110a7576040517f20878f6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600001353373ffffffffffffffffffffffffffffffffffffffff167f7ec1c94701e09b1652f3e1d307e60c4b9ebf99aff8c2079fd1d8c585e031c4e4328580602001906110f59190611ab0565b8760800135886040013589806060019061110f9190611ab0565b8b8060a0019061111f9190611ab0565b604051611134999897969594939291906118a3565b60405180910390a35050565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61116e611274565b60008060006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6111b16112bd565b6040516111be9190611828565b60405180910390a1565b6111d061122a565b60016000806101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586112136112bd565b6040516112209190611828565b60405180910390a1565b611232610722565b15611272576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126990611a31565b60405180910390fd5b565b61127c610722565b6112bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b290611a11565b60405180910390fd5b565b600033905090565b6000813590506112d481611c75565b92915050565b6000815190506112e981611c8c565b92915050565b6000813590506112fe81611ca3565b92915050565b60008083601f84011261131a57611319611bea565b5b8235905067ffffffffffffffff81111561133757611336611be5565b5b60208301915083600182028301111561135357611352611bfe565b5b9250929050565b600060c082840312156113705761136f611bf4565b5b81905092915050565b60008135905061138881611cba565b92915050565b60008151905061139d81611cba565b92915050565b6000602082840312156113b9576113b8611c0d565b5b60006113c7848285016112c5565b91505092915050565b600080600080600080600080600060e08a8c0312156113f2576113f1611c0d565b5b60006114008c828d016112c5565b99505060206114118c828d01611379565b98505060408a013567ffffffffffffffff81111561143257611431611c08565b5b61143e8c828d01611304565b975097505060606114518c828d01611379565b95505060806114628c828d01611379565b94505060a08a013567ffffffffffffffff81111561148357611482611c08565b5b61148f8c828d01611304565b935093505060c06114a28c828d016112ef565b9150509295985092959850929598565b6000602082840312156114c8576114c7611c0d565b5b60006114d6848285016112da565b91505092915050565b60008060008060008060008060c0898b0312156114ff576114fe611c0d565b5b600089013567ffffffffffffffff81111561151d5761151c611c08565b5b6115298b828c01611304565b9850985050602061153c8b828c01611379565b965050604061154d8b828c016112c5565b955050606061155e8b828c01611379565b945050608089013567ffffffffffffffff81111561157f5761157e611c08565b5b61158b8b828c01611304565b935093505060a061159e8b828c016112ef565b9150509295985092959890939650565b6000602082840312156115c4576115c3611c0d565b5b600082013567ffffffffffffffff8111156115e2576115e1611c08565b5b6115ee8482850161135a565b91505092915050565b60006020828403121561160d5761160c611c0d565b5b600061161b8482850161138e565b91505092915050565b61162d81611b51565b82525050565b61163c81611b51565b82525050565b61164b81611b63565b82525050565b600061165d8385611b2f565b935061166a838584611ba3565b61167383611c12565b840190509392505050565b600061168982611b13565b6116938185611b1e565b93506116a3818560208601611bb2565b6116ac81611c12565b840191505092915050565b60006116c4601483611b40565b91506116cf82611c23565b602082019050919050565b60006116e7601083611b40565b91506116f282611c4c565b602082019050919050565b600060a083016000830151848203600086015261171a828261167e565b915050602083015161172f602086018261180a565b5060408301516117426040860182611624565b506060830151611755606086018261180a565b506080830151848203608086015261176d828261167e565b9150508091505092915050565b600060c0830160008301516117926000860182611624565b5060208301516117a5602086018261180a565b50604083015184820360408601526117bd828261167e565b91505060608301516117d2606086018261180a565b5060808301516117e5608086018261180a565b5060a083015184820360a08601526117fd828261167e565b9150508091505092915050565b61181381611b99565b82525050565b61182281611b99565b82525050565b600060208201905061183d6000830184611633565b92915050565b60006040820190506118586000830185611633565b6118656020830184611633565b9392505050565b60006060820190506118816000830186611633565b61188e6020830185611633565b61189b6040830184611819565b949350505050565b600060c0820190506118b8600083018c611633565b81810360208301526118cb818a8c611651565b90506118da6040830189611819565b6118e76060830188611819565b81810360808301526118fa818688611651565b905081810360a083015261190f818486611651565b90509a9950505050505050505050565b60006040820190506119346000830185611633565b6119416020830184611819565b9392505050565b600060a08201905061195d600083018a611633565b61196a6020830189611819565b818103604083015261197d818789611651565b905061198c6060830186611819565b818103608083015261199f818486611651565b905098975050505050505050565b60006020820190506119c26000830184611642565b92915050565b600060608201905081810360008301526119e3818789611651565b90506119f26020830186611819565b8181036040830152611a05818486611651565b90509695505050505050565b60006020820190508181036000830152611a2a816116b7565b9050919050565b60006020820190508181036000830152611a4a816116da565b9050919050565b60006020820190508181036000830152611a6b81846116fd565b905092915050565b60006020820190508181036000830152611a8d818461177a565b905092915050565b6000602082019050611aaa6000830184611819565b92915050565b60008083356001602003843603038112611acd57611acc611bf9565b5b80840192508235915067ffffffffffffffff821115611aef57611aee611bef565b5b602083019250600182023603831315611b0b57611b0a611c03565b5b509250929050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611b5c82611b79565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015611bd0578082015181840152602081019050611bb5565b83811115611bdf576000848401525b50505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b611c7e81611b51565b8114611c8957600080fd5b50565b611c9581611b63565b8114611ca057600080fd5b50565b611cac81611b6f565b8114611cb757600080fd5b50565b611cc381611b99565b8114611cce57600080fd5b5056fea2646970667358221220965ae7a7b3e1b1d7f41e45ff8910dbe81398d6dd01a31cdd2642e77a243a809364736f6c63430008070033", + 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 92ad6716..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: "0x60a06040527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6003553480156200003557600080fd5b50604051620022e7380380620022e783398181016040528101906200005b9190620002a8565b8383838360008060006101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480620000e15750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80620001195750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80620001515750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b1562000189576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b8152505082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050505050506200036d565b600081519050620002a28162000353565b92915050565b60008060008060808587031215620002c557620002c46200034e565b5b6000620002d58782880162000291565b9450506020620002e88782880162000291565b9350506040620002fb8782880162000291565b92505060606200030e8782880162000291565b91505092959194509250565b600062000327826200032e565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200035e816200031a565b81146200036a57600080fd5b50565b60805160601c611f31620003b66000396000818161029f015281816102c501528181610408015281816104f601528181610ebe01528181610fac01526111db0152611f316000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80636f8b44b011610097578063942a5e1611610066578063942a5e1614610229578063d5abeb0114610245578063ec02690114610263578063f7fb869b1461027f57610100565b80636f8b44b0146101dd578063779e3b63146101f95780638456cb59146102035780639122c3441461020d57610100565b80633f4ba83a116100d35780633f4ba83a1461017b5780635b112591146101855780635c975abb146101a35780636128480f146101c157610100565b806321e093b114610105578063252bc8861461012357806329dd214d14610141578063328a01d01461015d575b600080fd5b61010d61029d565b60405161011a91906119e4565b60405180910390f35b61012b6102c1565b6040516101389190611c51565b60405180910390f35b61015b6004803603810190610156919061165f565b610371565b005b610165610721565b60405161017291906119e4565b60405180910390f35b610183610747565b005b61018d6107e3565b60405161019a91906119e4565b60405180910390f35b6101ab610809565b6040516101b89190611b69565b60405180910390f35b6101db60048036038101906101d69190611550565b61081f565b005b6101f760048036038101906101f29190611777565b610995565b005b610201610a31565b005b61020b610bb1565b005b61022760048036038101906102229190611550565b610c4d565b005b610243600480360381019061023e919061157d565b610e1f565b005b61024d6111cb565b60405161025a9190611c51565b60405180910390f35b61027d6004803603810190610278919061172e565b6111d1565b005b610287611302565b60405161029491906119e4565b60405180910390f35b7f000000000000000000000000000000000000000000000000000000000000000081565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161031c91906119e4565b60206040518083038186803b15801561033457600080fd5b505afa158015610348573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061036c91906117a4565b905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461040357336040517fff70ace20000000000000000000000000000000000000000000000000000000081526004016103fa91906119e4565b60405180910390fd5b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561046c57600080fd5b505afa158015610480573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a491906117a4565b856104af9190611d0d565b11156104f4576003546040517f3d3dbc830000000000000000000000000000000000000000000000000000000081526004016104eb9190611c51565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e458bee8686846040518463ffffffff1660e01b815260040161055193929190611acd565b600060405180830381600087803b15801561056b57600080fd5b505af115801561057f573d6000803e3d6000fd5b5050505060008383905011156106bf578473ffffffffffffffffffffffffffffffffffffffff16633749c51a6040518060a001604052808b8b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505081526020018981526020018873ffffffffffffffffffffffffffffffffffffffff16815260200187815260200186868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508152506040518263ffffffff1660e01b815260040161068c9190611c0d565b600060405180830381600087803b1580156106a657600080fd5b505af11580156106ba573d6000803e3d6000fd5b505050505b808573ffffffffffffffffffffffffffffffffffffffff16877ff1302855733b40d8acb467ee990b6d56c05c80e28ebcabfa6e6f3f57cb50d6988b8b89898960405161070f959493929190611b84565b60405180910390a45050505050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107d957336040517f4677a0d30000000000000000000000000000000000000000000000000000000081526004016107d091906119e4565b60405180910390fd5b6107e1611328565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900460ff16905090565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108b157336040517f4677a0d30000000000000000000000000000000000000000000000000000000081526004016108a891906119e4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610918576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd41d83655d484bdf299598751c371b2d92088667266fe3774b25a97bdd5d0397338260405161098a9291906119ff565b60405180910390a150565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a2757336040517fff70ace2000000000000000000000000000000000000000000000000000000008152600401610a1e91906119e4565b60405180910390fd5b8060038190555050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ac357336040517fe700765e000000000000000000000000000000000000000000000000000000008152600401610aba91906119e4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610b4c576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c4357336040517f4677a0d3000000000000000000000000000000000000000000000000000000008152600401610c3a91906119e4565b60405180910390fd5b610c4b61138a565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610cf95750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15610d3b57336040517fcdfcef97000000000000000000000000000000000000000000000000000000008152600401610d3291906119e4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610da2576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff3382604051610e149291906119ff565b60405180910390a150565b610e276113ec565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610eb957336040517fff70ace2000000000000000000000000000000000000000000000000000000008152600401610eb091906119e4565b60405180910390fd5b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610f2257600080fd5b505afa158015610f36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5a91906117a4565b85610f659190611d0d565b1115610faa576003546040517f3d3dbc83000000000000000000000000000000000000000000000000000000008152600401610fa19190611c51565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e458bee8a86846040518463ffffffff1660e01b815260040161100793929190611acd565b600060405180830381600087803b15801561102157600080fd5b505af1158015611035573d6000803e3d6000fd5b50505050600083839050111561117b578873ffffffffffffffffffffffffffffffffffffffff16633ff0693c6040518060c001604052808c73ffffffffffffffffffffffffffffffffffffffff1681526020018b81526020018a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050815260200188815260200187815260200186868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508152506040518263ffffffff1660e01b81526004016111489190611c2f565b600060405180830381600087803b15801561116257600080fd5b505af1158015611176573d6000803e3d6000fd5b505050505b80857f521fb0b407c2eb9b1375530e9b9a569889992140a688bc076aa72c1712012c888b8b8b8b8a8a8a6040516111b89796959493929190611b04565b60405180910390a3505050505050505050565b60035481565b6111d96113ec565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166379cc67903383608001356040518363ffffffff1660e01b8152600401611238929190611aa4565b600060405180830381600087803b15801561125257600080fd5b505af1158015611266573d6000803e3d6000fd5b5050505080600001353373ffffffffffffffffffffffffffffffffffffffff167f7ec1c94701e09b1652f3e1d307e60c4b9ebf99aff8c2079fd1d8c585e031c4e4328480602001906112b89190611c6c565b866080013587604001358880606001906112d29190611c6c565b8a8060a001906112e29190611c6c565b6040516112f799989796959493929190611a28565b60405180910390a350565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611330611436565b60008060006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa61137361147f565b60405161138091906119e4565b60405180910390a1565b6113926113ec565b60016000806101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586113d561147f565b6040516113e291906119e4565b60405180910390a1565b6113f4610809565b15611434576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142b90611bed565b60405180910390fd5b565b61143e610809565b61147d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147490611bcd565b60405180910390fd5b565b600033905090565b60008135905061149681611eb6565b92915050565b6000813590506114ab81611ecd565b92915050565b60008083601f8401126114c7576114c6611e2b565b5b8235905067ffffffffffffffff8111156114e4576114e3611e26565b5b602083019150836001820283011115611500576114ff611e3f565b5b9250929050565b600060c0828403121561151d5761151c611e35565b5b81905092915050565b60008135905061153581611ee4565b92915050565b60008151905061154a81611ee4565b92915050565b60006020828403121561156657611565611e4e565b5b600061157484828501611487565b91505092915050565b600080600080600080600080600060e08a8c03121561159f5761159e611e4e565b5b60006115ad8c828d01611487565b99505060206115be8c828d01611526565b98505060408a013567ffffffffffffffff8111156115df576115de611e49565b5b6115eb8c828d016114b1565b975097505060606115fe8c828d01611526565b955050608061160f8c828d01611526565b94505060a08a013567ffffffffffffffff8111156116305761162f611e49565b5b61163c8c828d016114b1565b935093505060c061164f8c828d0161149c565b9150509295985092959850929598565b60008060008060008060008060c0898b03121561167f5761167e611e4e565b5b600089013567ffffffffffffffff81111561169d5761169c611e49565b5b6116a98b828c016114b1565b985098505060206116bc8b828c01611526565b96505060406116cd8b828c01611487565b95505060606116de8b828c01611526565b945050608089013567ffffffffffffffff8111156116ff576116fe611e49565b5b61170b8b828c016114b1565b935093505060a061171e8b828c0161149c565b9150509295985092959890939650565b60006020828403121561174457611743611e4e565b5b600082013567ffffffffffffffff81111561176257611761611e49565b5b61176e84828501611507565b91505092915050565b60006020828403121561178d5761178c611e4e565b5b600061179b84828501611526565b91505092915050565b6000602082840312156117ba576117b9611e4e565b5b60006117c88482850161153b565b91505092915050565b6117da81611d63565b82525050565b6117e981611d63565b82525050565b6117f881611d75565b82525050565b61180781611d81565b82525050565b60006118198385611ceb565b9350611826838584611db5565b61182f83611e53565b840190509392505050565b600061184582611ccf565b61184f8185611cda565b935061185f818560208601611dc4565b61186881611e53565b840191505092915050565b6000611880601483611cfc565b915061188b82611e64565b602082019050919050565b60006118a3601083611cfc565b91506118ae82611e8d565b602082019050919050565b600060a08301600083015184820360008601526118d6828261183a565b91505060208301516118eb60208601826119c6565b5060408301516118fe60408601826117d1565b50606083015161191160608601826119c6565b5060808301518482036080860152611929828261183a565b9150508091505092915050565b600060c08301600083015161194e60008601826117d1565b50602083015161196160208601826119c6565b5060408301518482036040860152611979828261183a565b915050606083015161198e60608601826119c6565b5060808301516119a160808601826119c6565b5060a083015184820360a08601526119b9828261183a565b9150508091505092915050565b6119cf81611dab565b82525050565b6119de81611dab565b82525050565b60006020820190506119f960008301846117e0565b92915050565b6000604082019050611a1460008301856117e0565b611a2160208301846117e0565b9392505050565b600060c082019050611a3d600083018c6117e0565b8181036020830152611a50818a8c61180d565b9050611a5f60408301896119d5565b611a6c60608301886119d5565b8181036080830152611a7f81868861180d565b905081810360a0830152611a9481848661180d565b90509a9950505050505050505050565b6000604082019050611ab960008301856117e0565b611ac660208301846119d5565b9392505050565b6000606082019050611ae260008301866117e0565b611aef60208301856119d5565b611afc60408301846117fe565b949350505050565b600060a082019050611b19600083018a6117e0565b611b2660208301896119d5565b8181036040830152611b3981878961180d565b9050611b4860608301866119d5565b8181036080830152611b5b81848661180d565b905098975050505050505050565b6000602082019050611b7e60008301846117ef565b92915050565b60006060820190508181036000830152611b9f81878961180d565b9050611bae60208301866119d5565b8181036040830152611bc181848661180d565b90509695505050505050565b60006020820190508181036000830152611be681611873565b9050919050565b60006020820190508181036000830152611c0681611896565b9050919050565b60006020820190508181036000830152611c2781846118b9565b905092915050565b60006020820190508181036000830152611c498184611936565b905092915050565b6000602082019050611c6660008301846119d5565b92915050565b60008083356001602003843603038112611c8957611c88611e3a565b5b80840192508235915067ffffffffffffffff821115611cab57611caa611e30565b5b602083019250600182023603831315611cc757611cc6611e44565b5b509250929050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611d1882611dab565b9150611d2383611dab565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611d5857611d57611df7565b5b828201905092915050565b6000611d6e82611d8b565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015611de2578082015181840152602081019050611dc7565b83811115611df1576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b611ebf81611d63565b8114611eca57600080fd5b50565b611ed681611d81565b8114611ee157600080fd5b50565b611eed81611dab565b8114611ef857600080fd5b5056fea2646970667358221220394b14a4b3145b4d15fcca9ea9dbe6283cfa02a8bdf213cd3d4987570ea91ced64736f6c63430008070033", + 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.sol/context.go b/pkg/contracts/zevm/interfaces.sol/context.go deleted file mode 100644 index aa971586..00000000 --- a/pkg/contracts/zevm/interfaces.sol/context.go +++ /dev/null @@ -1,181 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package interfaces - -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 -) - -// ContextMetaData contains all meta data concerning the Context contract. -var ContextMetaData = &bind.MetaData{ - ABI: "[]", -} - -// ContextABI is the input ABI used to generate the binding from. -// Deprecated: Use ContextMetaData.ABI instead. -var ContextABI = ContextMetaData.ABI - -// Context is an auto generated Go binding around an Ethereum contract. -type Context struct { - ContextCaller // Read-only binding to the contract - ContextTransactor // Write-only binding to the contract - ContextFilterer // Log filterer for contract events -} - -// ContextCaller is an auto generated read-only Go binding around an Ethereum contract. -type ContextCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ContextTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ContextTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ContextFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ContextFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ContextSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ContextSession struct { - Contract *Context // 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 -} - -// ContextCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ContextCallerSession struct { - Contract *ContextCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ContextTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ContextTransactorSession struct { - Contract *ContextTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ContextRaw is an auto generated low-level Go binding around an Ethereum contract. -type ContextRaw struct { - Contract *Context // Generic contract binding to access the raw methods on -} - -// ContextCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ContextCallerRaw struct { - Contract *ContextCaller // Generic read-only contract binding to access the raw methods on -} - -// ContextTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ContextTransactorRaw struct { - Contract *ContextTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewContext creates a new instance of Context, bound to a specific deployed contract. -func NewContext(address common.Address, backend bind.ContractBackend) (*Context, error) { - contract, err := bindContext(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &Context{ContextCaller: ContextCaller{contract: contract}, ContextTransactor: ContextTransactor{contract: contract}, ContextFilterer: ContextFilterer{contract: contract}}, nil -} - -// NewContextCaller creates a new read-only instance of Context, bound to a specific deployed contract. -func NewContextCaller(address common.Address, caller bind.ContractCaller) (*ContextCaller, error) { - contract, err := bindContext(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ContextCaller{contract: contract}, nil -} - -// NewContextTransactor creates a new write-only instance of Context, bound to a specific deployed contract. -func NewContextTransactor(address common.Address, transactor bind.ContractTransactor) (*ContextTransactor, error) { - contract, err := bindContext(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ContextTransactor{contract: contract}, nil -} - -// NewContextFilterer creates a new log filterer instance of Context, bound to a specific deployed contract. -func NewContextFilterer(address common.Address, filterer bind.ContractFilterer) (*ContextFilterer, error) { - contract, err := bindContext(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ContextFilterer{contract: contract}, nil -} - -// bindContext binds a generic wrapper to an already deployed contract. -func bindContext(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ContextMetaData.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 (_Context *ContextRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Context.Contract.ContextCaller.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 (_Context *ContextRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Context.Contract.ContextTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Context *ContextRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Context.Contract.ContextTransactor.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 (_Context *ContextCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Context.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 (_Context *ContextTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Context.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Context *ContextTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Context.Contract.contract.Transact(opts, method, params...) -} diff --git a/pkg/contracts/zevm/interfaces.sol/zcontract.go b/pkg/contracts/zevm/interfaces.sol/zcontract.go deleted file mode 100644 index 41674352..00000000 --- a/pkg/contracts/zevm/interfaces.sol/zcontract.go +++ /dev/null @@ -1,202 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package interfaces - -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 -) - -// ZContractMetaData contains all meta data concerning the ZContract contract. -var ZContractMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"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\"}]", -} - -// ZContractABI is the input ABI used to generate the binding from. -// Deprecated: Use ZContractMetaData.ABI instead. -var ZContractABI = ZContractMetaData.ABI - -// ZContract is an auto generated Go binding around an Ethereum contract. -type ZContract struct { - ZContractCaller // Read-only binding to the contract - ZContractTransactor // Write-only binding to the contract - ZContractFilterer // Log filterer for contract events -} - -// ZContractCaller is an auto generated read-only Go binding around an Ethereum contract. -type ZContractCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZContractTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ZContractTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZContractFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ZContractFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZContractSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ZContractSession struct { - Contract *ZContract // 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 -} - -// ZContractCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ZContractCallerSession struct { - Contract *ZContractCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ZContractTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ZContractTransactorSession struct { - Contract *ZContractTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZContractRaw is an auto generated low-level Go binding around an Ethereum contract. -type ZContractRaw struct { - Contract *ZContract // Generic contract binding to access the raw methods on -} - -// ZContractCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ZContractCallerRaw struct { - Contract *ZContractCaller // Generic read-only contract binding to access the raw methods on -} - -// ZContractTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ZContractTransactorRaw struct { - Contract *ZContractTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewZContract creates a new instance of ZContract, bound to a specific deployed contract. -func NewZContract(address common.Address, backend bind.ContractBackend) (*ZContract, error) { - contract, err := bindZContract(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ZContract{ZContractCaller: ZContractCaller{contract: contract}, ZContractTransactor: ZContractTransactor{contract: contract}, ZContractFilterer: ZContractFilterer{contract: contract}}, nil -} - -// NewZContractCaller creates a new read-only instance of ZContract, bound to a specific deployed contract. -func NewZContractCaller(address common.Address, caller bind.ContractCaller) (*ZContractCaller, error) { - contract, err := bindZContract(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ZContractCaller{contract: contract}, nil -} - -// NewZContractTransactor creates a new write-only instance of ZContract, bound to a specific deployed contract. -func NewZContractTransactor(address common.Address, transactor bind.ContractTransactor) (*ZContractTransactor, error) { - contract, err := bindZContract(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ZContractTransactor{contract: contract}, nil -} - -// NewZContractFilterer creates a new log filterer instance of ZContract, bound to a specific deployed contract. -func NewZContractFilterer(address common.Address, filterer bind.ContractFilterer) (*ZContractFilterer, error) { - contract, err := bindZContract(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ZContractFilterer{contract: contract}, nil -} - -// bindZContract binds a generic wrapper to an already deployed contract. -func bindZContract(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ZContractMetaData.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 (_ZContract *ZContractRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZContract.Contract.ZContractCaller.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 (_ZContract *ZContractRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZContract.Contract.ZContractTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZContract *ZContractRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZContract.Contract.ZContractTransactor.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 (_ZContract *ZContractCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZContract.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 (_ZContract *ZContractTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZContract.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZContract *ZContractTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZContract.Contract.contract.Transact(opts, method, params...) -} - -// OnCrossChainCall is a paid mutator transaction binding the contract method 0xc8522691. -// -// Solidity: function onCrossChainCall(address zrc20, uint256 amount, bytes message) returns() -func (_ZContract *ZContractTransactor) OnCrossChainCall(opts *bind.TransactOpts, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { - return _ZContract.contract.Transact(opts, "onCrossChainCall", zrc20, amount, message) -} - -// OnCrossChainCall is a paid mutator transaction binding the contract method 0xc8522691. -// -// Solidity: function onCrossChainCall(address zrc20, uint256 amount, bytes message) returns() -func (_ZContract *ZContractSession) OnCrossChainCall(zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { - return _ZContract.Contract.OnCrossChainCall(&_ZContract.TransactOpts, zrc20, amount, message) -} - -// OnCrossChainCall is a paid mutator transaction binding the contract method 0xc8522691. -// -// Solidity: function onCrossChainCall(address zrc20, uint256 amount, bytes message) returns() -func (_ZContract *ZContractTransactorSession) OnCrossChainCall(zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { - return _ZContract.Contract.OnCrossChainCall(&_ZContract.TransactOpts, zrc20, amount, message) -} 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/interfaces/zcontract.sol/zcontract.go b/pkg/contracts/zevm/interfaces/zcontract.sol/zcontract.go index 165c7576..f0ab38de 100644 --- a/pkg/contracts/zevm/interfaces/zcontract.sol/zcontract.go +++ b/pkg/contracts/zevm/interfaces/zcontract.sol/zcontract.go @@ -29,9 +29,16 @@ var ( _ = abi.ConvertType ) +// ZContext is an auto generated low-level Go binding around an user-defined struct. +type ZContext struct { + Origin []byte + Sender common.Address + ChainID *big.Int +} + // ZContractMetaData contains all meta data concerning the ZContract contract. var ZContractMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"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\"}]", + ABI: "[{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"origin\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"}],\"internalType\":\"structzContext\",\"name\":\"context\",\"type\":\"tuple\"},{\"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\"}]", } // ZContractABI is the input ABI used to generate the binding from. @@ -180,23 +187,23 @@ func (_ZContract *ZContractTransactorRaw) Transact(opts *bind.TransactOpts, meth return _ZContract.Contract.contract.Transact(opts, method, params...) } -// OnCrossChainCall is a paid mutator transaction binding the contract method 0xc8522691. +// OnCrossChainCall is a paid mutator transaction binding the contract method 0xde43156e. // -// Solidity: function onCrossChainCall(address zrc20, uint256 amount, bytes message) returns() -func (_ZContract *ZContractTransactor) OnCrossChainCall(opts *bind.TransactOpts, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { - return _ZContract.contract.Transact(opts, "onCrossChainCall", zrc20, amount, message) +// Solidity: function onCrossChainCall((bytes,address,uint256) context, address zrc20, uint256 amount, bytes message) returns() +func (_ZContract *ZContractTransactor) OnCrossChainCall(opts *bind.TransactOpts, context ZContext, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { + return _ZContract.contract.Transact(opts, "onCrossChainCall", context, zrc20, amount, message) } -// OnCrossChainCall is a paid mutator transaction binding the contract method 0xc8522691. +// OnCrossChainCall is a paid mutator transaction binding the contract method 0xde43156e. // -// Solidity: function onCrossChainCall(address zrc20, uint256 amount, bytes message) returns() -func (_ZContract *ZContractSession) OnCrossChainCall(zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { - return _ZContract.Contract.OnCrossChainCall(&_ZContract.TransactOpts, zrc20, amount, message) +// Solidity: function onCrossChainCall((bytes,address,uint256) context, address zrc20, uint256 amount, bytes message) returns() +func (_ZContract *ZContractSession) OnCrossChainCall(context ZContext, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { + return _ZContract.Contract.OnCrossChainCall(&_ZContract.TransactOpts, context, zrc20, amount, message) } -// OnCrossChainCall is a paid mutator transaction binding the contract method 0xc8522691. +// OnCrossChainCall is a paid mutator transaction binding the contract method 0xde43156e. // -// Solidity: function onCrossChainCall(address zrc20, uint256 amount, bytes message) returns() -func (_ZContract *ZContractTransactorSession) OnCrossChainCall(zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { - return _ZContract.Contract.OnCrossChainCall(&_ZContract.TransactOpts, zrc20, amount, message) +// Solidity: function onCrossChainCall((bytes,address,uint256) context, address zrc20, uint256 amount, bytes message) returns() +func (_ZContract *ZContractTransactorSession) OnCrossChainCall(context ZContext, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { + return _ZContract.Contract.OnCrossChainCall(&_ZContract.TransactOpts, context, zrc20, amount, message) } diff --git a/pkg/contracts/zevm/systemcontract.sol/systemcontract.go b/pkg/contracts/zevm/systemcontract.sol/systemcontract.go index 74b3fe9e..1c119082 100644 --- a/pkg/contracts/zevm/systemcontract.sol/systemcontract.go +++ b/pkg/contracts/zevm/systemcontract.sol/systemcontract.go @@ -29,10 +29,17 @@ var ( _ = abi.ConvertType ) +// ZContext is an auto generated low-level Go binding around an user-defined struct. +type ZContext struct { + Origin []byte + Sender common.Address + ChainID *big.Int +} + // SystemContractMetaData contains all meta data concerning the SystemContract contract. var SystemContractMetaData = &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\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"SetConnectorZEVM\",\"type\":\"event\"},{\"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\":[],\"name\":\"FUNGIBLE_MODULE_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"depositAndCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"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\":\"addr\",\"type\":\"address\"}],\"name\":\"setConnectorZEVMAddress\",\"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\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"erc20\",\"type\":\"address\"}],\"name\":\"setGasZetaPool\",\"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\"},{\"inputs\":[],\"name\":\"zetaConnectorZEVMAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x60c06040523480156200001157600080fd5b50604051620016da380380620016da8339818101604052810190620000379190620001ac565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614620000b1576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250507f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac560405160405180910390a15050506200025b565b600081519050620001a68162000241565b92915050565b600080600060608486031215620001c857620001c76200023c565b5b6000620001d88682870162000195565b9350506020620001eb8682870162000195565b9250506040620001fe8682870162000195565b9150509250925092565b600062000215826200021c565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200024c8162000208565b81146200025857600080fd5b50565b60805160601c60a05160601c61144c6200028e600039600061051b0152600081816107ec0152610bc2015261144c6000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806391dd645f11610097578063c63585cc11610066578063c63585cc1461025e578063d7fd7afb1461028e578063d936a012146102be578063ee2815ba146102dc576100f5565b806391dd645f146101ec57806397770dff14610208578063a7cb050714610224578063c62178ac14610240576100f5565b8063513a9c05116100d3578063513a9c0514610164578063569541b914610194578063842da36d146101b25780638c6f037f146101d0576100f5565b80630be15547146100fa5780631f0e251b1461012a5780633ce4a5bc14610146575b600080fd5b610114600480360381019061010f9190610fd2565b6102f8565b60405161012191906111ac565b60405180910390f35b610144600480360381019061013f9190610e9d565b61032b565b005b61014e6104a8565b60405161015b91906111ac565b60405180910390f35b61017e60048036038101906101799190610fd2565b6104c0565b60405161018b91906111ac565b60405180910390f35b61019c6104f3565b6040516101a991906111ac565b60405180910390f35b6101ba610519565b6040516101c791906111ac565b60405180910390f35b6101ea60048036038101906101e59190610f1d565b61053d565b005b61020660048036038101906102019190610fff565b61076c565b005b610222600480360381019061021d9190610e9d565b6108c6565b005b61023e6004803603810190610239919061103f565b610a43565b005b610248610b10565b60405161025591906111ac565b60405180910390f35b61027860048036038101906102739190610eca565b610b36565b60405161028591906111ac565b60405180910390f35b6102a860048036038101906102a39190610fd2565b610ba8565b6040516102b59190611230565b60405180910390f35b6102c6610bc0565b6040516102d391906111ac565b60405180910390f35b6102f660048036038101906102f19190610fff565b610be4565b005b60016020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103a4576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561040b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405161049d91906111ac565b60405180910390a150565b73735b14bb79463307aacbed86daf3322b1e6226ab81565b60026020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105b6576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061062f57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15610666576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff166347e7ef2484866040518363ffffffff1660e01b81526004016106a19291906111c7565b602060405180830381600087803b1580156106bb57600080fd5b505af11580156106cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f39190610fa5565b508273ffffffffffffffffffffffffffffffffffffffff1663c8522691868685856040518563ffffffff1660e01b815260040161073394939291906111f0565b600060405180830381600087803b15801561074d57600080fd5b505af1158015610761573d6000803e3d6000fd5b505050505050505050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107e5576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006108347f0000000000000000000000000000000000000000000000000000000000000000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610b36565b9050806002600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e83826040516108b992919061124b565b60405180910390a1505050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461093f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156109a6576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051610a3891906111ac565b60405180910390a150565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610abc576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600080848152602001908152602001600020819055507f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d8282604051610b04929190611274565b60405180910390a15050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000610b458585610cec565b91509150858282604051602001610b5d92919061113e565b60405160208183030381529060405280519060200120604051602001610b8492919061116a565b6040516020818303038152906040528051906020012060001c925050509392505050565b60006020528060005260406000206000915090505481565b7f000000000000000000000000000000000000000000000000000000000000000081565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c5d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806001600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d8282604051610ce092919061124b565b60405180910390a15050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610d55576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610d8f578284610d92565b83835b8092508193505050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e01576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600081359050610e17816113d1565b92915050565b600081519050610e2c816113e8565b92915050565b60008083601f840112610e4857610e4761134d565b5b8235905067ffffffffffffffff811115610e6557610e64611348565b5b602083019150836001820283011115610e8157610e80611352565b5b9250929050565b600081359050610e97816113ff565b92915050565b600060208284031215610eb357610eb261135c565b5b6000610ec184828501610e08565b91505092915050565b600080600060608486031215610ee357610ee261135c565b5b6000610ef186828701610e08565b9350506020610f0286828701610e08565b9250506040610f1386828701610e08565b9150509250925092565b600080600080600060808688031215610f3957610f3861135c565b5b6000610f4788828901610e08565b9550506020610f5888828901610e88565b9450506040610f6988828901610e08565b935050606086013567ffffffffffffffff811115610f8a57610f89611357565b5b610f9688828901610e32565b92509250509295509295909350565b600060208284031215610fbb57610fba61135c565b5b6000610fc984828501610e1d565b91505092915050565b600060208284031215610fe857610fe761135c565b5b6000610ff684828501610e88565b91505092915050565b600080604083850312156110165761101561135c565b5b600061102485828601610e88565b925050602061103585828601610e08565b9150509250929050565b600080604083850312156110565761105561135c565b5b600061106485828601610e88565b925050602061107585828601610e88565b9150509250929050565b611088816112b9565b82525050565b61109f61109a826112b9565b61131a565b82525050565b6110b66110b1826112d7565b61132c565b82525050565b60006110c8838561129d565b93506110d583858461130b565b6110de83611361565b840190509392505050565b60006110f66020836112ae565b91506111018261137f565b602082019050919050565b60006111196001836112ae565b9150611124826113a8565b600182019050919050565b61113881611301565b82525050565b600061114a828561108e565b60148201915061115a828461108e565b6014820191508190509392505050565b60006111758261110c565b9150611181828561108e565b60148201915061119182846110a5565b6020820191506111a0826110e9565b91508190509392505050565b60006020820190506111c1600083018461107f565b92915050565b60006040820190506111dc600083018561107f565b6111e9602083018461112f565b9392505050565b6000606082019050611205600083018761107f565b611212602083018661112f565b81810360408301526112258184866110bc565b905095945050505050565b6000602082019050611245600083018461112f565b92915050565b6000604082019050611260600083018561112f565b61126d602083018461107f565b9392505050565b6000604082019050611289600083018561112f565b611296602083018461112f565b9392505050565b600082825260208201905092915050565b600081905092915050565b60006112c4826112e1565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b600061132582611336565b9050919050565b6000819050919050565b600061134182611372565b9050919050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f600082015250565b7fff00000000000000000000000000000000000000000000000000000000000000600082015250565b6113da816112b9565b81146113e557600080fd5b50565b6113f1816112cb565b81146113fc57600080fd5b50565b61140881611301565b811461141357600080fd5b5056fea264697066735822122021a6855607f14a1abd3a45d8024a9fbbc5e7499b79f997d21648d01663c26adb64736f6c63430008070033", + 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\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"SetConnectorZEVM\",\"type\":\"event\"},{\"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\":[],\"name\":\"FUNGIBLE_MODULE_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"origin\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"}],\"internalType\":\"structzContext\",\"name\":\"context\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"depositAndCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"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\":\"addr\",\"type\":\"address\"}],\"name\":\"setConnectorZEVMAddress\",\"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\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"erc20\",\"type\":\"address\"}],\"name\":\"setGasZetaPool\",\"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\"},{\"inputs\":[],\"name\":\"zetaConnectorZEVMAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", + Bin: "0x60c06040523480156200001157600080fd5b50604051620018aa380380620018aa8339818101604052810190620000379190620001ac565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614620000b1576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250507f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac560405160405180910390a15050506200025b565b600081519050620001a68162000241565b92915050565b600080600060608486031215620001c857620001c76200023c565b5b6000620001d88682870162000195565b9350506020620001eb8682870162000195565b9250506040620001fe8682870162000195565b9150509250925092565b600062000215826200021c565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200024c8162000208565b81146200025857600080fd5b50565b60805160601c60a05160601c61161c6200028e600039600061051b0152600081816105bd0152610bc5015261161c6000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc1461025e578063d7fd7afb1461028e578063d936a012146102be578063ee2815ba146102dc576100f5565b806397770dff146101ec578063a7cb050714610208578063c39aca3714610224578063c62178ac14610240576100f5565b8063513a9c05116100d3578063513a9c0514610164578063569541b914610194578063842da36d146101b257806391dd645f146101d0576100f5565b80630be15547146100fa5780631f0e251b1461012a5780633ce4a5bc14610146575b600080fd5b610114600480360381019061010f9190611022565b6102f8565b60405161012191906112b1565b60405180910390f35b610144600480360381019061013f9190610ebf565b61032b565b005b61014e6104a8565b60405161015b91906112b1565b60405180910390f35b61017e60048036038101906101799190611022565b6104c0565b60405161018b91906112b1565b60405180910390f35b61019c6104f3565b6040516101a991906112b1565b60405180910390f35b6101ba610519565b6040516101c791906112b1565b60405180910390f35b6101ea60048036038101906101e5919061104f565b61053d565b005b61020660048036038101906102019190610ebf565b610697565b005b610222600480360381019061021d919061108f565b610814565b005b61023e60048036038101906102399190610f6c565b6108e1565b005b610248610b13565b60405161025591906112b1565b60405180910390f35b61027860048036038101906102739190610eec565b610b39565b60405161028591906112b1565b60405180910390f35b6102a860048036038101906102a39190611022565b610bab565b6040516102b5919061134a565b60405180910390f35b6102c6610bc3565b6040516102d391906112b1565b60405180910390f35b6102f660048036038101906102f1919061104f565b610be7565b005b60016020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103a4576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561040b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405161049d91906112b1565b60405180910390a150565b73735b14bb79463307aacbed86daf3322b1e6226ab81565b60026020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105b6576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006106057f0000000000000000000000000000000000000000000000000000000000000000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610b39565b9050806002600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e838260405161068a929190611365565b60405180910390a1505050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610710576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610777576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405161080991906112b1565b60405180910390a150565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461088d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600080848152602001908152602001600020819055507f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d82826040516108d592919061138e565b60405180910390a15050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461095a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806109d357503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15610a0a576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff166347e7ef2484866040518363ffffffff1660e01b8152600401610a459291906112cc565b602060405180830381600087803b158015610a5f57600080fd5b505af1158015610a73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a979190610f3f565b508273ffffffffffffffffffffffffffffffffffffffff1663de43156e87878786866040518663ffffffff1660e01b8152600401610ad99594939291906112f5565b600060405180830381600087803b158015610af357600080fd5b505af1158015610b07573d6000803e3d6000fd5b50505050505050505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000610b488585610cef565b91509150858282604051602001610b60929190611243565b60405160208183030381529060405280519060200120604051602001610b8792919061126f565b6040516020818303038152906040528051906020012060001c925050509392505050565b60006020528060005260406000206000915090505481565b7f000000000000000000000000000000000000000000000000000000000000000081565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c60576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806001600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d8282604051610ce3929190611365565b60405180910390a15050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610d58576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610d92578284610d95565b83835b8092508193505050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e04576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600081359050610e1a816115a1565b92915050565b600081519050610e2f816115b8565b92915050565b60008083601f840112610e4b57610e4a61150e565b5b8235905067ffffffffffffffff811115610e6857610e67611509565b5b602083019150836001820283011115610e8457610e8361151d565b5b9250929050565b600060608284031215610ea157610ea0611513565b5b81905092915050565b600081359050610eb9816115cf565b92915050565b600060208284031215610ed557610ed461152c565b5b6000610ee384828501610e0b565b91505092915050565b600080600060608486031215610f0557610f0461152c565b5b6000610f1386828701610e0b565b9350506020610f2486828701610e0b565b9250506040610f3586828701610e0b565b9150509250925092565b600060208284031215610f5557610f5461152c565b5b6000610f6384828501610e20565b91505092915050565b60008060008060008060a08789031215610f8957610f8861152c565b5b600087013567ffffffffffffffff811115610fa757610fa6611522565b5b610fb389828a01610e8b565b9650506020610fc489828a01610e0b565b9550506040610fd589828a01610eaa565b9450506060610fe689828a01610e0b565b935050608087013567ffffffffffffffff81111561100757611006611522565b5b61101389828a01610e35565b92509250509295509295509295565b6000602082840312156110385761103761152c565b5b600061104684828501610eaa565b91505092915050565b600080604083850312156110665761106561152c565b5b600061107485828601610eaa565b925050602061108585828601610e0b565b9150509250929050565b600080604083850312156110a6576110a561152c565b5b60006110b485828601610eaa565b92505060206110c585828601610eaa565b9150509250929050565b6110d881611475565b82525050565b6110e781611475565b82525050565b6110fe6110f982611475565b6114d6565b82525050565b61111561111082611493565b6114e8565b82525050565b600061112783856113b7565b93506111348385846114c7565b61113d83611531565b840190509392505050565b600061115483856113c8565b93506111618385846114c7565b61116a83611531565b840190509392505050565b60006111826020836113d9565b915061118d8261154f565b602082019050919050565b60006111a56001836113d9565b91506111b082611578565b600182019050919050565b6000606083016111ce60008401846113fb565b85830360008701526111e183828461111b565b925050506111f260208401846113e4565b6111ff60208601826110cf565b5061120d604084018461145e565b61121a6040860182611225565b508091505092915050565b61122e816114bd565b82525050565b61123d816114bd565b82525050565b600061124f82856110ed565b60148201915061125f82846110ed565b6014820191508190509392505050565b600061127a82611198565b915061128682856110ed565b6014820191506112968284611104565b6020820191506112a582611175565b91508190509392505050565b60006020820190506112c660008301846110de565b92915050565b60006040820190506112e160008301856110de565b6112ee6020830184611234565b9392505050565b6000608082019050818103600083015261130f81886111bb565b905061131e60208301876110de565b61132b6040830186611234565b818103606083015261133e818486611148565b90509695505050505050565b600060208201905061135f6000830184611234565b92915050565b600060408201905061137a6000830185611234565b61138760208301846110de565b9392505050565b60006040820190506113a36000830185611234565b6113b06020830184611234565b9392505050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006113f36020840184610e0b565b905092915050565b6000808335600160200384360303811261141857611417611527565b5b83810192508235915060208301925067ffffffffffffffff8211156114405761143f611504565b5b60018202360384131561145657611455611518565b5b509250929050565b600061146d6020840184610eaa565b905092915050565b60006114808261149d565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60006114e1826114f2565b9050919050565b6000819050919050565b60006114fd82611542565b9050919050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f600082015250565b7fff00000000000000000000000000000000000000000000000000000000000000600082015250565b6115aa81611475565b81146115b557600080fd5b50565b6115c181611487565b81146115cc57600080fd5b50565b6115d8816114bd565b81146115e357600080fd5b5056fea2646970667358221220d4153f74dccdcf8c4e404c06ec70932b2acc46ffc5784c13399fb6b547739b2064736f6c63430008070033", } // SystemContractABI is the input ABI used to generate the binding from. @@ -481,25 +488,25 @@ func (_SystemContract *SystemContractCallerSession) ZetaConnectorZEVMAddress() ( return _SystemContract.Contract.ZetaConnectorZEVMAddress(&_SystemContract.CallOpts) } -// DepositAndCall is a paid mutator transaction binding the contract method 0x8c6f037f. +// DepositAndCall is a paid mutator transaction binding the contract method 0xc39aca37. // -// Solidity: function depositAndCall(address zrc20, uint256 amount, address target, bytes message) returns() -func (_SystemContract *SystemContractTransactor) DepositAndCall(opts *bind.TransactOpts, zrc20 common.Address, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { - return _SystemContract.contract.Transact(opts, "depositAndCall", zrc20, amount, target, message) +// Solidity: function depositAndCall((bytes,address,uint256) context, address zrc20, uint256 amount, address target, bytes message) returns() +func (_SystemContract *SystemContractTransactor) DepositAndCall(opts *bind.TransactOpts, context ZContext, zrc20 common.Address, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { + return _SystemContract.contract.Transact(opts, "depositAndCall", context, zrc20, amount, target, message) } -// DepositAndCall is a paid mutator transaction binding the contract method 0x8c6f037f. +// DepositAndCall is a paid mutator transaction binding the contract method 0xc39aca37. // -// Solidity: function depositAndCall(address zrc20, uint256 amount, address target, bytes message) returns() -func (_SystemContract *SystemContractSession) DepositAndCall(zrc20 common.Address, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { - return _SystemContract.Contract.DepositAndCall(&_SystemContract.TransactOpts, zrc20, amount, target, message) +// Solidity: function depositAndCall((bytes,address,uint256) context, address zrc20, uint256 amount, address target, bytes message) returns() +func (_SystemContract *SystemContractSession) DepositAndCall(context ZContext, zrc20 common.Address, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { + return _SystemContract.Contract.DepositAndCall(&_SystemContract.TransactOpts, context, zrc20, amount, target, message) } -// DepositAndCall is a paid mutator transaction binding the contract method 0x8c6f037f. +// DepositAndCall is a paid mutator transaction binding the contract method 0xc39aca37. // -// Solidity: function depositAndCall(address zrc20, uint256 amount, address target, bytes message) returns() -func (_SystemContract *SystemContractTransactorSession) DepositAndCall(zrc20 common.Address, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { - return _SystemContract.Contract.DepositAndCall(&_SystemContract.TransactOpts, zrc20, amount, target, message) +// Solidity: function depositAndCall((bytes,address,uint256) context, address zrc20, uint256 amount, address target, bytes message) returns() +func (_SystemContract *SystemContractTransactorSession) DepositAndCall(context ZContext, zrc20 common.Address, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { + return _SystemContract.Contract.DepositAndCall(&_SystemContract.TransactOpts, context, zrc20, amount, target, message) } // SetConnectorZEVMAddress is a paid mutator transaction binding the contract method 0x1f0e251b. 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/wzeta.sol/weth9.go b/pkg/contracts/zevm/wzeta.sol/weth9.go index e79caf0f..bce542f1 100644 --- a/pkg/contracts/zevm/wzeta.sol/weth9.go +++ b/pkg/contracts/zevm/wzeta.sol/weth9.go @@ -32,7 +32,7 @@ var ( // WETH9MetaData contains all meta data concerning the WETH9 contract. var WETH9MetaData = &bind.MetaData{ ABI: "[{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"guy\",\"type\":\"address\"},{\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"src\",\"type\":\"address\"},{\"name\":\"dst\",\"type\":\"address\"},{\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"dst\",\"type\":\"address\"},{\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"},{\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"src\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"guy\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"src\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"dst\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"dst\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"src\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"Withdrawal\",\"type\":\"event\"}]", - Bin: "0x60606040526040805190810160405280600c81526020017f57726170706564205a65746100000000000000000000000000000000000000008152506000908051906020019061004f9291906100c8565b506040805190810160405280600581526020017f575a4554410000000000000000000000000000000000000000000000000000008152506001908051906020019061009b9291906100c8565b506012600260006101000a81548160ff021916908360ff16021790555034156100c357600080fd5b61016d565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061010957805160ff1916838001178555610137565b82800160010185558215610137579182015b8281111561013657825182559160200191906001019061011b565b5b5090506101449190610148565b5090565b61016a91905b8082111561016657600081600090555060010161014e565b5090565b90565b610c348061017c6000396000f3006060604052600436106100af576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100b9578063095ea7b31461014757806318160ddd146101a157806323b872dd146101ca5780632e1a7d4d14610243578063313ce5671461026657806370a082311461029557806395d89b41146102e2578063a9059cbb14610370578063d0e30db0146103ca578063dd62ed3e146103d4575b6100b7610440565b005b34156100c457600080fd5b6100cc6104dd565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561010c5780820151818401526020810190506100f1565b50505050905090810190601f1680156101395780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561015257600080fd5b610187600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061057b565b604051808215151515815260200191505060405180910390f35b34156101ac57600080fd5b6101b461066d565b6040518082815260200191505060405180910390f35b34156101d557600080fd5b610229600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061068c565b604051808215151515815260200191505060405180910390f35b341561024e57600080fd5b61026460048080359060200190919050506109d9565b005b341561027157600080fd5b610279610b05565b604051808260ff1660ff16815260200191505060405180910390f35b34156102a057600080fd5b6102cc600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610b18565b6040518082815260200191505060405180910390f35b34156102ed57600080fd5b6102f5610b30565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561033557808201518184015260208101905061031a565b50505050905090810190601f1680156103625780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561037b57600080fd5b6103b0600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610bce565b604051808215151515815260200191505060405180910390f35b6103d2610440565b005b34156103df57600080fd5b61042a600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610be3565b6040518082815260200191505060405180910390f35b34600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055503373ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c346040518082815260200191505060405180910390a2565b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105735780601f1061054857610100808354040283529160200191610573565b820191906000526020600020905b81548152906001019060200180831161055657829003601f168201915b505050505081565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff1631905090565b600081600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156106dc57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156107b457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b156108cf5781600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561084457600080fd5b81600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151515610a2757600080fd5b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515610ab457600080fd5b3373ffffffffffffffffffffffffffffffffffffffff167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65826040518082815260200191505060405180910390a250565b600260009054906101000a900460ff1681565b60036020528060005260406000206000915090505481565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610bc65780601f10610b9b57610100808354040283529160200191610bc6565b820191906000526020600020905b815481529060010190602001808311610ba957829003601f168201915b505050505081565b6000610bdb33848461068c565b905092915050565b60046020528160005260406000206020528060005260406000206000915091505054815600a165627a7a72305820822623fbf214ecb078965e91103e58a7b4f0bcf8fcfa07e84dd97b88a0ed04970029", + Bin: "0x60606040526040805190810160405280600c81526020017f57726170706564205a65746100000000000000000000000000000000000000008152506000908051906020019061004f9291906100c8565b506040805190810160405280600581526020017f575a4554410000000000000000000000000000000000000000000000000000008152506001908051906020019061009b9291906100c8565b506012600260006101000a81548160ff021916908360ff16021790555034156100c357600080fd5b61016d565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061010957805160ff1916838001178555610137565b82800160010185558215610137579182015b8281111561013657825182559160200191906001019061011b565b5b5090506101449190610148565b5090565b61016a91905b8082111561016657600081600090555060010161014e565b5090565b90565b610c348061017c6000396000f3006060604052600436106100af576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100b9578063095ea7b31461014757806318160ddd146101a157806323b872dd146101ca5780632e1a7d4d14610243578063313ce5671461026657806370a082311461029557806395d89b41146102e2578063a9059cbb14610370578063d0e30db0146103ca578063dd62ed3e146103d4575b6100b7610440565b005b34156100c457600080fd5b6100cc6104dd565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561010c5780820151818401526020810190506100f1565b50505050905090810190601f1680156101395780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561015257600080fd5b610187600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061057b565b604051808215151515815260200191505060405180910390f35b34156101ac57600080fd5b6101b461066d565b6040518082815260200191505060405180910390f35b34156101d557600080fd5b610229600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061068c565b604051808215151515815260200191505060405180910390f35b341561024e57600080fd5b61026460048080359060200190919050506109d9565b005b341561027157600080fd5b610279610b05565b604051808260ff1660ff16815260200191505060405180910390f35b34156102a057600080fd5b6102cc600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610b18565b6040518082815260200191505060405180910390f35b34156102ed57600080fd5b6102f5610b30565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561033557808201518184015260208101905061031a565b50505050905090810190601f1680156103625780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561037b57600080fd5b6103b0600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610bce565b604051808215151515815260200191505060405180910390f35b6103d2610440565b005b34156103df57600080fd5b61042a600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610be3565b6040518082815260200191505060405180910390f35b34600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055503373ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c346040518082815260200191505060405180910390a2565b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105735780601f1061054857610100808354040283529160200191610573565b820191906000526020600020905b81548152906001019060200180831161055657829003601f168201915b505050505081565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff1631905090565b600081600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156106dc57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156107b457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b156108cf5781600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561084457600080fd5b81600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151515610a2757600080fd5b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515610ab457600080fd5b3373ffffffffffffffffffffffffffffffffffffffff167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65826040518082815260200191505060405180910390a250565b600260009054906101000a900460ff1681565b60036020528060005260406000206000915090505481565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610bc65780601f10610b9b57610100808354040283529160200191610bc6565b820191906000526020600020905b815481529060010190602001808311610ba957829003601f168201915b505050505081565b6000610bdb33848461068c565b905092915050565b60046020528160005260406000206020528060005260406000206000915091505054815600a165627a7a723058208e8d099f48a4e7a73b2709a09da4e0704fd1cb7ce15b8cdf4a7552b81095bc530029", } // WETH9ABI is the input ABI used to generate the binding from. 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 0d231e5d..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: "0x608060405234801561001057600080fd5b50604051610a51380380610a518339818101604052810190610032919061008d565b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610108565b600081519050610087816100f1565b92915050565b6000602082840312156100a3576100a26100ec565b5b60006100b184828501610078565b91505092915050565b60006100c5826100cc565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6100fa816100ba565b811461010557600080fd5b50565b61093a806101176000396000f3fe6080604052600436106100425760003560e01c8062173d46146100d35780633ce4a5bc146100fe578063eb3bacbd14610129578063ec02690114610152576100ce565b366100ce5760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146100cc576040517f6e6b6de700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b3480156100df57600080fd5b506100e861017b565b6040516100f591906106e5565b60405180910390f35b34801561010a57600080fd5b5061011361019f565b60405161012091906106e5565b60405180910390f35b34801561013557600080fd5b50610150600480360381019061014b91906105bf565b6101b7565b005b34801561015e57600080fd5b5061017960048036038101906101749190610619565b6102aa565b005b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b73735b14bb79463307aacbed86daf3322b1e6226ab81565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610230576040517fea02b3f300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f7325870b05f8f3412c318a35fc6a74feca51ea15811ec7a257676ca4db9d41768160405161029f91906106e5565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd333084608001356040518463ffffffff1660e01b815260040161030b93929190610700565b602060405180830381600087803b15801561032557600080fd5b505af1158015610339573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035d91906105ec565b610393576040517fa8c6fd4a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d82608001356040518263ffffffff1660e01b81526004016103f091906107b3565b600060405180830381600087803b15801561040a57600080fd5b505af115801561041e573d6000803e3d6000fd5b50505050600073735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff168260800135604051610460906106d0565b60006040518083038185875af1925050503d806000811461049d576040519150601f19603f3d011682016040523d82523d6000602084013e6104a2565b606091505b50509050806104dd576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600001353373ffffffffffffffffffffffffffffffffffffffff167f7ec1c94701e09b1652f3e1d307e60c4b9ebf99aff8c2079fd1d8c585e031c4e43285806020019061052b91906107ce565b8760800135886040013589806060019061054591906107ce565b8b8060a0019061055591906107ce565b60405161056a99989796959493929190610737565b60405180910390a35050565b600081359050610585816108d6565b92915050565b60008151905061059a816108ed565b92915050565b600060c082840312156105b6576105b56108a9565b5b81905092915050565b6000602082840312156105d5576105d46108bd565b5b60006105e384828501610576565b91505092915050565b600060208284031215610602576106016108bd565b5b60006106108482850161058b565b91505092915050565b60006020828403121561062f5761062e6108bd565b5b600082013567ffffffffffffffff81111561064d5761064c6108b8565b5b610659848285016105a0565b91505092915050565b61066b8161084d565b82525050565b600061067d8385610831565b935061068a838584610895565b610693836108c2565b840190509392505050565b60006106ab600083610842565b91506106b6826108d3565b600082019050919050565b6106ca8161088b565b82525050565b60006106db8261069e565b9150819050919050565b60006020820190506106fa6000830184610662565b92915050565b60006060820190506107156000830186610662565b6107226020830185610662565b61072f60408301846106c1565b949350505050565b600060c08201905061074c600083018c610662565b818103602083015261075f818a8c610671565b905061076e60408301896106c1565b61077b60608301886106c1565b818103608083015261078e818688610671565b905081810360a08301526107a3818486610671565b90509a9950505050505050505050565b60006020820190506107c860008301846106c1565b92915050565b600080833560016020038436030381126107eb576107ea6108ae565b5b80840192508235915067ffffffffffffffff82111561080d5761080c6108a4565b5b602083019250600182023603831315610829576108286108b3565b5b509250929050565b600082825260208201905092915050565b600081905092915050565b60006108588261086b565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b50565b6108df8161084d565b81146108ea57600080fd5b50565b6108f68161085f565b811461090157600080fd5b5056fea26469706673582212200ffe6c799d91d5b7883478f60527249befb43da410ae458dea0c449f851341d464736f6c63430008070033", + 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 20aef56b..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: "0x60c06040523480156200001157600080fd5b50604051620029ab380380620029ab833981810160405281019062000037919062000319565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614620000b1576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8660069080519060200190620000c99291906200018f565b508560079080519060200190620000e29291906200018f565b5084600860006101000a81548160ff021916908360ff16021790555083608081815250508260028111156200011c576200011b62000556565b5b60a081600281111562000134576200013362000556565b5b60f81b8152505081600181905550806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050505062000667565b8280546200019d90620004ea565b90600052602060002090601f016020900481019282620001c157600085556200020d565b82601f10620001dc57805160ff19168380011785556200020d565b828001600101855582156200020d579182015b828111156200020c578251825591602001919060010190620001ef565b5b5090506200021c919062000220565b5090565b5b808211156200023b57600081600090555060010162000221565b5090565b600062000256620002508462000433565b6200040a565b905082815260208101848484011115620002755762000274620005e8565b5b62000282848285620004b4565b509392505050565b6000815190506200029b8162000608565b92915050565b600081519050620002b28162000622565b92915050565b600082601f830112620002d057620002cf620005e3565b5b8151620002e28482602086016200023f565b91505092915050565b600081519050620002fc8162000633565b92915050565b60008151905062000313816200064d565b92915050565b600080600080600080600060e0888a0312156200033b576200033a620005f2565b5b600088015167ffffffffffffffff8111156200035c576200035b620005ed565b5b6200036a8a828b01620002b8565b975050602088015167ffffffffffffffff8111156200038e576200038d620005ed565b5b6200039c8a828b01620002b8565b9650506040620003af8a828b0162000302565b9550506060620003c28a828b01620002eb565b9450506080620003d58a828b01620002a1565b93505060a0620003e88a828b01620002eb565b92505060c0620003fb8a828b016200028a565b91505092959891949750929550565b60006200041662000429565b905062000424828262000520565b919050565b6000604051905090565b600067ffffffffffffffff821115620004515762000450620005b4565b5b6200045c82620005f7565b9050602081019050919050565b600062000476826200047d565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015620004d4578082015181840152602081019050620004b7565b83811115620004e4576000848401525b50505050565b600060028204905060018216806200050357607f821691505b602082108114156200051a576200051962000585565b5b50919050565b6200052b82620005f7565b810181811067ffffffffffffffff821117156200054d576200054c620005b4565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b620006138162000469565b81146200061f57600080fd5b50565b600381106200063057600080fd5b50565b6200063e816200049d565b81146200064a57600080fd5b50565b6200065881620004a7565b81146200066457600080fd5b50565b60805160a05160f81c61230d6200069e60003960006109f101526000818161093b01528181610e210152610f56015261230d6000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c806385e1f4d0116100c3578063c835d7cc1161007c578063c835d7cc1461041b578063d9eeebed14610437578063dd62ed3e14610456578063eddeb12314610486578063f2441b32146104a2578063f687d12a146104c057610158565b806385e1f4d01461033157806395d89b411461034f578063a3413d031461036d578063a457c2d71461038b578063a9059cbb146103bb578063c7012626146103eb57610158565b8063395093511161011557806339509351146102355780633ce4a5bc1461026557806342966c681461028357806347e7ef24146102b35780634d8943bb146102e357806370a082311461030157610158565b806306fdde031461015d578063091d27881461017b578063095ea7b31461019957806318160ddd146101c957806323b872dd146101e7578063313ce56714610217575b600080fd5b6101656104dc565b6040516101729190611e83565b60405180910390f35b61018361056e565b6040516101909190611ea5565b60405180910390f35b6101b360048036038101906101ae9190611b44565b610574565b6040516101c09190611dd1565b60405180910390f35b6101d1610592565b6040516101de9190611ea5565b60405180910390f35b61020160048036038101906101fc9190611af1565b61059c565b60405161020e9190611dd1565b60405180910390f35b61021f610694565b60405161022c9190611ec0565b60405180910390f35b61024f600480360381019061024a9190611b44565b6106ab565b60405161025c9190611dd1565b60405180910390f35b61026d610751565b60405161027a9190611d56565b60405180910390f35b61029d60048036038101906102989190611c0d565b610769565b6040516102aa9190611dd1565b60405180910390f35b6102cd60048036038101906102c89190611b44565b61077e565b6040516102da9190611dd1565b60405180910390f35b6102eb6108ea565b6040516102f89190611ea5565b60405180910390f35b61031b60048036038101906103169190611a57565b6108f0565b6040516103289190611ea5565b60405180910390f35b610339610939565b6040516103469190611ea5565b60405180910390f35b61035761095d565b6040516103649190611e83565b60405180910390f35b6103756109ef565b6040516103829190611e68565b60405180910390f35b6103a560048036038101906103a09190611b44565b610a13565b6040516103b29190611dd1565b60405180910390f35b6103d560048036038101906103d09190611b44565b610b76565b6040516103e29190611dd1565b60405180910390f35b61040560048036038101906104009190611bb1565b610b94565b6040516104129190611dd1565b60405180910390f35b61043560048036038101906104309190611a57565b610cea565b005b61043f610ddd565b60405161044d929190611da8565b60405180910390f35b610470600480360381019061046b9190611ab1565b61104a565b60405161047d9190611ea5565b60405180910390f35b6104a0600480360381019061049b9190611c0d565b6110d1565b005b6104aa61118b565b6040516104b79190611d56565b60405180910390f35b6104da60048036038101906104d59190611c0d565b6111af565b005b6060600680546104eb90612109565b80601f016020809104026020016040519081016040528092919081815260200182805461051790612109565b80156105645780601f1061053957610100808354040283529160200191610564565b820191906000526020600020905b81548152906001019060200180831161054757829003601f168201915b5050505050905090565b60015481565b6000610588610581611269565b8484611271565b6001905092915050565b6000600554905090565b60006105a984848461142a565b6000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105f4611269565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561066b576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61068885610677611269565b85846106839190612019565b611271565b60019150509392505050565b6000600860009054906101000a900460ff16905090565b600081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106f7611269565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546107409190611f69565b925050819055506001905092915050565b73735b14bb79463307aacbed86daf3322b1e6226ab81565b60006107753383611686565b60019050919050565b600073735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561081c575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15610853576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61085d838361183e565b8273ffffffffffffffffffffffffffffffffffffffff167f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab373735b14bb79463307aacbed86daf3322b1e6226ab6040516020016108ba9190611d3b565b604051602081830303815290604052846040516108d8929190611dec565b60405180910390a26001905092915050565b60025481565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60606007805461096c90612109565b80601f016020809104026020016040519081016040528092919081815260200182805461099890612109565b80156109e55780601f106109ba576101008083540402835291602001916109e5565b820191906000526020600020905b8154815290600101906020018083116109c857829003601f168201915b5050505050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b600081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a5f611269565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610ad2576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b1c611269565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610b659190612019565b925050819055506001905092915050565b6000610b8a610b83611269565b848461142a565b6001905092915050565b6000806000610ba1610ddd565b915091508173ffffffffffffffffffffffffffffffffffffffff166323b872dd3373735b14bb79463307aacbed86daf3322b1e6226ab846040518463ffffffff1660e01b8152600401610bf693929190611d71565b602060405180830381600087803b158015610c1057600080fd5b505af1158015610c24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c489190611b84565b610c7e576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c883385611686565b3373ffffffffffffffffffffffffffffffffffffffff167f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d955868684600254604051610cd69493929190611e1c565b60405180910390a260019250505092915050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d63576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae81604051610dd29190611d56565b60405180910390a150565b60008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630be155477f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401610e5c9190611ea5565b60206040518083038186803b158015610e7457600080fd5b505afa158015610e88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eac9190611a84565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610f15576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d7fd7afb7f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401610f919190611ea5565b60206040518083038186803b158015610fa957600080fd5b505afa158015610fbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe19190611c3a565b9050600081141561101e576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600254600154836110319190611fbf565b61103b9190611f69565b90508281945094505050509091565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461114a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806002819055507fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f816040516111809190611ea5565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611228576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806001819055507fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a8160405161125e9190611ea5565b60405180910390a150565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112d8576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561133f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161141d9190611ea5565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611491576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114f8576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611576576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816115829190612019565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116149190611f69565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116789190611ea5565b60405180910390a350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116ed576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561176b576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816117779190612019565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600560008282546117cc9190612019565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516118319190611ea5565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156118a5576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600560008282546118b79190611f69565b9250508190555080600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461190d9190611f69565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516119729190611ea5565b60405180910390a35050565b600061199161198c84611f00565b611edb565b9050828152602081018484840111156119ad576119ac612251565b5b6119b88482856120c7565b509392505050565b6000813590506119cf81612292565b92915050565b6000815190506119e481612292565b92915050565b6000815190506119f9816122a9565b92915050565b600082601f830112611a1457611a1361224c565b5b8135611a2484826020860161197e565b91505092915050565b600081359050611a3c816122c0565b92915050565b600081519050611a51816122c0565b92915050565b600060208284031215611a6d57611a6c61225b565b5b6000611a7b848285016119c0565b91505092915050565b600060208284031215611a9a57611a9961225b565b5b6000611aa8848285016119d5565b91505092915050565b60008060408385031215611ac857611ac761225b565b5b6000611ad6858286016119c0565b9250506020611ae7858286016119c0565b9150509250929050565b600080600060608486031215611b0a57611b0961225b565b5b6000611b18868287016119c0565b9350506020611b29868287016119c0565b9250506040611b3a86828701611a2d565b9150509250925092565b60008060408385031215611b5b57611b5a61225b565b5b6000611b69858286016119c0565b9250506020611b7a85828601611a2d565b9150509250929050565b600060208284031215611b9a57611b9961225b565b5b6000611ba8848285016119ea565b91505092915050565b60008060408385031215611bc857611bc761225b565b5b600083013567ffffffffffffffff811115611be657611be5612256565b5b611bf2858286016119ff565b9250506020611c0385828601611a2d565b9150509250929050565b600060208284031215611c2357611c2261225b565b5b6000611c3184828501611a2d565b91505092915050565b600060208284031215611c5057611c4f61225b565b5b6000611c5e84828501611a42565b91505092915050565b611c708161204d565b82525050565b611c87611c828261204d565b61216c565b82525050565b611c968161205f565b82525050565b6000611ca782611f31565b611cb18185611f47565b9350611cc18185602086016120d6565b611cca81612260565b840191505092915050565b611cde816120b5565b82525050565b6000611cef82611f3c565b611cf98185611f58565b9350611d098185602086016120d6565b611d1281612260565b840191505092915050565b611d268161209e565b82525050565b611d35816120a8565b82525050565b6000611d478284611c76565b60148201915081905092915050565b6000602082019050611d6b6000830184611c67565b92915050565b6000606082019050611d866000830186611c67565b611d936020830185611c67565b611da06040830184611d1d565b949350505050565b6000604082019050611dbd6000830185611c67565b611dca6020830184611d1d565b9392505050565b6000602082019050611de66000830184611c8d565b92915050565b60006040820190508181036000830152611e068185611c9c565b9050611e156020830184611d1d565b9392505050565b60006080820190508181036000830152611e368187611c9c565b9050611e456020830186611d1d565b611e526040830185611d1d565b611e5f6060830184611d1d565b95945050505050565b6000602082019050611e7d6000830184611cd5565b92915050565b60006020820190508181036000830152611e9d8184611ce4565b905092915050565b6000602082019050611eba6000830184611d1d565b92915050565b6000602082019050611ed56000830184611d2c565b92915050565b6000611ee5611ef6565b9050611ef1828261213b565b919050565b6000604051905090565b600067ffffffffffffffff821115611f1b57611f1a61221d565b5b611f2482612260565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611f748261209e565b9150611f7f8361209e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611fb457611fb3612190565b5b828201905092915050565b6000611fca8261209e565b9150611fd58361209e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561200e5761200d612190565b5b828202905092915050565b60006120248261209e565b915061202f8361209e565b92508282101561204257612041612190565b5b828203905092915050565b60006120588261207e565b9050919050565b60008115159050919050565b60008190506120798261227e565b919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006120c08261206b565b9050919050565b82818337600083830152505050565b60005b838110156120f45780820151818401526020810190506120d9565b83811115612103576000848401525b50505050565b6000600282049050600182168061212157607f821691505b60208210811415612135576121346121ee565b5b50919050565b61214482612260565b810181811067ffffffffffffffff821117156121635761216261221d565b5b80604052505050565b60006121778261217e565b9050919050565b600061218982612271565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b6003811061228f5761228e6121bf565b5b50565b61229b8161204d565b81146122a657600080fd5b50565b6122b28161205f565b81146122bd57600080fd5b50565b6122c98161209e565b81146122d457600080fd5b5056fea264697066735822122071466ba3cdf2fe2a73d5fb5261150b9493b7d5c65f6fb2d5a91003393169398d64736f6c63430008070033", + 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/pkg/uniswap/v3-core/contracts/interfaces/iuniswapv3factory.sol/iuniswapv3factory.go b/pkg/uniswap/v3-core/contracts/interfaces/iuniswapv3factory.sol/iuniswapv3factory.go new file mode 100644 index 00000000..048c69bd --- /dev/null +++ b/pkg/uniswap/v3-core/contracts/interfaces/iuniswapv3factory.sol/iuniswapv3factory.go @@ -0,0 +1,807 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package iuniswapv3factory + +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 +) + +// IUniswapV3FactoryMetaData contains all meta data concerning the IUniswapV3Factory contract. +var IUniswapV3FactoryMetaData = &bind.MetaData{ + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"}],\"name\":\"FeeAmountEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"}],\"name\":\"createPool\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"}],\"name\":\"enableFeeAmount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"}],\"name\":\"feeAmountTickSpacing\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"\",\"type\":\"int24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"}],\"name\":\"getPool\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"setOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// IUniswapV3FactoryABI is the input ABI used to generate the binding from. +// Deprecated: Use IUniswapV3FactoryMetaData.ABI instead. +var IUniswapV3FactoryABI = IUniswapV3FactoryMetaData.ABI + +// IUniswapV3Factory is an auto generated Go binding around an Ethereum contract. +type IUniswapV3Factory struct { + IUniswapV3FactoryCaller // Read-only binding to the contract + IUniswapV3FactoryTransactor // Write-only binding to the contract + IUniswapV3FactoryFilterer // Log filterer for contract events +} + +// IUniswapV3FactoryCaller is an auto generated read-only Go binding around an Ethereum contract. +type IUniswapV3FactoryCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV3FactoryTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IUniswapV3FactoryTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV3FactoryFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IUniswapV3FactoryFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV3FactorySession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IUniswapV3FactorySession struct { + Contract *IUniswapV3Factory // 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 +} + +// IUniswapV3FactoryCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IUniswapV3FactoryCallerSession struct { + Contract *IUniswapV3FactoryCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IUniswapV3FactoryTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IUniswapV3FactoryTransactorSession struct { + Contract *IUniswapV3FactoryTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IUniswapV3FactoryRaw is an auto generated low-level Go binding around an Ethereum contract. +type IUniswapV3FactoryRaw struct { + Contract *IUniswapV3Factory // Generic contract binding to access the raw methods on +} + +// IUniswapV3FactoryCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IUniswapV3FactoryCallerRaw struct { + Contract *IUniswapV3FactoryCaller // Generic read-only contract binding to access the raw methods on +} + +// IUniswapV3FactoryTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IUniswapV3FactoryTransactorRaw struct { + Contract *IUniswapV3FactoryTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIUniswapV3Factory creates a new instance of IUniswapV3Factory, bound to a specific deployed contract. +func NewIUniswapV3Factory(address common.Address, backend bind.ContractBackend) (*IUniswapV3Factory, error) { + contract, err := bindIUniswapV3Factory(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IUniswapV3Factory{IUniswapV3FactoryCaller: IUniswapV3FactoryCaller{contract: contract}, IUniswapV3FactoryTransactor: IUniswapV3FactoryTransactor{contract: contract}, IUniswapV3FactoryFilterer: IUniswapV3FactoryFilterer{contract: contract}}, nil +} + +// NewIUniswapV3FactoryCaller creates a new read-only instance of IUniswapV3Factory, bound to a specific deployed contract. +func NewIUniswapV3FactoryCaller(address common.Address, caller bind.ContractCaller) (*IUniswapV3FactoryCaller, error) { + contract, err := bindIUniswapV3Factory(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IUniswapV3FactoryCaller{contract: contract}, nil +} + +// NewIUniswapV3FactoryTransactor creates a new write-only instance of IUniswapV3Factory, bound to a specific deployed contract. +func NewIUniswapV3FactoryTransactor(address common.Address, transactor bind.ContractTransactor) (*IUniswapV3FactoryTransactor, error) { + contract, err := bindIUniswapV3Factory(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IUniswapV3FactoryTransactor{contract: contract}, nil +} + +// NewIUniswapV3FactoryFilterer creates a new log filterer instance of IUniswapV3Factory, bound to a specific deployed contract. +func NewIUniswapV3FactoryFilterer(address common.Address, filterer bind.ContractFilterer) (*IUniswapV3FactoryFilterer, error) { + contract, err := bindIUniswapV3Factory(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IUniswapV3FactoryFilterer{contract: contract}, nil +} + +// bindIUniswapV3Factory binds a generic wrapper to an already deployed contract. +func bindIUniswapV3Factory(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IUniswapV3FactoryMetaData.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 (_IUniswapV3Factory *IUniswapV3FactoryRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IUniswapV3Factory.Contract.IUniswapV3FactoryCaller.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 (_IUniswapV3Factory *IUniswapV3FactoryRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IUniswapV3Factory.Contract.IUniswapV3FactoryTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IUniswapV3Factory *IUniswapV3FactoryRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IUniswapV3Factory.Contract.IUniswapV3FactoryTransactor.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 (_IUniswapV3Factory *IUniswapV3FactoryCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IUniswapV3Factory.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 (_IUniswapV3Factory *IUniswapV3FactoryTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IUniswapV3Factory.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IUniswapV3Factory *IUniswapV3FactoryTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IUniswapV3Factory.Contract.contract.Transact(opts, method, params...) +} + +// FeeAmountTickSpacing is a free data retrieval call binding the contract method 0x22afcccb. +// +// Solidity: function feeAmountTickSpacing(uint24 fee) view returns(int24) +func (_IUniswapV3Factory *IUniswapV3FactoryCaller) FeeAmountTickSpacing(opts *bind.CallOpts, fee *big.Int) (*big.Int, error) { + var out []interface{} + err := _IUniswapV3Factory.contract.Call(opts, &out, "feeAmountTickSpacing", fee) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// FeeAmountTickSpacing is a free data retrieval call binding the contract method 0x22afcccb. +// +// Solidity: function feeAmountTickSpacing(uint24 fee) view returns(int24) +func (_IUniswapV3Factory *IUniswapV3FactorySession) FeeAmountTickSpacing(fee *big.Int) (*big.Int, error) { + return _IUniswapV3Factory.Contract.FeeAmountTickSpacing(&_IUniswapV3Factory.CallOpts, fee) +} + +// FeeAmountTickSpacing is a free data retrieval call binding the contract method 0x22afcccb. +// +// Solidity: function feeAmountTickSpacing(uint24 fee) view returns(int24) +func (_IUniswapV3Factory *IUniswapV3FactoryCallerSession) FeeAmountTickSpacing(fee *big.Int) (*big.Int, error) { + return _IUniswapV3Factory.Contract.FeeAmountTickSpacing(&_IUniswapV3Factory.CallOpts, fee) +} + +// GetPool is a free data retrieval call binding the contract method 0x1698ee82. +// +// Solidity: function getPool(address tokenA, address tokenB, uint24 fee) view returns(address pool) +func (_IUniswapV3Factory *IUniswapV3FactoryCaller) GetPool(opts *bind.CallOpts, tokenA common.Address, tokenB common.Address, fee *big.Int) (common.Address, error) { + var out []interface{} + err := _IUniswapV3Factory.contract.Call(opts, &out, "getPool", tokenA, tokenB, fee) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GetPool is a free data retrieval call binding the contract method 0x1698ee82. +// +// Solidity: function getPool(address tokenA, address tokenB, uint24 fee) view returns(address pool) +func (_IUniswapV3Factory *IUniswapV3FactorySession) GetPool(tokenA common.Address, tokenB common.Address, fee *big.Int) (common.Address, error) { + return _IUniswapV3Factory.Contract.GetPool(&_IUniswapV3Factory.CallOpts, tokenA, tokenB, fee) +} + +// GetPool is a free data retrieval call binding the contract method 0x1698ee82. +// +// Solidity: function getPool(address tokenA, address tokenB, uint24 fee) view returns(address pool) +func (_IUniswapV3Factory *IUniswapV3FactoryCallerSession) GetPool(tokenA common.Address, tokenB common.Address, fee *big.Int) (common.Address, error) { + return _IUniswapV3Factory.Contract.GetPool(&_IUniswapV3Factory.CallOpts, tokenA, tokenB, fee) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_IUniswapV3Factory *IUniswapV3FactoryCaller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _IUniswapV3Factory.contract.Call(opts, &out, "owner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_IUniswapV3Factory *IUniswapV3FactorySession) Owner() (common.Address, error) { + return _IUniswapV3Factory.Contract.Owner(&_IUniswapV3Factory.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_IUniswapV3Factory *IUniswapV3FactoryCallerSession) Owner() (common.Address, error) { + return _IUniswapV3Factory.Contract.Owner(&_IUniswapV3Factory.CallOpts) +} + +// CreatePool is a paid mutator transaction binding the contract method 0xa1671295. +// +// Solidity: function createPool(address tokenA, address tokenB, uint24 fee) returns(address pool) +func (_IUniswapV3Factory *IUniswapV3FactoryTransactor) CreatePool(opts *bind.TransactOpts, tokenA common.Address, tokenB common.Address, fee *big.Int) (*types.Transaction, error) { + return _IUniswapV3Factory.contract.Transact(opts, "createPool", tokenA, tokenB, fee) +} + +// CreatePool is a paid mutator transaction binding the contract method 0xa1671295. +// +// Solidity: function createPool(address tokenA, address tokenB, uint24 fee) returns(address pool) +func (_IUniswapV3Factory *IUniswapV3FactorySession) CreatePool(tokenA common.Address, tokenB common.Address, fee *big.Int) (*types.Transaction, error) { + return _IUniswapV3Factory.Contract.CreatePool(&_IUniswapV3Factory.TransactOpts, tokenA, tokenB, fee) +} + +// CreatePool is a paid mutator transaction binding the contract method 0xa1671295. +// +// Solidity: function createPool(address tokenA, address tokenB, uint24 fee) returns(address pool) +func (_IUniswapV3Factory *IUniswapV3FactoryTransactorSession) CreatePool(tokenA common.Address, tokenB common.Address, fee *big.Int) (*types.Transaction, error) { + return _IUniswapV3Factory.Contract.CreatePool(&_IUniswapV3Factory.TransactOpts, tokenA, tokenB, fee) +} + +// EnableFeeAmount is a paid mutator transaction binding the contract method 0x8a7c195f. +// +// Solidity: function enableFeeAmount(uint24 fee, int24 tickSpacing) returns() +func (_IUniswapV3Factory *IUniswapV3FactoryTransactor) EnableFeeAmount(opts *bind.TransactOpts, fee *big.Int, tickSpacing *big.Int) (*types.Transaction, error) { + return _IUniswapV3Factory.contract.Transact(opts, "enableFeeAmount", fee, tickSpacing) +} + +// EnableFeeAmount is a paid mutator transaction binding the contract method 0x8a7c195f. +// +// Solidity: function enableFeeAmount(uint24 fee, int24 tickSpacing) returns() +func (_IUniswapV3Factory *IUniswapV3FactorySession) EnableFeeAmount(fee *big.Int, tickSpacing *big.Int) (*types.Transaction, error) { + return _IUniswapV3Factory.Contract.EnableFeeAmount(&_IUniswapV3Factory.TransactOpts, fee, tickSpacing) +} + +// EnableFeeAmount is a paid mutator transaction binding the contract method 0x8a7c195f. +// +// Solidity: function enableFeeAmount(uint24 fee, int24 tickSpacing) returns() +func (_IUniswapV3Factory *IUniswapV3FactoryTransactorSession) EnableFeeAmount(fee *big.Int, tickSpacing *big.Int) (*types.Transaction, error) { + return _IUniswapV3Factory.Contract.EnableFeeAmount(&_IUniswapV3Factory.TransactOpts, fee, tickSpacing) +} + +// SetOwner is a paid mutator transaction binding the contract method 0x13af4035. +// +// Solidity: function setOwner(address _owner) returns() +func (_IUniswapV3Factory *IUniswapV3FactoryTransactor) SetOwner(opts *bind.TransactOpts, _owner common.Address) (*types.Transaction, error) { + return _IUniswapV3Factory.contract.Transact(opts, "setOwner", _owner) +} + +// SetOwner is a paid mutator transaction binding the contract method 0x13af4035. +// +// Solidity: function setOwner(address _owner) returns() +func (_IUniswapV3Factory *IUniswapV3FactorySession) SetOwner(_owner common.Address) (*types.Transaction, error) { + return _IUniswapV3Factory.Contract.SetOwner(&_IUniswapV3Factory.TransactOpts, _owner) +} + +// SetOwner is a paid mutator transaction binding the contract method 0x13af4035. +// +// Solidity: function setOwner(address _owner) returns() +func (_IUniswapV3Factory *IUniswapV3FactoryTransactorSession) SetOwner(_owner common.Address) (*types.Transaction, error) { + return _IUniswapV3Factory.Contract.SetOwner(&_IUniswapV3Factory.TransactOpts, _owner) +} + +// IUniswapV3FactoryFeeAmountEnabledIterator is returned from FilterFeeAmountEnabled and is used to iterate over the raw logs and unpacked data for FeeAmountEnabled events raised by the IUniswapV3Factory contract. +type IUniswapV3FactoryFeeAmountEnabledIterator struct { + Event *IUniswapV3FactoryFeeAmountEnabled // 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 *IUniswapV3FactoryFeeAmountEnabledIterator) 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(IUniswapV3FactoryFeeAmountEnabled) + 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(IUniswapV3FactoryFeeAmountEnabled) + 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 *IUniswapV3FactoryFeeAmountEnabledIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IUniswapV3FactoryFeeAmountEnabledIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IUniswapV3FactoryFeeAmountEnabled represents a FeeAmountEnabled event raised by the IUniswapV3Factory contract. +type IUniswapV3FactoryFeeAmountEnabled struct { + Fee *big.Int + TickSpacing *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterFeeAmountEnabled is a free log retrieval operation binding the contract event 0xc66a3fdf07232cdd185febcc6579d408c241b47ae2f9907d84be655141eeaecc. +// +// Solidity: event FeeAmountEnabled(uint24 indexed fee, int24 indexed tickSpacing) +func (_IUniswapV3Factory *IUniswapV3FactoryFilterer) FilterFeeAmountEnabled(opts *bind.FilterOpts, fee []*big.Int, tickSpacing []*big.Int) (*IUniswapV3FactoryFeeAmountEnabledIterator, error) { + + var feeRule []interface{} + for _, feeItem := range fee { + feeRule = append(feeRule, feeItem) + } + var tickSpacingRule []interface{} + for _, tickSpacingItem := range tickSpacing { + tickSpacingRule = append(tickSpacingRule, tickSpacingItem) + } + + logs, sub, err := _IUniswapV3Factory.contract.FilterLogs(opts, "FeeAmountEnabled", feeRule, tickSpacingRule) + if err != nil { + return nil, err + } + return &IUniswapV3FactoryFeeAmountEnabledIterator{contract: _IUniswapV3Factory.contract, event: "FeeAmountEnabled", logs: logs, sub: sub}, nil +} + +// WatchFeeAmountEnabled is a free log subscription operation binding the contract event 0xc66a3fdf07232cdd185febcc6579d408c241b47ae2f9907d84be655141eeaecc. +// +// Solidity: event FeeAmountEnabled(uint24 indexed fee, int24 indexed tickSpacing) +func (_IUniswapV3Factory *IUniswapV3FactoryFilterer) WatchFeeAmountEnabled(opts *bind.WatchOpts, sink chan<- *IUniswapV3FactoryFeeAmountEnabled, fee []*big.Int, tickSpacing []*big.Int) (event.Subscription, error) { + + var feeRule []interface{} + for _, feeItem := range fee { + feeRule = append(feeRule, feeItem) + } + var tickSpacingRule []interface{} + for _, tickSpacingItem := range tickSpacing { + tickSpacingRule = append(tickSpacingRule, tickSpacingItem) + } + + logs, sub, err := _IUniswapV3Factory.contract.WatchLogs(opts, "FeeAmountEnabled", feeRule, tickSpacingRule) + 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(IUniswapV3FactoryFeeAmountEnabled) + if err := _IUniswapV3Factory.contract.UnpackLog(event, "FeeAmountEnabled", 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 +} + +// ParseFeeAmountEnabled is a log parse operation binding the contract event 0xc66a3fdf07232cdd185febcc6579d408c241b47ae2f9907d84be655141eeaecc. +// +// Solidity: event FeeAmountEnabled(uint24 indexed fee, int24 indexed tickSpacing) +func (_IUniswapV3Factory *IUniswapV3FactoryFilterer) ParseFeeAmountEnabled(log types.Log) (*IUniswapV3FactoryFeeAmountEnabled, error) { + event := new(IUniswapV3FactoryFeeAmountEnabled) + if err := _IUniswapV3Factory.contract.UnpackLog(event, "FeeAmountEnabled", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IUniswapV3FactoryOwnerChangedIterator is returned from FilterOwnerChanged and is used to iterate over the raw logs and unpacked data for OwnerChanged events raised by the IUniswapV3Factory contract. +type IUniswapV3FactoryOwnerChangedIterator struct { + Event *IUniswapV3FactoryOwnerChanged // 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 *IUniswapV3FactoryOwnerChangedIterator) 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(IUniswapV3FactoryOwnerChanged) + 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(IUniswapV3FactoryOwnerChanged) + 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 *IUniswapV3FactoryOwnerChangedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IUniswapV3FactoryOwnerChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IUniswapV3FactoryOwnerChanged represents a OwnerChanged event raised by the IUniswapV3Factory contract. +type IUniswapV3FactoryOwnerChanged struct { + OldOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnerChanged is a free log retrieval operation binding the contract event 0xb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c. +// +// Solidity: event OwnerChanged(address indexed oldOwner, address indexed newOwner) +func (_IUniswapV3Factory *IUniswapV3FactoryFilterer) FilterOwnerChanged(opts *bind.FilterOpts, oldOwner []common.Address, newOwner []common.Address) (*IUniswapV3FactoryOwnerChangedIterator, error) { + + var oldOwnerRule []interface{} + for _, oldOwnerItem := range oldOwner { + oldOwnerRule = append(oldOwnerRule, oldOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _IUniswapV3Factory.contract.FilterLogs(opts, "OwnerChanged", oldOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &IUniswapV3FactoryOwnerChangedIterator{contract: _IUniswapV3Factory.contract, event: "OwnerChanged", logs: logs, sub: sub}, nil +} + +// WatchOwnerChanged is a free log subscription operation binding the contract event 0xb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c. +// +// Solidity: event OwnerChanged(address indexed oldOwner, address indexed newOwner) +func (_IUniswapV3Factory *IUniswapV3FactoryFilterer) WatchOwnerChanged(opts *bind.WatchOpts, sink chan<- *IUniswapV3FactoryOwnerChanged, oldOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var oldOwnerRule []interface{} + for _, oldOwnerItem := range oldOwner { + oldOwnerRule = append(oldOwnerRule, oldOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _IUniswapV3Factory.contract.WatchLogs(opts, "OwnerChanged", oldOwnerRule, newOwnerRule) + 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(IUniswapV3FactoryOwnerChanged) + if err := _IUniswapV3Factory.contract.UnpackLog(event, "OwnerChanged", 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 +} + +// ParseOwnerChanged is a log parse operation binding the contract event 0xb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c. +// +// Solidity: event OwnerChanged(address indexed oldOwner, address indexed newOwner) +func (_IUniswapV3Factory *IUniswapV3FactoryFilterer) ParseOwnerChanged(log types.Log) (*IUniswapV3FactoryOwnerChanged, error) { + event := new(IUniswapV3FactoryOwnerChanged) + if err := _IUniswapV3Factory.contract.UnpackLog(event, "OwnerChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IUniswapV3FactoryPoolCreatedIterator is returned from FilterPoolCreated and is used to iterate over the raw logs and unpacked data for PoolCreated events raised by the IUniswapV3Factory contract. +type IUniswapV3FactoryPoolCreatedIterator struct { + Event *IUniswapV3FactoryPoolCreated // 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 *IUniswapV3FactoryPoolCreatedIterator) 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(IUniswapV3FactoryPoolCreated) + 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(IUniswapV3FactoryPoolCreated) + 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 *IUniswapV3FactoryPoolCreatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IUniswapV3FactoryPoolCreatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IUniswapV3FactoryPoolCreated represents a PoolCreated event raised by the IUniswapV3Factory contract. +type IUniswapV3FactoryPoolCreated struct { + Token0 common.Address + Token1 common.Address + Fee *big.Int + TickSpacing *big.Int + Pool common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterPoolCreated is a free log retrieval operation binding the contract event 0x783cca1c0412dd0d695e784568c96da2e9c22ff989357a2e8b1d9b2b4e6b7118. +// +// Solidity: event PoolCreated(address indexed token0, address indexed token1, uint24 indexed fee, int24 tickSpacing, address pool) +func (_IUniswapV3Factory *IUniswapV3FactoryFilterer) FilterPoolCreated(opts *bind.FilterOpts, token0 []common.Address, token1 []common.Address, fee []*big.Int) (*IUniswapV3FactoryPoolCreatedIterator, error) { + + var token0Rule []interface{} + for _, token0Item := range token0 { + token0Rule = append(token0Rule, token0Item) + } + var token1Rule []interface{} + for _, token1Item := range token1 { + token1Rule = append(token1Rule, token1Item) + } + var feeRule []interface{} + for _, feeItem := range fee { + feeRule = append(feeRule, feeItem) + } + + logs, sub, err := _IUniswapV3Factory.contract.FilterLogs(opts, "PoolCreated", token0Rule, token1Rule, feeRule) + if err != nil { + return nil, err + } + return &IUniswapV3FactoryPoolCreatedIterator{contract: _IUniswapV3Factory.contract, event: "PoolCreated", logs: logs, sub: sub}, nil +} + +// WatchPoolCreated is a free log subscription operation binding the contract event 0x783cca1c0412dd0d695e784568c96da2e9c22ff989357a2e8b1d9b2b4e6b7118. +// +// Solidity: event PoolCreated(address indexed token0, address indexed token1, uint24 indexed fee, int24 tickSpacing, address pool) +func (_IUniswapV3Factory *IUniswapV3FactoryFilterer) WatchPoolCreated(opts *bind.WatchOpts, sink chan<- *IUniswapV3FactoryPoolCreated, token0 []common.Address, token1 []common.Address, fee []*big.Int) (event.Subscription, error) { + + var token0Rule []interface{} + for _, token0Item := range token0 { + token0Rule = append(token0Rule, token0Item) + } + var token1Rule []interface{} + for _, token1Item := range token1 { + token1Rule = append(token1Rule, token1Item) + } + var feeRule []interface{} + for _, feeItem := range fee { + feeRule = append(feeRule, feeItem) + } + + logs, sub, err := _IUniswapV3Factory.contract.WatchLogs(opts, "PoolCreated", token0Rule, token1Rule, feeRule) + 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(IUniswapV3FactoryPoolCreated) + if err := _IUniswapV3Factory.contract.UnpackLog(event, "PoolCreated", 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 +} + +// ParsePoolCreated is a log parse operation binding the contract event 0x783cca1c0412dd0d695e784568c96da2e9c22ff989357a2e8b1d9b2b4e6b7118. +// +// Solidity: event PoolCreated(address indexed token0, address indexed token1, uint24 indexed fee, int24 tickSpacing, address pool) +func (_IUniswapV3Factory *IUniswapV3FactoryFilterer) ParsePoolCreated(log types.Log) (*IUniswapV3FactoryPoolCreated, error) { + event := new(IUniswapV3FactoryPoolCreated) + if err := _IUniswapV3Factory.contract.UnpackLog(event, "PoolCreated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/pkg/uniswap/v3-core/contracts/interfaces/iuniswapv3pool.sol/iuniswapv3pool.go b/pkg/uniswap/v3-core/contracts/interfaces/iuniswapv3pool.sol/iuniswapv3pool.go new file mode 100644 index 00000000..9a6f17ab --- /dev/null +++ b/pkg/uniswap/v3-core/contracts/interfaces/iuniswapv3pool.sol/iuniswapv3pool.go @@ -0,0 +1,2455 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package iuniswapv3pool + +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 +) + +// IUniswapV3PoolMetaData contains all meta data concerning the IUniswapV3Pool contract. +var IUniswapV3PoolMetaData = &bind.MetaData{ + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"name\":\"Collect\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"name\":\"CollectProtocol\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"paid0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"paid1\",\"type\":\"uint256\"}],\"name\":\"Flash\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"observationCardinalityNextOld\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"observationCardinalityNextNew\",\"type\":\"uint16\"}],\"name\":\"IncreaseObservationCardinalityNext\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"Initialize\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol0Old\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol1Old\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol0New\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol1New\",\"type\":\"uint8\"}],\"name\":\"SetFeeProtocol\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"amount0\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"amount1\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"amount0Requested\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1Requested\",\"type\":\"uint128\"}],\"name\":\"collect\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"amount0Requested\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1Requested\",\"type\":\"uint128\"}],\"name\":\"collectProtocol\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fee\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeGrowthGlobal0X128\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeGrowthGlobal1X128\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"flash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"observationCardinalityNext\",\"type\":\"uint16\"}],\"name\":\"increaseObservationCardinalityNext\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"liquidity\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxLiquidityPerTick\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"observations\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"blockTimestamp\",\"type\":\"uint32\"},{\"internalType\":\"int56\",\"name\":\"tickCumulative\",\"type\":\"int56\"},{\"internalType\":\"uint160\",\"name\":\"secondsPerLiquidityCumulativeX128\",\"type\":\"uint160\"},{\"internalType\":\"bool\",\"name\":\"initialized\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32[]\",\"name\":\"secondsAgos\",\"type\":\"uint32[]\"}],\"name\":\"observe\",\"outputs\":[{\"internalType\":\"int56[]\",\"name\":\"tickCumulatives\",\"type\":\"int56[]\"},{\"internalType\":\"uint160[]\",\"name\":\"secondsPerLiquidityCumulativeX128s\",\"type\":\"uint160[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"}],\"name\":\"positions\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"_liquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside0LastX128\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside1LastX128\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"tokensOwed0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"tokensOwed1\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolFees\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"token0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"token1\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"feeProtocol0\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"feeProtocol1\",\"type\":\"uint8\"}],\"name\":\"setFeeProtocol\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slot0\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"},{\"internalType\":\"uint16\",\"name\":\"observationIndex\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"observationCardinality\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"observationCardinalityNext\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"feeProtocol\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"unlocked\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"}],\"name\":\"snapshotCumulativesInside\",\"outputs\":[{\"internalType\":\"int56\",\"name\":\"tickCumulativeInside\",\"type\":\"int56\"},{\"internalType\":\"uint160\",\"name\":\"secondsPerLiquidityInsideX128\",\"type\":\"uint160\"},{\"internalType\":\"uint32\",\"name\":\"secondsInside\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"zeroForOne\",\"type\":\"bool\"},{\"internalType\":\"int256\",\"name\":\"amountSpecified\",\"type\":\"int256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"amount0\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"amount1\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int16\",\"name\":\"wordPosition\",\"type\":\"int16\"}],\"name\":\"tickBitmap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tickSpacing\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"\",\"type\":\"int24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"ticks\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"liquidityGross\",\"type\":\"uint128\"},{\"internalType\":\"int128\",\"name\":\"liquidityNet\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthOutside0X128\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthOutside1X128\",\"type\":\"uint256\"},{\"internalType\":\"int56\",\"name\":\"tickCumulativeOutside\",\"type\":\"int56\"},{\"internalType\":\"uint160\",\"name\":\"secondsPerLiquidityOutsideX128\",\"type\":\"uint160\"},{\"internalType\":\"uint32\",\"name\":\"secondsOutside\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"initialized\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", +} + +// IUniswapV3PoolABI is the input ABI used to generate the binding from. +// Deprecated: Use IUniswapV3PoolMetaData.ABI instead. +var IUniswapV3PoolABI = IUniswapV3PoolMetaData.ABI + +// IUniswapV3Pool is an auto generated Go binding around an Ethereum contract. +type IUniswapV3Pool struct { + IUniswapV3PoolCaller // Read-only binding to the contract + IUniswapV3PoolTransactor // Write-only binding to the contract + IUniswapV3PoolFilterer // Log filterer for contract events +} + +// IUniswapV3PoolCaller is an auto generated read-only Go binding around an Ethereum contract. +type IUniswapV3PoolCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV3PoolTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IUniswapV3PoolTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV3PoolFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IUniswapV3PoolFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV3PoolSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IUniswapV3PoolSession struct { + Contract *IUniswapV3Pool // 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 +} + +// IUniswapV3PoolCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IUniswapV3PoolCallerSession struct { + Contract *IUniswapV3PoolCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IUniswapV3PoolTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IUniswapV3PoolTransactorSession struct { + Contract *IUniswapV3PoolTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IUniswapV3PoolRaw is an auto generated low-level Go binding around an Ethereum contract. +type IUniswapV3PoolRaw struct { + Contract *IUniswapV3Pool // Generic contract binding to access the raw methods on +} + +// IUniswapV3PoolCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IUniswapV3PoolCallerRaw struct { + Contract *IUniswapV3PoolCaller // Generic read-only contract binding to access the raw methods on +} + +// IUniswapV3PoolTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IUniswapV3PoolTransactorRaw struct { + Contract *IUniswapV3PoolTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIUniswapV3Pool creates a new instance of IUniswapV3Pool, bound to a specific deployed contract. +func NewIUniswapV3Pool(address common.Address, backend bind.ContractBackend) (*IUniswapV3Pool, error) { + contract, err := bindIUniswapV3Pool(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IUniswapV3Pool{IUniswapV3PoolCaller: IUniswapV3PoolCaller{contract: contract}, IUniswapV3PoolTransactor: IUniswapV3PoolTransactor{contract: contract}, IUniswapV3PoolFilterer: IUniswapV3PoolFilterer{contract: contract}}, nil +} + +// NewIUniswapV3PoolCaller creates a new read-only instance of IUniswapV3Pool, bound to a specific deployed contract. +func NewIUniswapV3PoolCaller(address common.Address, caller bind.ContractCaller) (*IUniswapV3PoolCaller, error) { + contract, err := bindIUniswapV3Pool(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IUniswapV3PoolCaller{contract: contract}, nil +} + +// NewIUniswapV3PoolTransactor creates a new write-only instance of IUniswapV3Pool, bound to a specific deployed contract. +func NewIUniswapV3PoolTransactor(address common.Address, transactor bind.ContractTransactor) (*IUniswapV3PoolTransactor, error) { + contract, err := bindIUniswapV3Pool(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IUniswapV3PoolTransactor{contract: contract}, nil +} + +// NewIUniswapV3PoolFilterer creates a new log filterer instance of IUniswapV3Pool, bound to a specific deployed contract. +func NewIUniswapV3PoolFilterer(address common.Address, filterer bind.ContractFilterer) (*IUniswapV3PoolFilterer, error) { + contract, err := bindIUniswapV3Pool(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IUniswapV3PoolFilterer{contract: contract}, nil +} + +// bindIUniswapV3Pool binds a generic wrapper to an already deployed contract. +func bindIUniswapV3Pool(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IUniswapV3PoolMetaData.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 (_IUniswapV3Pool *IUniswapV3PoolRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IUniswapV3Pool.Contract.IUniswapV3PoolCaller.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 (_IUniswapV3Pool *IUniswapV3PoolRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IUniswapV3Pool.Contract.IUniswapV3PoolTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IUniswapV3Pool *IUniswapV3PoolRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IUniswapV3Pool.Contract.IUniswapV3PoolTransactor.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 (_IUniswapV3Pool *IUniswapV3PoolCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IUniswapV3Pool.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 (_IUniswapV3Pool *IUniswapV3PoolTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IUniswapV3Pool.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IUniswapV3Pool *IUniswapV3PoolTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IUniswapV3Pool.Contract.contract.Transact(opts, method, params...) +} + +// Factory is a free data retrieval call binding the contract method 0xc45a0155. +// +// Solidity: function factory() view returns(address) +func (_IUniswapV3Pool *IUniswapV3PoolCaller) Factory(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _IUniswapV3Pool.contract.Call(opts, &out, "factory") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Factory is a free data retrieval call binding the contract method 0xc45a0155. +// +// Solidity: function factory() view returns(address) +func (_IUniswapV3Pool *IUniswapV3PoolSession) Factory() (common.Address, error) { + return _IUniswapV3Pool.Contract.Factory(&_IUniswapV3Pool.CallOpts) +} + +// Factory is a free data retrieval call binding the contract method 0xc45a0155. +// +// Solidity: function factory() view returns(address) +func (_IUniswapV3Pool *IUniswapV3PoolCallerSession) Factory() (common.Address, error) { + return _IUniswapV3Pool.Contract.Factory(&_IUniswapV3Pool.CallOpts) +} + +// Fee is a free data retrieval call binding the contract method 0xddca3f43. +// +// Solidity: function fee() view returns(uint24) +func (_IUniswapV3Pool *IUniswapV3PoolCaller) Fee(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IUniswapV3Pool.contract.Call(opts, &out, "fee") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Fee is a free data retrieval call binding the contract method 0xddca3f43. +// +// Solidity: function fee() view returns(uint24) +func (_IUniswapV3Pool *IUniswapV3PoolSession) Fee() (*big.Int, error) { + return _IUniswapV3Pool.Contract.Fee(&_IUniswapV3Pool.CallOpts) +} + +// Fee is a free data retrieval call binding the contract method 0xddca3f43. +// +// Solidity: function fee() view returns(uint24) +func (_IUniswapV3Pool *IUniswapV3PoolCallerSession) Fee() (*big.Int, error) { + return _IUniswapV3Pool.Contract.Fee(&_IUniswapV3Pool.CallOpts) +} + +// FeeGrowthGlobal0X128 is a free data retrieval call binding the contract method 0xf3058399. +// +// Solidity: function feeGrowthGlobal0X128() view returns(uint256) +func (_IUniswapV3Pool *IUniswapV3PoolCaller) FeeGrowthGlobal0X128(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IUniswapV3Pool.contract.Call(opts, &out, "feeGrowthGlobal0X128") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// FeeGrowthGlobal0X128 is a free data retrieval call binding the contract method 0xf3058399. +// +// Solidity: function feeGrowthGlobal0X128() view returns(uint256) +func (_IUniswapV3Pool *IUniswapV3PoolSession) FeeGrowthGlobal0X128() (*big.Int, error) { + return _IUniswapV3Pool.Contract.FeeGrowthGlobal0X128(&_IUniswapV3Pool.CallOpts) +} + +// FeeGrowthGlobal0X128 is a free data retrieval call binding the contract method 0xf3058399. +// +// Solidity: function feeGrowthGlobal0X128() view returns(uint256) +func (_IUniswapV3Pool *IUniswapV3PoolCallerSession) FeeGrowthGlobal0X128() (*big.Int, error) { + return _IUniswapV3Pool.Contract.FeeGrowthGlobal0X128(&_IUniswapV3Pool.CallOpts) +} + +// FeeGrowthGlobal1X128 is a free data retrieval call binding the contract method 0x46141319. +// +// Solidity: function feeGrowthGlobal1X128() view returns(uint256) +func (_IUniswapV3Pool *IUniswapV3PoolCaller) FeeGrowthGlobal1X128(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IUniswapV3Pool.contract.Call(opts, &out, "feeGrowthGlobal1X128") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// FeeGrowthGlobal1X128 is a free data retrieval call binding the contract method 0x46141319. +// +// Solidity: function feeGrowthGlobal1X128() view returns(uint256) +func (_IUniswapV3Pool *IUniswapV3PoolSession) FeeGrowthGlobal1X128() (*big.Int, error) { + return _IUniswapV3Pool.Contract.FeeGrowthGlobal1X128(&_IUniswapV3Pool.CallOpts) +} + +// FeeGrowthGlobal1X128 is a free data retrieval call binding the contract method 0x46141319. +// +// Solidity: function feeGrowthGlobal1X128() view returns(uint256) +func (_IUniswapV3Pool *IUniswapV3PoolCallerSession) FeeGrowthGlobal1X128() (*big.Int, error) { + return _IUniswapV3Pool.Contract.FeeGrowthGlobal1X128(&_IUniswapV3Pool.CallOpts) +} + +// Liquidity is a free data retrieval call binding the contract method 0x1a686502. +// +// Solidity: function liquidity() view returns(uint128) +func (_IUniswapV3Pool *IUniswapV3PoolCaller) Liquidity(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IUniswapV3Pool.contract.Call(opts, &out, "liquidity") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Liquidity is a free data retrieval call binding the contract method 0x1a686502. +// +// Solidity: function liquidity() view returns(uint128) +func (_IUniswapV3Pool *IUniswapV3PoolSession) Liquidity() (*big.Int, error) { + return _IUniswapV3Pool.Contract.Liquidity(&_IUniswapV3Pool.CallOpts) +} + +// Liquidity is a free data retrieval call binding the contract method 0x1a686502. +// +// Solidity: function liquidity() view returns(uint128) +func (_IUniswapV3Pool *IUniswapV3PoolCallerSession) Liquidity() (*big.Int, error) { + return _IUniswapV3Pool.Contract.Liquidity(&_IUniswapV3Pool.CallOpts) +} + +// MaxLiquidityPerTick is a free data retrieval call binding the contract method 0x70cf754a. +// +// Solidity: function maxLiquidityPerTick() view returns(uint128) +func (_IUniswapV3Pool *IUniswapV3PoolCaller) MaxLiquidityPerTick(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IUniswapV3Pool.contract.Call(opts, &out, "maxLiquidityPerTick") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// MaxLiquidityPerTick is a free data retrieval call binding the contract method 0x70cf754a. +// +// Solidity: function maxLiquidityPerTick() view returns(uint128) +func (_IUniswapV3Pool *IUniswapV3PoolSession) MaxLiquidityPerTick() (*big.Int, error) { + return _IUniswapV3Pool.Contract.MaxLiquidityPerTick(&_IUniswapV3Pool.CallOpts) +} + +// MaxLiquidityPerTick is a free data retrieval call binding the contract method 0x70cf754a. +// +// Solidity: function maxLiquidityPerTick() view returns(uint128) +func (_IUniswapV3Pool *IUniswapV3PoolCallerSession) MaxLiquidityPerTick() (*big.Int, error) { + return _IUniswapV3Pool.Contract.MaxLiquidityPerTick(&_IUniswapV3Pool.CallOpts) +} + +// Observations is a free data retrieval call binding the contract method 0x252c09d7. +// +// Solidity: function observations(uint256 index) view returns(uint32 blockTimestamp, int56 tickCumulative, uint160 secondsPerLiquidityCumulativeX128, bool initialized) +func (_IUniswapV3Pool *IUniswapV3PoolCaller) Observations(opts *bind.CallOpts, index *big.Int) (struct { + BlockTimestamp uint32 + TickCumulative *big.Int + SecondsPerLiquidityCumulativeX128 *big.Int + Initialized bool +}, error) { + var out []interface{} + err := _IUniswapV3Pool.contract.Call(opts, &out, "observations", index) + + outstruct := new(struct { + BlockTimestamp uint32 + TickCumulative *big.Int + SecondsPerLiquidityCumulativeX128 *big.Int + Initialized bool + }) + if err != nil { + return *outstruct, err + } + + outstruct.BlockTimestamp = *abi.ConvertType(out[0], new(uint32)).(*uint32) + outstruct.TickCumulative = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + outstruct.SecondsPerLiquidityCumulativeX128 = *abi.ConvertType(out[2], new(*big.Int)).(**big.Int) + outstruct.Initialized = *abi.ConvertType(out[3], new(bool)).(*bool) + + return *outstruct, err + +} + +// Observations is a free data retrieval call binding the contract method 0x252c09d7. +// +// Solidity: function observations(uint256 index) view returns(uint32 blockTimestamp, int56 tickCumulative, uint160 secondsPerLiquidityCumulativeX128, bool initialized) +func (_IUniswapV3Pool *IUniswapV3PoolSession) Observations(index *big.Int) (struct { + BlockTimestamp uint32 + TickCumulative *big.Int + SecondsPerLiquidityCumulativeX128 *big.Int + Initialized bool +}, error) { + return _IUniswapV3Pool.Contract.Observations(&_IUniswapV3Pool.CallOpts, index) +} + +// Observations is a free data retrieval call binding the contract method 0x252c09d7. +// +// Solidity: function observations(uint256 index) view returns(uint32 blockTimestamp, int56 tickCumulative, uint160 secondsPerLiquidityCumulativeX128, bool initialized) +func (_IUniswapV3Pool *IUniswapV3PoolCallerSession) Observations(index *big.Int) (struct { + BlockTimestamp uint32 + TickCumulative *big.Int + SecondsPerLiquidityCumulativeX128 *big.Int + Initialized bool +}, error) { + return _IUniswapV3Pool.Contract.Observations(&_IUniswapV3Pool.CallOpts, index) +} + +// Observe is a free data retrieval call binding the contract method 0x883bdbfd. +// +// Solidity: function observe(uint32[] secondsAgos) view returns(int56[] tickCumulatives, uint160[] secondsPerLiquidityCumulativeX128s) +func (_IUniswapV3Pool *IUniswapV3PoolCaller) Observe(opts *bind.CallOpts, secondsAgos []uint32) (struct { + TickCumulatives []*big.Int + SecondsPerLiquidityCumulativeX128s []*big.Int +}, error) { + var out []interface{} + err := _IUniswapV3Pool.contract.Call(opts, &out, "observe", secondsAgos) + + outstruct := new(struct { + TickCumulatives []*big.Int + SecondsPerLiquidityCumulativeX128s []*big.Int + }) + if err != nil { + return *outstruct, err + } + + outstruct.TickCumulatives = *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) + outstruct.SecondsPerLiquidityCumulativeX128s = *abi.ConvertType(out[1], new([]*big.Int)).(*[]*big.Int) + + return *outstruct, err + +} + +// Observe is a free data retrieval call binding the contract method 0x883bdbfd. +// +// Solidity: function observe(uint32[] secondsAgos) view returns(int56[] tickCumulatives, uint160[] secondsPerLiquidityCumulativeX128s) +func (_IUniswapV3Pool *IUniswapV3PoolSession) Observe(secondsAgos []uint32) (struct { + TickCumulatives []*big.Int + SecondsPerLiquidityCumulativeX128s []*big.Int +}, error) { + return _IUniswapV3Pool.Contract.Observe(&_IUniswapV3Pool.CallOpts, secondsAgos) +} + +// Observe is a free data retrieval call binding the contract method 0x883bdbfd. +// +// Solidity: function observe(uint32[] secondsAgos) view returns(int56[] tickCumulatives, uint160[] secondsPerLiquidityCumulativeX128s) +func (_IUniswapV3Pool *IUniswapV3PoolCallerSession) Observe(secondsAgos []uint32) (struct { + TickCumulatives []*big.Int + SecondsPerLiquidityCumulativeX128s []*big.Int +}, error) { + return _IUniswapV3Pool.Contract.Observe(&_IUniswapV3Pool.CallOpts, secondsAgos) +} + +// Positions is a free data retrieval call binding the contract method 0x514ea4bf. +// +// Solidity: function positions(bytes32 key) view returns(uint128 _liquidity, uint256 feeGrowthInside0LastX128, uint256 feeGrowthInside1LastX128, uint128 tokensOwed0, uint128 tokensOwed1) +func (_IUniswapV3Pool *IUniswapV3PoolCaller) Positions(opts *bind.CallOpts, key [32]byte) (struct { + Liquidity *big.Int + FeeGrowthInside0LastX128 *big.Int + FeeGrowthInside1LastX128 *big.Int + TokensOwed0 *big.Int + TokensOwed1 *big.Int +}, error) { + var out []interface{} + err := _IUniswapV3Pool.contract.Call(opts, &out, "positions", key) + + outstruct := new(struct { + Liquidity *big.Int + FeeGrowthInside0LastX128 *big.Int + FeeGrowthInside1LastX128 *big.Int + TokensOwed0 *big.Int + TokensOwed1 *big.Int + }) + if err != nil { + return *outstruct, err + } + + outstruct.Liquidity = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + outstruct.FeeGrowthInside0LastX128 = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + outstruct.FeeGrowthInside1LastX128 = *abi.ConvertType(out[2], new(*big.Int)).(**big.Int) + outstruct.TokensOwed0 = *abi.ConvertType(out[3], new(*big.Int)).(**big.Int) + outstruct.TokensOwed1 = *abi.ConvertType(out[4], new(*big.Int)).(**big.Int) + + return *outstruct, err + +} + +// Positions is a free data retrieval call binding the contract method 0x514ea4bf. +// +// Solidity: function positions(bytes32 key) view returns(uint128 _liquidity, uint256 feeGrowthInside0LastX128, uint256 feeGrowthInside1LastX128, uint128 tokensOwed0, uint128 tokensOwed1) +func (_IUniswapV3Pool *IUniswapV3PoolSession) Positions(key [32]byte) (struct { + Liquidity *big.Int + FeeGrowthInside0LastX128 *big.Int + FeeGrowthInside1LastX128 *big.Int + TokensOwed0 *big.Int + TokensOwed1 *big.Int +}, error) { + return _IUniswapV3Pool.Contract.Positions(&_IUniswapV3Pool.CallOpts, key) +} + +// Positions is a free data retrieval call binding the contract method 0x514ea4bf. +// +// Solidity: function positions(bytes32 key) view returns(uint128 _liquidity, uint256 feeGrowthInside0LastX128, uint256 feeGrowthInside1LastX128, uint128 tokensOwed0, uint128 tokensOwed1) +func (_IUniswapV3Pool *IUniswapV3PoolCallerSession) Positions(key [32]byte) (struct { + Liquidity *big.Int + FeeGrowthInside0LastX128 *big.Int + FeeGrowthInside1LastX128 *big.Int + TokensOwed0 *big.Int + TokensOwed1 *big.Int +}, error) { + return _IUniswapV3Pool.Contract.Positions(&_IUniswapV3Pool.CallOpts, key) +} + +// ProtocolFees is a free data retrieval call binding the contract method 0x1ad8b03b. +// +// Solidity: function protocolFees() view returns(uint128 token0, uint128 token1) +func (_IUniswapV3Pool *IUniswapV3PoolCaller) ProtocolFees(opts *bind.CallOpts) (struct { + Token0 *big.Int + Token1 *big.Int +}, error) { + var out []interface{} + err := _IUniswapV3Pool.contract.Call(opts, &out, "protocolFees") + + outstruct := new(struct { + Token0 *big.Int + Token1 *big.Int + }) + if err != nil { + return *outstruct, err + } + + outstruct.Token0 = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + outstruct.Token1 = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + + return *outstruct, err + +} + +// ProtocolFees is a free data retrieval call binding the contract method 0x1ad8b03b. +// +// Solidity: function protocolFees() view returns(uint128 token0, uint128 token1) +func (_IUniswapV3Pool *IUniswapV3PoolSession) ProtocolFees() (struct { + Token0 *big.Int + Token1 *big.Int +}, error) { + return _IUniswapV3Pool.Contract.ProtocolFees(&_IUniswapV3Pool.CallOpts) +} + +// ProtocolFees is a free data retrieval call binding the contract method 0x1ad8b03b. +// +// Solidity: function protocolFees() view returns(uint128 token0, uint128 token1) +func (_IUniswapV3Pool *IUniswapV3PoolCallerSession) ProtocolFees() (struct { + Token0 *big.Int + Token1 *big.Int +}, error) { + return _IUniswapV3Pool.Contract.ProtocolFees(&_IUniswapV3Pool.CallOpts) +} + +// Slot0 is a free data retrieval call binding the contract method 0x3850c7bd. +// +// Solidity: function slot0() view returns(uint160 sqrtPriceX96, int24 tick, uint16 observationIndex, uint16 observationCardinality, uint16 observationCardinalityNext, uint8 feeProtocol, bool unlocked) +func (_IUniswapV3Pool *IUniswapV3PoolCaller) Slot0(opts *bind.CallOpts) (struct { + SqrtPriceX96 *big.Int + Tick *big.Int + ObservationIndex uint16 + ObservationCardinality uint16 + ObservationCardinalityNext uint16 + FeeProtocol uint8 + Unlocked bool +}, error) { + var out []interface{} + err := _IUniswapV3Pool.contract.Call(opts, &out, "slot0") + + outstruct := new(struct { + SqrtPriceX96 *big.Int + Tick *big.Int + ObservationIndex uint16 + ObservationCardinality uint16 + ObservationCardinalityNext uint16 + FeeProtocol uint8 + Unlocked bool + }) + if err != nil { + return *outstruct, err + } + + outstruct.SqrtPriceX96 = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + outstruct.Tick = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + outstruct.ObservationIndex = *abi.ConvertType(out[2], new(uint16)).(*uint16) + outstruct.ObservationCardinality = *abi.ConvertType(out[3], new(uint16)).(*uint16) + outstruct.ObservationCardinalityNext = *abi.ConvertType(out[4], new(uint16)).(*uint16) + outstruct.FeeProtocol = *abi.ConvertType(out[5], new(uint8)).(*uint8) + outstruct.Unlocked = *abi.ConvertType(out[6], new(bool)).(*bool) + + return *outstruct, err + +} + +// Slot0 is a free data retrieval call binding the contract method 0x3850c7bd. +// +// Solidity: function slot0() view returns(uint160 sqrtPriceX96, int24 tick, uint16 observationIndex, uint16 observationCardinality, uint16 observationCardinalityNext, uint8 feeProtocol, bool unlocked) +func (_IUniswapV3Pool *IUniswapV3PoolSession) Slot0() (struct { + SqrtPriceX96 *big.Int + Tick *big.Int + ObservationIndex uint16 + ObservationCardinality uint16 + ObservationCardinalityNext uint16 + FeeProtocol uint8 + Unlocked bool +}, error) { + return _IUniswapV3Pool.Contract.Slot0(&_IUniswapV3Pool.CallOpts) +} + +// Slot0 is a free data retrieval call binding the contract method 0x3850c7bd. +// +// Solidity: function slot0() view returns(uint160 sqrtPriceX96, int24 tick, uint16 observationIndex, uint16 observationCardinality, uint16 observationCardinalityNext, uint8 feeProtocol, bool unlocked) +func (_IUniswapV3Pool *IUniswapV3PoolCallerSession) Slot0() (struct { + SqrtPriceX96 *big.Int + Tick *big.Int + ObservationIndex uint16 + ObservationCardinality uint16 + ObservationCardinalityNext uint16 + FeeProtocol uint8 + Unlocked bool +}, error) { + return _IUniswapV3Pool.Contract.Slot0(&_IUniswapV3Pool.CallOpts) +} + +// SnapshotCumulativesInside is a free data retrieval call binding the contract method 0xa38807f2. +// +// Solidity: function snapshotCumulativesInside(int24 tickLower, int24 tickUpper) view returns(int56 tickCumulativeInside, uint160 secondsPerLiquidityInsideX128, uint32 secondsInside) +func (_IUniswapV3Pool *IUniswapV3PoolCaller) SnapshotCumulativesInside(opts *bind.CallOpts, tickLower *big.Int, tickUpper *big.Int) (struct { + TickCumulativeInside *big.Int + SecondsPerLiquidityInsideX128 *big.Int + SecondsInside uint32 +}, error) { + var out []interface{} + err := _IUniswapV3Pool.contract.Call(opts, &out, "snapshotCumulativesInside", tickLower, tickUpper) + + outstruct := new(struct { + TickCumulativeInside *big.Int + SecondsPerLiquidityInsideX128 *big.Int + SecondsInside uint32 + }) + if err != nil { + return *outstruct, err + } + + outstruct.TickCumulativeInside = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + outstruct.SecondsPerLiquidityInsideX128 = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + outstruct.SecondsInside = *abi.ConvertType(out[2], new(uint32)).(*uint32) + + return *outstruct, err + +} + +// SnapshotCumulativesInside is a free data retrieval call binding the contract method 0xa38807f2. +// +// Solidity: function snapshotCumulativesInside(int24 tickLower, int24 tickUpper) view returns(int56 tickCumulativeInside, uint160 secondsPerLiquidityInsideX128, uint32 secondsInside) +func (_IUniswapV3Pool *IUniswapV3PoolSession) SnapshotCumulativesInside(tickLower *big.Int, tickUpper *big.Int) (struct { + TickCumulativeInside *big.Int + SecondsPerLiquidityInsideX128 *big.Int + SecondsInside uint32 +}, error) { + return _IUniswapV3Pool.Contract.SnapshotCumulativesInside(&_IUniswapV3Pool.CallOpts, tickLower, tickUpper) +} + +// SnapshotCumulativesInside is a free data retrieval call binding the contract method 0xa38807f2. +// +// Solidity: function snapshotCumulativesInside(int24 tickLower, int24 tickUpper) view returns(int56 tickCumulativeInside, uint160 secondsPerLiquidityInsideX128, uint32 secondsInside) +func (_IUniswapV3Pool *IUniswapV3PoolCallerSession) SnapshotCumulativesInside(tickLower *big.Int, tickUpper *big.Int) (struct { + TickCumulativeInside *big.Int + SecondsPerLiquidityInsideX128 *big.Int + SecondsInside uint32 +}, error) { + return _IUniswapV3Pool.Contract.SnapshotCumulativesInside(&_IUniswapV3Pool.CallOpts, tickLower, tickUpper) +} + +// TickBitmap is a free data retrieval call binding the contract method 0x5339c296. +// +// Solidity: function tickBitmap(int16 wordPosition) view returns(uint256) +func (_IUniswapV3Pool *IUniswapV3PoolCaller) TickBitmap(opts *bind.CallOpts, wordPosition int16) (*big.Int, error) { + var out []interface{} + err := _IUniswapV3Pool.contract.Call(opts, &out, "tickBitmap", wordPosition) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TickBitmap is a free data retrieval call binding the contract method 0x5339c296. +// +// Solidity: function tickBitmap(int16 wordPosition) view returns(uint256) +func (_IUniswapV3Pool *IUniswapV3PoolSession) TickBitmap(wordPosition int16) (*big.Int, error) { + return _IUniswapV3Pool.Contract.TickBitmap(&_IUniswapV3Pool.CallOpts, wordPosition) +} + +// TickBitmap is a free data retrieval call binding the contract method 0x5339c296. +// +// Solidity: function tickBitmap(int16 wordPosition) view returns(uint256) +func (_IUniswapV3Pool *IUniswapV3PoolCallerSession) TickBitmap(wordPosition int16) (*big.Int, error) { + return _IUniswapV3Pool.Contract.TickBitmap(&_IUniswapV3Pool.CallOpts, wordPosition) +} + +// TickSpacing is a free data retrieval call binding the contract method 0xd0c93a7c. +// +// Solidity: function tickSpacing() view returns(int24) +func (_IUniswapV3Pool *IUniswapV3PoolCaller) TickSpacing(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IUniswapV3Pool.contract.Call(opts, &out, "tickSpacing") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TickSpacing is a free data retrieval call binding the contract method 0xd0c93a7c. +// +// Solidity: function tickSpacing() view returns(int24) +func (_IUniswapV3Pool *IUniswapV3PoolSession) TickSpacing() (*big.Int, error) { + return _IUniswapV3Pool.Contract.TickSpacing(&_IUniswapV3Pool.CallOpts) +} + +// TickSpacing is a free data retrieval call binding the contract method 0xd0c93a7c. +// +// Solidity: function tickSpacing() view returns(int24) +func (_IUniswapV3Pool *IUniswapV3PoolCallerSession) TickSpacing() (*big.Int, error) { + return _IUniswapV3Pool.Contract.TickSpacing(&_IUniswapV3Pool.CallOpts) +} + +// Ticks is a free data retrieval call binding the contract method 0xf30dba93. +// +// Solidity: function ticks(int24 tick) view returns(uint128 liquidityGross, int128 liquidityNet, uint256 feeGrowthOutside0X128, uint256 feeGrowthOutside1X128, int56 tickCumulativeOutside, uint160 secondsPerLiquidityOutsideX128, uint32 secondsOutside, bool initialized) +func (_IUniswapV3Pool *IUniswapV3PoolCaller) Ticks(opts *bind.CallOpts, tick *big.Int) (struct { + LiquidityGross *big.Int + LiquidityNet *big.Int + FeeGrowthOutside0X128 *big.Int + FeeGrowthOutside1X128 *big.Int + TickCumulativeOutside *big.Int + SecondsPerLiquidityOutsideX128 *big.Int + SecondsOutside uint32 + Initialized bool +}, error) { + var out []interface{} + err := _IUniswapV3Pool.contract.Call(opts, &out, "ticks", tick) + + outstruct := new(struct { + LiquidityGross *big.Int + LiquidityNet *big.Int + FeeGrowthOutside0X128 *big.Int + FeeGrowthOutside1X128 *big.Int + TickCumulativeOutside *big.Int + SecondsPerLiquidityOutsideX128 *big.Int + SecondsOutside uint32 + Initialized bool + }) + if err != nil { + return *outstruct, err + } + + outstruct.LiquidityGross = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + outstruct.LiquidityNet = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + outstruct.FeeGrowthOutside0X128 = *abi.ConvertType(out[2], new(*big.Int)).(**big.Int) + outstruct.FeeGrowthOutside1X128 = *abi.ConvertType(out[3], new(*big.Int)).(**big.Int) + outstruct.TickCumulativeOutside = *abi.ConvertType(out[4], new(*big.Int)).(**big.Int) + outstruct.SecondsPerLiquidityOutsideX128 = *abi.ConvertType(out[5], new(*big.Int)).(**big.Int) + outstruct.SecondsOutside = *abi.ConvertType(out[6], new(uint32)).(*uint32) + outstruct.Initialized = *abi.ConvertType(out[7], new(bool)).(*bool) + + return *outstruct, err + +} + +// Ticks is a free data retrieval call binding the contract method 0xf30dba93. +// +// Solidity: function ticks(int24 tick) view returns(uint128 liquidityGross, int128 liquidityNet, uint256 feeGrowthOutside0X128, uint256 feeGrowthOutside1X128, int56 tickCumulativeOutside, uint160 secondsPerLiquidityOutsideX128, uint32 secondsOutside, bool initialized) +func (_IUniswapV3Pool *IUniswapV3PoolSession) Ticks(tick *big.Int) (struct { + LiquidityGross *big.Int + LiquidityNet *big.Int + FeeGrowthOutside0X128 *big.Int + FeeGrowthOutside1X128 *big.Int + TickCumulativeOutside *big.Int + SecondsPerLiquidityOutsideX128 *big.Int + SecondsOutside uint32 + Initialized bool +}, error) { + return _IUniswapV3Pool.Contract.Ticks(&_IUniswapV3Pool.CallOpts, tick) +} + +// Ticks is a free data retrieval call binding the contract method 0xf30dba93. +// +// Solidity: function ticks(int24 tick) view returns(uint128 liquidityGross, int128 liquidityNet, uint256 feeGrowthOutside0X128, uint256 feeGrowthOutside1X128, int56 tickCumulativeOutside, uint160 secondsPerLiquidityOutsideX128, uint32 secondsOutside, bool initialized) +func (_IUniswapV3Pool *IUniswapV3PoolCallerSession) Ticks(tick *big.Int) (struct { + LiquidityGross *big.Int + LiquidityNet *big.Int + FeeGrowthOutside0X128 *big.Int + FeeGrowthOutside1X128 *big.Int + TickCumulativeOutside *big.Int + SecondsPerLiquidityOutsideX128 *big.Int + SecondsOutside uint32 + Initialized bool +}, error) { + return _IUniswapV3Pool.Contract.Ticks(&_IUniswapV3Pool.CallOpts, tick) +} + +// Token0 is a free data retrieval call binding the contract method 0x0dfe1681. +// +// Solidity: function token0() view returns(address) +func (_IUniswapV3Pool *IUniswapV3PoolCaller) Token0(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _IUniswapV3Pool.contract.Call(opts, &out, "token0") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Token0 is a free data retrieval call binding the contract method 0x0dfe1681. +// +// Solidity: function token0() view returns(address) +func (_IUniswapV3Pool *IUniswapV3PoolSession) Token0() (common.Address, error) { + return _IUniswapV3Pool.Contract.Token0(&_IUniswapV3Pool.CallOpts) +} + +// Token0 is a free data retrieval call binding the contract method 0x0dfe1681. +// +// Solidity: function token0() view returns(address) +func (_IUniswapV3Pool *IUniswapV3PoolCallerSession) Token0() (common.Address, error) { + return _IUniswapV3Pool.Contract.Token0(&_IUniswapV3Pool.CallOpts) +} + +// Token1 is a free data retrieval call binding the contract method 0xd21220a7. +// +// Solidity: function token1() view returns(address) +func (_IUniswapV3Pool *IUniswapV3PoolCaller) Token1(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _IUniswapV3Pool.contract.Call(opts, &out, "token1") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Token1 is a free data retrieval call binding the contract method 0xd21220a7. +// +// Solidity: function token1() view returns(address) +func (_IUniswapV3Pool *IUniswapV3PoolSession) Token1() (common.Address, error) { + return _IUniswapV3Pool.Contract.Token1(&_IUniswapV3Pool.CallOpts) +} + +// Token1 is a free data retrieval call binding the contract method 0xd21220a7. +// +// Solidity: function token1() view returns(address) +func (_IUniswapV3Pool *IUniswapV3PoolCallerSession) Token1() (common.Address, error) { + return _IUniswapV3Pool.Contract.Token1(&_IUniswapV3Pool.CallOpts) +} + +// Burn is a paid mutator transaction binding the contract method 0xa34123a7. +// +// Solidity: function burn(int24 tickLower, int24 tickUpper, uint128 amount) returns(uint256 amount0, uint256 amount1) +func (_IUniswapV3Pool *IUniswapV3PoolTransactor) Burn(opts *bind.TransactOpts, tickLower *big.Int, tickUpper *big.Int, amount *big.Int) (*types.Transaction, error) { + return _IUniswapV3Pool.contract.Transact(opts, "burn", tickLower, tickUpper, amount) +} + +// Burn is a paid mutator transaction binding the contract method 0xa34123a7. +// +// Solidity: function burn(int24 tickLower, int24 tickUpper, uint128 amount) returns(uint256 amount0, uint256 amount1) +func (_IUniswapV3Pool *IUniswapV3PoolSession) Burn(tickLower *big.Int, tickUpper *big.Int, amount *big.Int) (*types.Transaction, error) { + return _IUniswapV3Pool.Contract.Burn(&_IUniswapV3Pool.TransactOpts, tickLower, tickUpper, amount) +} + +// Burn is a paid mutator transaction binding the contract method 0xa34123a7. +// +// Solidity: function burn(int24 tickLower, int24 tickUpper, uint128 amount) returns(uint256 amount0, uint256 amount1) +func (_IUniswapV3Pool *IUniswapV3PoolTransactorSession) Burn(tickLower *big.Int, tickUpper *big.Int, amount *big.Int) (*types.Transaction, error) { + return _IUniswapV3Pool.Contract.Burn(&_IUniswapV3Pool.TransactOpts, tickLower, tickUpper, amount) +} + +// Collect is a paid mutator transaction binding the contract method 0x4f1eb3d8. +// +// Solidity: function collect(address recipient, int24 tickLower, int24 tickUpper, uint128 amount0Requested, uint128 amount1Requested) returns(uint128 amount0, uint128 amount1) +func (_IUniswapV3Pool *IUniswapV3PoolTransactor) Collect(opts *bind.TransactOpts, recipient common.Address, tickLower *big.Int, tickUpper *big.Int, amount0Requested *big.Int, amount1Requested *big.Int) (*types.Transaction, error) { + return _IUniswapV3Pool.contract.Transact(opts, "collect", recipient, tickLower, tickUpper, amount0Requested, amount1Requested) +} + +// Collect is a paid mutator transaction binding the contract method 0x4f1eb3d8. +// +// Solidity: function collect(address recipient, int24 tickLower, int24 tickUpper, uint128 amount0Requested, uint128 amount1Requested) returns(uint128 amount0, uint128 amount1) +func (_IUniswapV3Pool *IUniswapV3PoolSession) Collect(recipient common.Address, tickLower *big.Int, tickUpper *big.Int, amount0Requested *big.Int, amount1Requested *big.Int) (*types.Transaction, error) { + return _IUniswapV3Pool.Contract.Collect(&_IUniswapV3Pool.TransactOpts, recipient, tickLower, tickUpper, amount0Requested, amount1Requested) +} + +// Collect is a paid mutator transaction binding the contract method 0x4f1eb3d8. +// +// Solidity: function collect(address recipient, int24 tickLower, int24 tickUpper, uint128 amount0Requested, uint128 amount1Requested) returns(uint128 amount0, uint128 amount1) +func (_IUniswapV3Pool *IUniswapV3PoolTransactorSession) Collect(recipient common.Address, tickLower *big.Int, tickUpper *big.Int, amount0Requested *big.Int, amount1Requested *big.Int) (*types.Transaction, error) { + return _IUniswapV3Pool.Contract.Collect(&_IUniswapV3Pool.TransactOpts, recipient, tickLower, tickUpper, amount0Requested, amount1Requested) +} + +// CollectProtocol is a paid mutator transaction binding the contract method 0x85b66729. +// +// Solidity: function collectProtocol(address recipient, uint128 amount0Requested, uint128 amount1Requested) returns(uint128 amount0, uint128 amount1) +func (_IUniswapV3Pool *IUniswapV3PoolTransactor) CollectProtocol(opts *bind.TransactOpts, recipient common.Address, amount0Requested *big.Int, amount1Requested *big.Int) (*types.Transaction, error) { + return _IUniswapV3Pool.contract.Transact(opts, "collectProtocol", recipient, amount0Requested, amount1Requested) +} + +// CollectProtocol is a paid mutator transaction binding the contract method 0x85b66729. +// +// Solidity: function collectProtocol(address recipient, uint128 amount0Requested, uint128 amount1Requested) returns(uint128 amount0, uint128 amount1) +func (_IUniswapV3Pool *IUniswapV3PoolSession) CollectProtocol(recipient common.Address, amount0Requested *big.Int, amount1Requested *big.Int) (*types.Transaction, error) { + return _IUniswapV3Pool.Contract.CollectProtocol(&_IUniswapV3Pool.TransactOpts, recipient, amount0Requested, amount1Requested) +} + +// CollectProtocol is a paid mutator transaction binding the contract method 0x85b66729. +// +// Solidity: function collectProtocol(address recipient, uint128 amount0Requested, uint128 amount1Requested) returns(uint128 amount0, uint128 amount1) +func (_IUniswapV3Pool *IUniswapV3PoolTransactorSession) CollectProtocol(recipient common.Address, amount0Requested *big.Int, amount1Requested *big.Int) (*types.Transaction, error) { + return _IUniswapV3Pool.Contract.CollectProtocol(&_IUniswapV3Pool.TransactOpts, recipient, amount0Requested, amount1Requested) +} + +// Flash is a paid mutator transaction binding the contract method 0x490e6cbc. +// +// Solidity: function flash(address recipient, uint256 amount0, uint256 amount1, bytes data) returns() +func (_IUniswapV3Pool *IUniswapV3PoolTransactor) Flash(opts *bind.TransactOpts, recipient common.Address, amount0 *big.Int, amount1 *big.Int, data []byte) (*types.Transaction, error) { + return _IUniswapV3Pool.contract.Transact(opts, "flash", recipient, amount0, amount1, data) +} + +// Flash is a paid mutator transaction binding the contract method 0x490e6cbc. +// +// Solidity: function flash(address recipient, uint256 amount0, uint256 amount1, bytes data) returns() +func (_IUniswapV3Pool *IUniswapV3PoolSession) Flash(recipient common.Address, amount0 *big.Int, amount1 *big.Int, data []byte) (*types.Transaction, error) { + return _IUniswapV3Pool.Contract.Flash(&_IUniswapV3Pool.TransactOpts, recipient, amount0, amount1, data) +} + +// Flash is a paid mutator transaction binding the contract method 0x490e6cbc. +// +// Solidity: function flash(address recipient, uint256 amount0, uint256 amount1, bytes data) returns() +func (_IUniswapV3Pool *IUniswapV3PoolTransactorSession) Flash(recipient common.Address, amount0 *big.Int, amount1 *big.Int, data []byte) (*types.Transaction, error) { + return _IUniswapV3Pool.Contract.Flash(&_IUniswapV3Pool.TransactOpts, recipient, amount0, amount1, data) +} + +// IncreaseObservationCardinalityNext is a paid mutator transaction binding the contract method 0x32148f67. +// +// Solidity: function increaseObservationCardinalityNext(uint16 observationCardinalityNext) returns() +func (_IUniswapV3Pool *IUniswapV3PoolTransactor) IncreaseObservationCardinalityNext(opts *bind.TransactOpts, observationCardinalityNext uint16) (*types.Transaction, error) { + return _IUniswapV3Pool.contract.Transact(opts, "increaseObservationCardinalityNext", observationCardinalityNext) +} + +// IncreaseObservationCardinalityNext is a paid mutator transaction binding the contract method 0x32148f67. +// +// Solidity: function increaseObservationCardinalityNext(uint16 observationCardinalityNext) returns() +func (_IUniswapV3Pool *IUniswapV3PoolSession) IncreaseObservationCardinalityNext(observationCardinalityNext uint16) (*types.Transaction, error) { + return _IUniswapV3Pool.Contract.IncreaseObservationCardinalityNext(&_IUniswapV3Pool.TransactOpts, observationCardinalityNext) +} + +// IncreaseObservationCardinalityNext is a paid mutator transaction binding the contract method 0x32148f67. +// +// Solidity: function increaseObservationCardinalityNext(uint16 observationCardinalityNext) returns() +func (_IUniswapV3Pool *IUniswapV3PoolTransactorSession) IncreaseObservationCardinalityNext(observationCardinalityNext uint16) (*types.Transaction, error) { + return _IUniswapV3Pool.Contract.IncreaseObservationCardinalityNext(&_IUniswapV3Pool.TransactOpts, observationCardinalityNext) +} + +// Initialize is a paid mutator transaction binding the contract method 0xf637731d. +// +// Solidity: function initialize(uint160 sqrtPriceX96) returns() +func (_IUniswapV3Pool *IUniswapV3PoolTransactor) Initialize(opts *bind.TransactOpts, sqrtPriceX96 *big.Int) (*types.Transaction, error) { + return _IUniswapV3Pool.contract.Transact(opts, "initialize", sqrtPriceX96) +} + +// Initialize is a paid mutator transaction binding the contract method 0xf637731d. +// +// Solidity: function initialize(uint160 sqrtPriceX96) returns() +func (_IUniswapV3Pool *IUniswapV3PoolSession) Initialize(sqrtPriceX96 *big.Int) (*types.Transaction, error) { + return _IUniswapV3Pool.Contract.Initialize(&_IUniswapV3Pool.TransactOpts, sqrtPriceX96) +} + +// Initialize is a paid mutator transaction binding the contract method 0xf637731d. +// +// Solidity: function initialize(uint160 sqrtPriceX96) returns() +func (_IUniswapV3Pool *IUniswapV3PoolTransactorSession) Initialize(sqrtPriceX96 *big.Int) (*types.Transaction, error) { + return _IUniswapV3Pool.Contract.Initialize(&_IUniswapV3Pool.TransactOpts, sqrtPriceX96) +} + +// Mint is a paid mutator transaction binding the contract method 0x3c8a7d8d. +// +// Solidity: function mint(address recipient, int24 tickLower, int24 tickUpper, uint128 amount, bytes data) returns(uint256 amount0, uint256 amount1) +func (_IUniswapV3Pool *IUniswapV3PoolTransactor) Mint(opts *bind.TransactOpts, recipient common.Address, tickLower *big.Int, tickUpper *big.Int, amount *big.Int, data []byte) (*types.Transaction, error) { + return _IUniswapV3Pool.contract.Transact(opts, "mint", recipient, tickLower, tickUpper, amount, data) +} + +// Mint is a paid mutator transaction binding the contract method 0x3c8a7d8d. +// +// Solidity: function mint(address recipient, int24 tickLower, int24 tickUpper, uint128 amount, bytes data) returns(uint256 amount0, uint256 amount1) +func (_IUniswapV3Pool *IUniswapV3PoolSession) Mint(recipient common.Address, tickLower *big.Int, tickUpper *big.Int, amount *big.Int, data []byte) (*types.Transaction, error) { + return _IUniswapV3Pool.Contract.Mint(&_IUniswapV3Pool.TransactOpts, recipient, tickLower, tickUpper, amount, data) +} + +// Mint is a paid mutator transaction binding the contract method 0x3c8a7d8d. +// +// Solidity: function mint(address recipient, int24 tickLower, int24 tickUpper, uint128 amount, bytes data) returns(uint256 amount0, uint256 amount1) +func (_IUniswapV3Pool *IUniswapV3PoolTransactorSession) Mint(recipient common.Address, tickLower *big.Int, tickUpper *big.Int, amount *big.Int, data []byte) (*types.Transaction, error) { + return _IUniswapV3Pool.Contract.Mint(&_IUniswapV3Pool.TransactOpts, recipient, tickLower, tickUpper, amount, data) +} + +// SetFeeProtocol is a paid mutator transaction binding the contract method 0x8206a4d1. +// +// Solidity: function setFeeProtocol(uint8 feeProtocol0, uint8 feeProtocol1) returns() +func (_IUniswapV3Pool *IUniswapV3PoolTransactor) SetFeeProtocol(opts *bind.TransactOpts, feeProtocol0 uint8, feeProtocol1 uint8) (*types.Transaction, error) { + return _IUniswapV3Pool.contract.Transact(opts, "setFeeProtocol", feeProtocol0, feeProtocol1) +} + +// SetFeeProtocol is a paid mutator transaction binding the contract method 0x8206a4d1. +// +// Solidity: function setFeeProtocol(uint8 feeProtocol0, uint8 feeProtocol1) returns() +func (_IUniswapV3Pool *IUniswapV3PoolSession) SetFeeProtocol(feeProtocol0 uint8, feeProtocol1 uint8) (*types.Transaction, error) { + return _IUniswapV3Pool.Contract.SetFeeProtocol(&_IUniswapV3Pool.TransactOpts, feeProtocol0, feeProtocol1) +} + +// SetFeeProtocol is a paid mutator transaction binding the contract method 0x8206a4d1. +// +// Solidity: function setFeeProtocol(uint8 feeProtocol0, uint8 feeProtocol1) returns() +func (_IUniswapV3Pool *IUniswapV3PoolTransactorSession) SetFeeProtocol(feeProtocol0 uint8, feeProtocol1 uint8) (*types.Transaction, error) { + return _IUniswapV3Pool.Contract.SetFeeProtocol(&_IUniswapV3Pool.TransactOpts, feeProtocol0, feeProtocol1) +} + +// Swap is a paid mutator transaction binding the contract method 0x128acb08. +// +// Solidity: function swap(address recipient, bool zeroForOne, int256 amountSpecified, uint160 sqrtPriceLimitX96, bytes data) returns(int256 amount0, int256 amount1) +func (_IUniswapV3Pool *IUniswapV3PoolTransactor) Swap(opts *bind.TransactOpts, recipient common.Address, zeroForOne bool, amountSpecified *big.Int, sqrtPriceLimitX96 *big.Int, data []byte) (*types.Transaction, error) { + return _IUniswapV3Pool.contract.Transact(opts, "swap", recipient, zeroForOne, amountSpecified, sqrtPriceLimitX96, data) +} + +// Swap is a paid mutator transaction binding the contract method 0x128acb08. +// +// Solidity: function swap(address recipient, bool zeroForOne, int256 amountSpecified, uint160 sqrtPriceLimitX96, bytes data) returns(int256 amount0, int256 amount1) +func (_IUniswapV3Pool *IUniswapV3PoolSession) Swap(recipient common.Address, zeroForOne bool, amountSpecified *big.Int, sqrtPriceLimitX96 *big.Int, data []byte) (*types.Transaction, error) { + return _IUniswapV3Pool.Contract.Swap(&_IUniswapV3Pool.TransactOpts, recipient, zeroForOne, amountSpecified, sqrtPriceLimitX96, data) +} + +// Swap is a paid mutator transaction binding the contract method 0x128acb08. +// +// Solidity: function swap(address recipient, bool zeroForOne, int256 amountSpecified, uint160 sqrtPriceLimitX96, bytes data) returns(int256 amount0, int256 amount1) +func (_IUniswapV3Pool *IUniswapV3PoolTransactorSession) Swap(recipient common.Address, zeroForOne bool, amountSpecified *big.Int, sqrtPriceLimitX96 *big.Int, data []byte) (*types.Transaction, error) { + return _IUniswapV3Pool.Contract.Swap(&_IUniswapV3Pool.TransactOpts, recipient, zeroForOne, amountSpecified, sqrtPriceLimitX96, data) +} + +// IUniswapV3PoolBurnIterator is returned from FilterBurn and is used to iterate over the raw logs and unpacked data for Burn events raised by the IUniswapV3Pool contract. +type IUniswapV3PoolBurnIterator struct { + Event *IUniswapV3PoolBurn // 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 *IUniswapV3PoolBurnIterator) 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(IUniswapV3PoolBurn) + 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(IUniswapV3PoolBurn) + 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 *IUniswapV3PoolBurnIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IUniswapV3PoolBurnIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IUniswapV3PoolBurn represents a Burn event raised by the IUniswapV3Pool contract. +type IUniswapV3PoolBurn struct { + Owner common.Address + TickLower *big.Int + TickUpper *big.Int + Amount *big.Int + Amount0 *big.Int + Amount1 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBurn is a free log retrieval operation binding the contract event 0x0c396cd989a39f4459b5fa1aed6a9a8dcdbc45908acfd67e028cd568da98982c. +// +// Solidity: event Burn(address indexed owner, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount, uint256 amount0, uint256 amount1) +func (_IUniswapV3Pool *IUniswapV3PoolFilterer) FilterBurn(opts *bind.FilterOpts, owner []common.Address, tickLower []*big.Int, tickUpper []*big.Int) (*IUniswapV3PoolBurnIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var tickLowerRule []interface{} + for _, tickLowerItem := range tickLower { + tickLowerRule = append(tickLowerRule, tickLowerItem) + } + var tickUpperRule []interface{} + for _, tickUpperItem := range tickUpper { + tickUpperRule = append(tickUpperRule, tickUpperItem) + } + + logs, sub, err := _IUniswapV3Pool.contract.FilterLogs(opts, "Burn", ownerRule, tickLowerRule, tickUpperRule) + if err != nil { + return nil, err + } + return &IUniswapV3PoolBurnIterator{contract: _IUniswapV3Pool.contract, event: "Burn", logs: logs, sub: sub}, nil +} + +// WatchBurn is a free log subscription operation binding the contract event 0x0c396cd989a39f4459b5fa1aed6a9a8dcdbc45908acfd67e028cd568da98982c. +// +// Solidity: event Burn(address indexed owner, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount, uint256 amount0, uint256 amount1) +func (_IUniswapV3Pool *IUniswapV3PoolFilterer) WatchBurn(opts *bind.WatchOpts, sink chan<- *IUniswapV3PoolBurn, owner []common.Address, tickLower []*big.Int, tickUpper []*big.Int) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var tickLowerRule []interface{} + for _, tickLowerItem := range tickLower { + tickLowerRule = append(tickLowerRule, tickLowerItem) + } + var tickUpperRule []interface{} + for _, tickUpperItem := range tickUpper { + tickUpperRule = append(tickUpperRule, tickUpperItem) + } + + logs, sub, err := _IUniswapV3Pool.contract.WatchLogs(opts, "Burn", ownerRule, tickLowerRule, tickUpperRule) + 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(IUniswapV3PoolBurn) + if err := _IUniswapV3Pool.contract.UnpackLog(event, "Burn", 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 +} + +// ParseBurn is a log parse operation binding the contract event 0x0c396cd989a39f4459b5fa1aed6a9a8dcdbc45908acfd67e028cd568da98982c. +// +// Solidity: event Burn(address indexed owner, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount, uint256 amount0, uint256 amount1) +func (_IUniswapV3Pool *IUniswapV3PoolFilterer) ParseBurn(log types.Log) (*IUniswapV3PoolBurn, error) { + event := new(IUniswapV3PoolBurn) + if err := _IUniswapV3Pool.contract.UnpackLog(event, "Burn", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IUniswapV3PoolCollectIterator is returned from FilterCollect and is used to iterate over the raw logs and unpacked data for Collect events raised by the IUniswapV3Pool contract. +type IUniswapV3PoolCollectIterator struct { + Event *IUniswapV3PoolCollect // 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 *IUniswapV3PoolCollectIterator) 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(IUniswapV3PoolCollect) + 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(IUniswapV3PoolCollect) + 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 *IUniswapV3PoolCollectIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IUniswapV3PoolCollectIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IUniswapV3PoolCollect represents a Collect event raised by the IUniswapV3Pool contract. +type IUniswapV3PoolCollect struct { + Owner common.Address + Recipient common.Address + TickLower *big.Int + TickUpper *big.Int + Amount0 *big.Int + Amount1 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterCollect is a free log retrieval operation binding the contract event 0x70935338e69775456a85ddef226c395fb668b63fa0115f5f20610b388e6ca9c0. +// +// Solidity: event Collect(address indexed owner, address recipient, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount0, uint128 amount1) +func (_IUniswapV3Pool *IUniswapV3PoolFilterer) FilterCollect(opts *bind.FilterOpts, owner []common.Address, tickLower []*big.Int, tickUpper []*big.Int) (*IUniswapV3PoolCollectIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + + var tickLowerRule []interface{} + for _, tickLowerItem := range tickLower { + tickLowerRule = append(tickLowerRule, tickLowerItem) + } + var tickUpperRule []interface{} + for _, tickUpperItem := range tickUpper { + tickUpperRule = append(tickUpperRule, tickUpperItem) + } + + logs, sub, err := _IUniswapV3Pool.contract.FilterLogs(opts, "Collect", ownerRule, tickLowerRule, tickUpperRule) + if err != nil { + return nil, err + } + return &IUniswapV3PoolCollectIterator{contract: _IUniswapV3Pool.contract, event: "Collect", logs: logs, sub: sub}, nil +} + +// WatchCollect is a free log subscription operation binding the contract event 0x70935338e69775456a85ddef226c395fb668b63fa0115f5f20610b388e6ca9c0. +// +// Solidity: event Collect(address indexed owner, address recipient, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount0, uint128 amount1) +func (_IUniswapV3Pool *IUniswapV3PoolFilterer) WatchCollect(opts *bind.WatchOpts, sink chan<- *IUniswapV3PoolCollect, owner []common.Address, tickLower []*big.Int, tickUpper []*big.Int) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + + var tickLowerRule []interface{} + for _, tickLowerItem := range tickLower { + tickLowerRule = append(tickLowerRule, tickLowerItem) + } + var tickUpperRule []interface{} + for _, tickUpperItem := range tickUpper { + tickUpperRule = append(tickUpperRule, tickUpperItem) + } + + logs, sub, err := _IUniswapV3Pool.contract.WatchLogs(opts, "Collect", ownerRule, tickLowerRule, tickUpperRule) + 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(IUniswapV3PoolCollect) + if err := _IUniswapV3Pool.contract.UnpackLog(event, "Collect", 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 +} + +// ParseCollect is a log parse operation binding the contract event 0x70935338e69775456a85ddef226c395fb668b63fa0115f5f20610b388e6ca9c0. +// +// Solidity: event Collect(address indexed owner, address recipient, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount0, uint128 amount1) +func (_IUniswapV3Pool *IUniswapV3PoolFilterer) ParseCollect(log types.Log) (*IUniswapV3PoolCollect, error) { + event := new(IUniswapV3PoolCollect) + if err := _IUniswapV3Pool.contract.UnpackLog(event, "Collect", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IUniswapV3PoolCollectProtocolIterator is returned from FilterCollectProtocol and is used to iterate over the raw logs and unpacked data for CollectProtocol events raised by the IUniswapV3Pool contract. +type IUniswapV3PoolCollectProtocolIterator struct { + Event *IUniswapV3PoolCollectProtocol // 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 *IUniswapV3PoolCollectProtocolIterator) 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(IUniswapV3PoolCollectProtocol) + 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(IUniswapV3PoolCollectProtocol) + 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 *IUniswapV3PoolCollectProtocolIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IUniswapV3PoolCollectProtocolIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IUniswapV3PoolCollectProtocol represents a CollectProtocol event raised by the IUniswapV3Pool contract. +type IUniswapV3PoolCollectProtocol struct { + Sender common.Address + Recipient common.Address + Amount0 *big.Int + Amount1 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterCollectProtocol is a free log retrieval operation binding the contract event 0x596b573906218d3411850b26a6b437d6c4522fdb43d2d2386263f86d50b8b151. +// +// Solidity: event CollectProtocol(address indexed sender, address indexed recipient, uint128 amount0, uint128 amount1) +func (_IUniswapV3Pool *IUniswapV3PoolFilterer) FilterCollectProtocol(opts *bind.FilterOpts, sender []common.Address, recipient []common.Address) (*IUniswapV3PoolCollectProtocolIterator, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var recipientRule []interface{} + for _, recipientItem := range recipient { + recipientRule = append(recipientRule, recipientItem) + } + + logs, sub, err := _IUniswapV3Pool.contract.FilterLogs(opts, "CollectProtocol", senderRule, recipientRule) + if err != nil { + return nil, err + } + return &IUniswapV3PoolCollectProtocolIterator{contract: _IUniswapV3Pool.contract, event: "CollectProtocol", logs: logs, sub: sub}, nil +} + +// WatchCollectProtocol is a free log subscription operation binding the contract event 0x596b573906218d3411850b26a6b437d6c4522fdb43d2d2386263f86d50b8b151. +// +// Solidity: event CollectProtocol(address indexed sender, address indexed recipient, uint128 amount0, uint128 amount1) +func (_IUniswapV3Pool *IUniswapV3PoolFilterer) WatchCollectProtocol(opts *bind.WatchOpts, sink chan<- *IUniswapV3PoolCollectProtocol, sender []common.Address, recipient []common.Address) (event.Subscription, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var recipientRule []interface{} + for _, recipientItem := range recipient { + recipientRule = append(recipientRule, recipientItem) + } + + logs, sub, err := _IUniswapV3Pool.contract.WatchLogs(opts, "CollectProtocol", senderRule, recipientRule) + 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(IUniswapV3PoolCollectProtocol) + if err := _IUniswapV3Pool.contract.UnpackLog(event, "CollectProtocol", 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 +} + +// ParseCollectProtocol is a log parse operation binding the contract event 0x596b573906218d3411850b26a6b437d6c4522fdb43d2d2386263f86d50b8b151. +// +// Solidity: event CollectProtocol(address indexed sender, address indexed recipient, uint128 amount0, uint128 amount1) +func (_IUniswapV3Pool *IUniswapV3PoolFilterer) ParseCollectProtocol(log types.Log) (*IUniswapV3PoolCollectProtocol, error) { + event := new(IUniswapV3PoolCollectProtocol) + if err := _IUniswapV3Pool.contract.UnpackLog(event, "CollectProtocol", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IUniswapV3PoolFlashIterator is returned from FilterFlash and is used to iterate over the raw logs and unpacked data for Flash events raised by the IUniswapV3Pool contract. +type IUniswapV3PoolFlashIterator struct { + Event *IUniswapV3PoolFlash // 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 *IUniswapV3PoolFlashIterator) 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(IUniswapV3PoolFlash) + 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(IUniswapV3PoolFlash) + 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 *IUniswapV3PoolFlashIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IUniswapV3PoolFlashIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IUniswapV3PoolFlash represents a Flash event raised by the IUniswapV3Pool contract. +type IUniswapV3PoolFlash struct { + Sender common.Address + Recipient common.Address + Amount0 *big.Int + Amount1 *big.Int + Paid0 *big.Int + Paid1 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterFlash is a free log retrieval operation binding the contract event 0xbdbdb71d7860376ba52b25a5028beea23581364a40522f6bcfb86bb1f2dca633. +// +// Solidity: event Flash(address indexed sender, address indexed recipient, uint256 amount0, uint256 amount1, uint256 paid0, uint256 paid1) +func (_IUniswapV3Pool *IUniswapV3PoolFilterer) FilterFlash(opts *bind.FilterOpts, sender []common.Address, recipient []common.Address) (*IUniswapV3PoolFlashIterator, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var recipientRule []interface{} + for _, recipientItem := range recipient { + recipientRule = append(recipientRule, recipientItem) + } + + logs, sub, err := _IUniswapV3Pool.contract.FilterLogs(opts, "Flash", senderRule, recipientRule) + if err != nil { + return nil, err + } + return &IUniswapV3PoolFlashIterator{contract: _IUniswapV3Pool.contract, event: "Flash", logs: logs, sub: sub}, nil +} + +// WatchFlash is a free log subscription operation binding the contract event 0xbdbdb71d7860376ba52b25a5028beea23581364a40522f6bcfb86bb1f2dca633. +// +// Solidity: event Flash(address indexed sender, address indexed recipient, uint256 amount0, uint256 amount1, uint256 paid0, uint256 paid1) +func (_IUniswapV3Pool *IUniswapV3PoolFilterer) WatchFlash(opts *bind.WatchOpts, sink chan<- *IUniswapV3PoolFlash, sender []common.Address, recipient []common.Address) (event.Subscription, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var recipientRule []interface{} + for _, recipientItem := range recipient { + recipientRule = append(recipientRule, recipientItem) + } + + logs, sub, err := _IUniswapV3Pool.contract.WatchLogs(opts, "Flash", senderRule, recipientRule) + 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(IUniswapV3PoolFlash) + if err := _IUniswapV3Pool.contract.UnpackLog(event, "Flash", 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 +} + +// ParseFlash is a log parse operation binding the contract event 0xbdbdb71d7860376ba52b25a5028beea23581364a40522f6bcfb86bb1f2dca633. +// +// Solidity: event Flash(address indexed sender, address indexed recipient, uint256 amount0, uint256 amount1, uint256 paid0, uint256 paid1) +func (_IUniswapV3Pool *IUniswapV3PoolFilterer) ParseFlash(log types.Log) (*IUniswapV3PoolFlash, error) { + event := new(IUniswapV3PoolFlash) + if err := _IUniswapV3Pool.contract.UnpackLog(event, "Flash", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IUniswapV3PoolIncreaseObservationCardinalityNextIterator is returned from FilterIncreaseObservationCardinalityNext and is used to iterate over the raw logs and unpacked data for IncreaseObservationCardinalityNext events raised by the IUniswapV3Pool contract. +type IUniswapV3PoolIncreaseObservationCardinalityNextIterator struct { + Event *IUniswapV3PoolIncreaseObservationCardinalityNext // 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 *IUniswapV3PoolIncreaseObservationCardinalityNextIterator) 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(IUniswapV3PoolIncreaseObservationCardinalityNext) + 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(IUniswapV3PoolIncreaseObservationCardinalityNext) + 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 *IUniswapV3PoolIncreaseObservationCardinalityNextIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IUniswapV3PoolIncreaseObservationCardinalityNextIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IUniswapV3PoolIncreaseObservationCardinalityNext represents a IncreaseObservationCardinalityNext event raised by the IUniswapV3Pool contract. +type IUniswapV3PoolIncreaseObservationCardinalityNext struct { + ObservationCardinalityNextOld uint16 + ObservationCardinalityNextNew uint16 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterIncreaseObservationCardinalityNext is a free log retrieval operation binding the contract event 0xac49e518f90a358f652e4400164f05a5d8f7e35e7747279bc3a93dbf584e125a. +// +// Solidity: event IncreaseObservationCardinalityNext(uint16 observationCardinalityNextOld, uint16 observationCardinalityNextNew) +func (_IUniswapV3Pool *IUniswapV3PoolFilterer) FilterIncreaseObservationCardinalityNext(opts *bind.FilterOpts) (*IUniswapV3PoolIncreaseObservationCardinalityNextIterator, error) { + + logs, sub, err := _IUniswapV3Pool.contract.FilterLogs(opts, "IncreaseObservationCardinalityNext") + if err != nil { + return nil, err + } + return &IUniswapV3PoolIncreaseObservationCardinalityNextIterator{contract: _IUniswapV3Pool.contract, event: "IncreaseObservationCardinalityNext", logs: logs, sub: sub}, nil +} + +// WatchIncreaseObservationCardinalityNext is a free log subscription operation binding the contract event 0xac49e518f90a358f652e4400164f05a5d8f7e35e7747279bc3a93dbf584e125a. +// +// Solidity: event IncreaseObservationCardinalityNext(uint16 observationCardinalityNextOld, uint16 observationCardinalityNextNew) +func (_IUniswapV3Pool *IUniswapV3PoolFilterer) WatchIncreaseObservationCardinalityNext(opts *bind.WatchOpts, sink chan<- *IUniswapV3PoolIncreaseObservationCardinalityNext) (event.Subscription, error) { + + logs, sub, err := _IUniswapV3Pool.contract.WatchLogs(opts, "IncreaseObservationCardinalityNext") + 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(IUniswapV3PoolIncreaseObservationCardinalityNext) + if err := _IUniswapV3Pool.contract.UnpackLog(event, "IncreaseObservationCardinalityNext", 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 +} + +// ParseIncreaseObservationCardinalityNext is a log parse operation binding the contract event 0xac49e518f90a358f652e4400164f05a5d8f7e35e7747279bc3a93dbf584e125a. +// +// Solidity: event IncreaseObservationCardinalityNext(uint16 observationCardinalityNextOld, uint16 observationCardinalityNextNew) +func (_IUniswapV3Pool *IUniswapV3PoolFilterer) ParseIncreaseObservationCardinalityNext(log types.Log) (*IUniswapV3PoolIncreaseObservationCardinalityNext, error) { + event := new(IUniswapV3PoolIncreaseObservationCardinalityNext) + if err := _IUniswapV3Pool.contract.UnpackLog(event, "IncreaseObservationCardinalityNext", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IUniswapV3PoolInitializeIterator is returned from FilterInitialize and is used to iterate over the raw logs and unpacked data for Initialize events raised by the IUniswapV3Pool contract. +type IUniswapV3PoolInitializeIterator struct { + Event *IUniswapV3PoolInitialize // 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 *IUniswapV3PoolInitializeIterator) 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(IUniswapV3PoolInitialize) + 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(IUniswapV3PoolInitialize) + 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 *IUniswapV3PoolInitializeIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IUniswapV3PoolInitializeIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IUniswapV3PoolInitialize represents a Initialize event raised by the IUniswapV3Pool contract. +type IUniswapV3PoolInitialize struct { + SqrtPriceX96 *big.Int + Tick *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialize is a free log retrieval operation binding the contract event 0x98636036cb66a9c19a37435efc1e90142190214e8abeb821bdba3f2990dd4c95. +// +// Solidity: event Initialize(uint160 sqrtPriceX96, int24 tick) +func (_IUniswapV3Pool *IUniswapV3PoolFilterer) FilterInitialize(opts *bind.FilterOpts) (*IUniswapV3PoolInitializeIterator, error) { + + logs, sub, err := _IUniswapV3Pool.contract.FilterLogs(opts, "Initialize") + if err != nil { + return nil, err + } + return &IUniswapV3PoolInitializeIterator{contract: _IUniswapV3Pool.contract, event: "Initialize", logs: logs, sub: sub}, nil +} + +// WatchInitialize is a free log subscription operation binding the contract event 0x98636036cb66a9c19a37435efc1e90142190214e8abeb821bdba3f2990dd4c95. +// +// Solidity: event Initialize(uint160 sqrtPriceX96, int24 tick) +func (_IUniswapV3Pool *IUniswapV3PoolFilterer) WatchInitialize(opts *bind.WatchOpts, sink chan<- *IUniswapV3PoolInitialize) (event.Subscription, error) { + + logs, sub, err := _IUniswapV3Pool.contract.WatchLogs(opts, "Initialize") + 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(IUniswapV3PoolInitialize) + if err := _IUniswapV3Pool.contract.UnpackLog(event, "Initialize", 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 +} + +// ParseInitialize is a log parse operation binding the contract event 0x98636036cb66a9c19a37435efc1e90142190214e8abeb821bdba3f2990dd4c95. +// +// Solidity: event Initialize(uint160 sqrtPriceX96, int24 tick) +func (_IUniswapV3Pool *IUniswapV3PoolFilterer) ParseInitialize(log types.Log) (*IUniswapV3PoolInitialize, error) { + event := new(IUniswapV3PoolInitialize) + if err := _IUniswapV3Pool.contract.UnpackLog(event, "Initialize", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IUniswapV3PoolMintIterator is returned from FilterMint and is used to iterate over the raw logs and unpacked data for Mint events raised by the IUniswapV3Pool contract. +type IUniswapV3PoolMintIterator struct { + Event *IUniswapV3PoolMint // 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 *IUniswapV3PoolMintIterator) 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(IUniswapV3PoolMint) + 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(IUniswapV3PoolMint) + 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 *IUniswapV3PoolMintIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IUniswapV3PoolMintIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IUniswapV3PoolMint represents a Mint event raised by the IUniswapV3Pool contract. +type IUniswapV3PoolMint struct { + Sender common.Address + Owner common.Address + TickLower *big.Int + TickUpper *big.Int + Amount *big.Int + Amount0 *big.Int + Amount1 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterMint is a free log retrieval operation binding the contract event 0x7a53080ba414158be7ec69b987b5fb7d07dee101fe85488f0853ae16239d0bde. +// +// Solidity: event Mint(address sender, address indexed owner, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount, uint256 amount0, uint256 amount1) +func (_IUniswapV3Pool *IUniswapV3PoolFilterer) FilterMint(opts *bind.FilterOpts, owner []common.Address, tickLower []*big.Int, tickUpper []*big.Int) (*IUniswapV3PoolMintIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var tickLowerRule []interface{} + for _, tickLowerItem := range tickLower { + tickLowerRule = append(tickLowerRule, tickLowerItem) + } + var tickUpperRule []interface{} + for _, tickUpperItem := range tickUpper { + tickUpperRule = append(tickUpperRule, tickUpperItem) + } + + logs, sub, err := _IUniswapV3Pool.contract.FilterLogs(opts, "Mint", ownerRule, tickLowerRule, tickUpperRule) + if err != nil { + return nil, err + } + return &IUniswapV3PoolMintIterator{contract: _IUniswapV3Pool.contract, event: "Mint", logs: logs, sub: sub}, nil +} + +// WatchMint is a free log subscription operation binding the contract event 0x7a53080ba414158be7ec69b987b5fb7d07dee101fe85488f0853ae16239d0bde. +// +// Solidity: event Mint(address sender, address indexed owner, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount, uint256 amount0, uint256 amount1) +func (_IUniswapV3Pool *IUniswapV3PoolFilterer) WatchMint(opts *bind.WatchOpts, sink chan<- *IUniswapV3PoolMint, owner []common.Address, tickLower []*big.Int, tickUpper []*big.Int) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var tickLowerRule []interface{} + for _, tickLowerItem := range tickLower { + tickLowerRule = append(tickLowerRule, tickLowerItem) + } + var tickUpperRule []interface{} + for _, tickUpperItem := range tickUpper { + tickUpperRule = append(tickUpperRule, tickUpperItem) + } + + logs, sub, err := _IUniswapV3Pool.contract.WatchLogs(opts, "Mint", ownerRule, tickLowerRule, tickUpperRule) + 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(IUniswapV3PoolMint) + if err := _IUniswapV3Pool.contract.UnpackLog(event, "Mint", 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 +} + +// ParseMint is a log parse operation binding the contract event 0x7a53080ba414158be7ec69b987b5fb7d07dee101fe85488f0853ae16239d0bde. +// +// Solidity: event Mint(address sender, address indexed owner, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount, uint256 amount0, uint256 amount1) +func (_IUniswapV3Pool *IUniswapV3PoolFilterer) ParseMint(log types.Log) (*IUniswapV3PoolMint, error) { + event := new(IUniswapV3PoolMint) + if err := _IUniswapV3Pool.contract.UnpackLog(event, "Mint", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IUniswapV3PoolSetFeeProtocolIterator is returned from FilterSetFeeProtocol and is used to iterate over the raw logs and unpacked data for SetFeeProtocol events raised by the IUniswapV3Pool contract. +type IUniswapV3PoolSetFeeProtocolIterator struct { + Event *IUniswapV3PoolSetFeeProtocol // 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 *IUniswapV3PoolSetFeeProtocolIterator) 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(IUniswapV3PoolSetFeeProtocol) + 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(IUniswapV3PoolSetFeeProtocol) + 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 *IUniswapV3PoolSetFeeProtocolIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IUniswapV3PoolSetFeeProtocolIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IUniswapV3PoolSetFeeProtocol represents a SetFeeProtocol event raised by the IUniswapV3Pool contract. +type IUniswapV3PoolSetFeeProtocol struct { + FeeProtocol0Old uint8 + FeeProtocol1Old uint8 + FeeProtocol0New uint8 + FeeProtocol1New uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSetFeeProtocol is a free log retrieval operation binding the contract event 0x973d8d92bb299f4af6ce49b52a8adb85ae46b9f214c4c4fc06ac77401237b133. +// +// Solidity: event SetFeeProtocol(uint8 feeProtocol0Old, uint8 feeProtocol1Old, uint8 feeProtocol0New, uint8 feeProtocol1New) +func (_IUniswapV3Pool *IUniswapV3PoolFilterer) FilterSetFeeProtocol(opts *bind.FilterOpts) (*IUniswapV3PoolSetFeeProtocolIterator, error) { + + logs, sub, err := _IUniswapV3Pool.contract.FilterLogs(opts, "SetFeeProtocol") + if err != nil { + return nil, err + } + return &IUniswapV3PoolSetFeeProtocolIterator{contract: _IUniswapV3Pool.contract, event: "SetFeeProtocol", logs: logs, sub: sub}, nil +} + +// WatchSetFeeProtocol is a free log subscription operation binding the contract event 0x973d8d92bb299f4af6ce49b52a8adb85ae46b9f214c4c4fc06ac77401237b133. +// +// Solidity: event SetFeeProtocol(uint8 feeProtocol0Old, uint8 feeProtocol1Old, uint8 feeProtocol0New, uint8 feeProtocol1New) +func (_IUniswapV3Pool *IUniswapV3PoolFilterer) WatchSetFeeProtocol(opts *bind.WatchOpts, sink chan<- *IUniswapV3PoolSetFeeProtocol) (event.Subscription, error) { + + logs, sub, err := _IUniswapV3Pool.contract.WatchLogs(opts, "SetFeeProtocol") + 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(IUniswapV3PoolSetFeeProtocol) + if err := _IUniswapV3Pool.contract.UnpackLog(event, "SetFeeProtocol", 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 +} + +// ParseSetFeeProtocol is a log parse operation binding the contract event 0x973d8d92bb299f4af6ce49b52a8adb85ae46b9f214c4c4fc06ac77401237b133. +// +// Solidity: event SetFeeProtocol(uint8 feeProtocol0Old, uint8 feeProtocol1Old, uint8 feeProtocol0New, uint8 feeProtocol1New) +func (_IUniswapV3Pool *IUniswapV3PoolFilterer) ParseSetFeeProtocol(log types.Log) (*IUniswapV3PoolSetFeeProtocol, error) { + event := new(IUniswapV3PoolSetFeeProtocol) + if err := _IUniswapV3Pool.contract.UnpackLog(event, "SetFeeProtocol", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IUniswapV3PoolSwapIterator is returned from FilterSwap and is used to iterate over the raw logs and unpacked data for Swap events raised by the IUniswapV3Pool contract. +type IUniswapV3PoolSwapIterator struct { + Event *IUniswapV3PoolSwap // 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 *IUniswapV3PoolSwapIterator) 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(IUniswapV3PoolSwap) + 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(IUniswapV3PoolSwap) + 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 *IUniswapV3PoolSwapIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IUniswapV3PoolSwapIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IUniswapV3PoolSwap represents a Swap event raised by the IUniswapV3Pool contract. +type IUniswapV3PoolSwap struct { + Sender common.Address + Recipient common.Address + Amount0 *big.Int + Amount1 *big.Int + SqrtPriceX96 *big.Int + Liquidity *big.Int + Tick *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSwap is a free log retrieval operation binding the contract event 0xc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca67. +// +// Solidity: event Swap(address indexed sender, address indexed recipient, int256 amount0, int256 amount1, uint160 sqrtPriceX96, uint128 liquidity, int24 tick) +func (_IUniswapV3Pool *IUniswapV3PoolFilterer) FilterSwap(opts *bind.FilterOpts, sender []common.Address, recipient []common.Address) (*IUniswapV3PoolSwapIterator, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var recipientRule []interface{} + for _, recipientItem := range recipient { + recipientRule = append(recipientRule, recipientItem) + } + + logs, sub, err := _IUniswapV3Pool.contract.FilterLogs(opts, "Swap", senderRule, recipientRule) + if err != nil { + return nil, err + } + return &IUniswapV3PoolSwapIterator{contract: _IUniswapV3Pool.contract, event: "Swap", logs: logs, sub: sub}, nil +} + +// WatchSwap is a free log subscription operation binding the contract event 0xc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca67. +// +// Solidity: event Swap(address indexed sender, address indexed recipient, int256 amount0, int256 amount1, uint160 sqrtPriceX96, uint128 liquidity, int24 tick) +func (_IUniswapV3Pool *IUniswapV3PoolFilterer) WatchSwap(opts *bind.WatchOpts, sink chan<- *IUniswapV3PoolSwap, sender []common.Address, recipient []common.Address) (event.Subscription, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var recipientRule []interface{} + for _, recipientItem := range recipient { + recipientRule = append(recipientRule, recipientItem) + } + + logs, sub, err := _IUniswapV3Pool.contract.WatchLogs(opts, "Swap", senderRule, recipientRule) + 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(IUniswapV3PoolSwap) + if err := _IUniswapV3Pool.contract.UnpackLog(event, "Swap", 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 +} + +// ParseSwap is a log parse operation binding the contract event 0xc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca67. +// +// Solidity: event Swap(address indexed sender, address indexed recipient, int256 amount0, int256 amount1, uint160 sqrtPriceX96, uint128 liquidity, int24 tick) +func (_IUniswapV3Pool *IUniswapV3PoolFilterer) ParseSwap(log types.Log) (*IUniswapV3PoolSwap, error) { + event := new(IUniswapV3PoolSwap) + if err := _IUniswapV3Pool.contract.UnpackLog(event, "Swap", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/pkg/uniswap/v3-core/contracts/interfaces/pool/iuniswapv3poolactions.sol/iuniswapv3poolactions.go b/pkg/uniswap/v3-core/contracts/interfaces/pool/iuniswapv3poolactions.sol/iuniswapv3poolactions.go new file mode 100644 index 00000000..faa639bc --- /dev/null +++ b/pkg/uniswap/v3-core/contracts/interfaces/pool/iuniswapv3poolactions.sol/iuniswapv3poolactions.go @@ -0,0 +1,328 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package iuniswapv3poolactions + +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 +) + +// IUniswapV3PoolActionsMetaData contains all meta data concerning the IUniswapV3PoolActions contract. +var IUniswapV3PoolActionsMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"amount0Requested\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1Requested\",\"type\":\"uint128\"}],\"name\":\"collect\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"flash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"observationCardinalityNext\",\"type\":\"uint16\"}],\"name\":\"increaseObservationCardinalityNext\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"zeroForOne\",\"type\":\"bool\"},{\"internalType\":\"int256\",\"name\":\"amountSpecified\",\"type\":\"int256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"amount0\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"amount1\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// IUniswapV3PoolActionsABI is the input ABI used to generate the binding from. +// Deprecated: Use IUniswapV3PoolActionsMetaData.ABI instead. +var IUniswapV3PoolActionsABI = IUniswapV3PoolActionsMetaData.ABI + +// IUniswapV3PoolActions is an auto generated Go binding around an Ethereum contract. +type IUniswapV3PoolActions struct { + IUniswapV3PoolActionsCaller // Read-only binding to the contract + IUniswapV3PoolActionsTransactor // Write-only binding to the contract + IUniswapV3PoolActionsFilterer // Log filterer for contract events +} + +// IUniswapV3PoolActionsCaller is an auto generated read-only Go binding around an Ethereum contract. +type IUniswapV3PoolActionsCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV3PoolActionsTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IUniswapV3PoolActionsTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV3PoolActionsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IUniswapV3PoolActionsFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV3PoolActionsSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IUniswapV3PoolActionsSession struct { + Contract *IUniswapV3PoolActions // 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 +} + +// IUniswapV3PoolActionsCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IUniswapV3PoolActionsCallerSession struct { + Contract *IUniswapV3PoolActionsCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IUniswapV3PoolActionsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IUniswapV3PoolActionsTransactorSession struct { + Contract *IUniswapV3PoolActionsTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IUniswapV3PoolActionsRaw is an auto generated low-level Go binding around an Ethereum contract. +type IUniswapV3PoolActionsRaw struct { + Contract *IUniswapV3PoolActions // Generic contract binding to access the raw methods on +} + +// IUniswapV3PoolActionsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IUniswapV3PoolActionsCallerRaw struct { + Contract *IUniswapV3PoolActionsCaller // Generic read-only contract binding to access the raw methods on +} + +// IUniswapV3PoolActionsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IUniswapV3PoolActionsTransactorRaw struct { + Contract *IUniswapV3PoolActionsTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIUniswapV3PoolActions creates a new instance of IUniswapV3PoolActions, bound to a specific deployed contract. +func NewIUniswapV3PoolActions(address common.Address, backend bind.ContractBackend) (*IUniswapV3PoolActions, error) { + contract, err := bindIUniswapV3PoolActions(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IUniswapV3PoolActions{IUniswapV3PoolActionsCaller: IUniswapV3PoolActionsCaller{contract: contract}, IUniswapV3PoolActionsTransactor: IUniswapV3PoolActionsTransactor{contract: contract}, IUniswapV3PoolActionsFilterer: IUniswapV3PoolActionsFilterer{contract: contract}}, nil +} + +// NewIUniswapV3PoolActionsCaller creates a new read-only instance of IUniswapV3PoolActions, bound to a specific deployed contract. +func NewIUniswapV3PoolActionsCaller(address common.Address, caller bind.ContractCaller) (*IUniswapV3PoolActionsCaller, error) { + contract, err := bindIUniswapV3PoolActions(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IUniswapV3PoolActionsCaller{contract: contract}, nil +} + +// NewIUniswapV3PoolActionsTransactor creates a new write-only instance of IUniswapV3PoolActions, bound to a specific deployed contract. +func NewIUniswapV3PoolActionsTransactor(address common.Address, transactor bind.ContractTransactor) (*IUniswapV3PoolActionsTransactor, error) { + contract, err := bindIUniswapV3PoolActions(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IUniswapV3PoolActionsTransactor{contract: contract}, nil +} + +// NewIUniswapV3PoolActionsFilterer creates a new log filterer instance of IUniswapV3PoolActions, bound to a specific deployed contract. +func NewIUniswapV3PoolActionsFilterer(address common.Address, filterer bind.ContractFilterer) (*IUniswapV3PoolActionsFilterer, error) { + contract, err := bindIUniswapV3PoolActions(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IUniswapV3PoolActionsFilterer{contract: contract}, nil +} + +// bindIUniswapV3PoolActions binds a generic wrapper to an already deployed contract. +func bindIUniswapV3PoolActions(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IUniswapV3PoolActionsMetaData.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 (_IUniswapV3PoolActions *IUniswapV3PoolActionsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IUniswapV3PoolActions.Contract.IUniswapV3PoolActionsCaller.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 (_IUniswapV3PoolActions *IUniswapV3PoolActionsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IUniswapV3PoolActions.Contract.IUniswapV3PoolActionsTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IUniswapV3PoolActions *IUniswapV3PoolActionsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IUniswapV3PoolActions.Contract.IUniswapV3PoolActionsTransactor.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 (_IUniswapV3PoolActions *IUniswapV3PoolActionsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IUniswapV3PoolActions.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 (_IUniswapV3PoolActions *IUniswapV3PoolActionsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IUniswapV3PoolActions.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IUniswapV3PoolActions *IUniswapV3PoolActionsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IUniswapV3PoolActions.Contract.contract.Transact(opts, method, params...) +} + +// Burn is a paid mutator transaction binding the contract method 0xa34123a7. +// +// Solidity: function burn(int24 tickLower, int24 tickUpper, uint128 amount) returns(uint256 amount0, uint256 amount1) +func (_IUniswapV3PoolActions *IUniswapV3PoolActionsTransactor) Burn(opts *bind.TransactOpts, tickLower *big.Int, tickUpper *big.Int, amount *big.Int) (*types.Transaction, error) { + return _IUniswapV3PoolActions.contract.Transact(opts, "burn", tickLower, tickUpper, amount) +} + +// Burn is a paid mutator transaction binding the contract method 0xa34123a7. +// +// Solidity: function burn(int24 tickLower, int24 tickUpper, uint128 amount) returns(uint256 amount0, uint256 amount1) +func (_IUniswapV3PoolActions *IUniswapV3PoolActionsSession) Burn(tickLower *big.Int, tickUpper *big.Int, amount *big.Int) (*types.Transaction, error) { + return _IUniswapV3PoolActions.Contract.Burn(&_IUniswapV3PoolActions.TransactOpts, tickLower, tickUpper, amount) +} + +// Burn is a paid mutator transaction binding the contract method 0xa34123a7. +// +// Solidity: function burn(int24 tickLower, int24 tickUpper, uint128 amount) returns(uint256 amount0, uint256 amount1) +func (_IUniswapV3PoolActions *IUniswapV3PoolActionsTransactorSession) Burn(tickLower *big.Int, tickUpper *big.Int, amount *big.Int) (*types.Transaction, error) { + return _IUniswapV3PoolActions.Contract.Burn(&_IUniswapV3PoolActions.TransactOpts, tickLower, tickUpper, amount) +} + +// Collect is a paid mutator transaction binding the contract method 0x4f1eb3d8. +// +// Solidity: function collect(address recipient, int24 tickLower, int24 tickUpper, uint128 amount0Requested, uint128 amount1Requested) returns(uint128 amount0, uint128 amount1) +func (_IUniswapV3PoolActions *IUniswapV3PoolActionsTransactor) Collect(opts *bind.TransactOpts, recipient common.Address, tickLower *big.Int, tickUpper *big.Int, amount0Requested *big.Int, amount1Requested *big.Int) (*types.Transaction, error) { + return _IUniswapV3PoolActions.contract.Transact(opts, "collect", recipient, tickLower, tickUpper, amount0Requested, amount1Requested) +} + +// Collect is a paid mutator transaction binding the contract method 0x4f1eb3d8. +// +// Solidity: function collect(address recipient, int24 tickLower, int24 tickUpper, uint128 amount0Requested, uint128 amount1Requested) returns(uint128 amount0, uint128 amount1) +func (_IUniswapV3PoolActions *IUniswapV3PoolActionsSession) Collect(recipient common.Address, tickLower *big.Int, tickUpper *big.Int, amount0Requested *big.Int, amount1Requested *big.Int) (*types.Transaction, error) { + return _IUniswapV3PoolActions.Contract.Collect(&_IUniswapV3PoolActions.TransactOpts, recipient, tickLower, tickUpper, amount0Requested, amount1Requested) +} + +// Collect is a paid mutator transaction binding the contract method 0x4f1eb3d8. +// +// Solidity: function collect(address recipient, int24 tickLower, int24 tickUpper, uint128 amount0Requested, uint128 amount1Requested) returns(uint128 amount0, uint128 amount1) +func (_IUniswapV3PoolActions *IUniswapV3PoolActionsTransactorSession) Collect(recipient common.Address, tickLower *big.Int, tickUpper *big.Int, amount0Requested *big.Int, amount1Requested *big.Int) (*types.Transaction, error) { + return _IUniswapV3PoolActions.Contract.Collect(&_IUniswapV3PoolActions.TransactOpts, recipient, tickLower, tickUpper, amount0Requested, amount1Requested) +} + +// Flash is a paid mutator transaction binding the contract method 0x490e6cbc. +// +// Solidity: function flash(address recipient, uint256 amount0, uint256 amount1, bytes data) returns() +func (_IUniswapV3PoolActions *IUniswapV3PoolActionsTransactor) Flash(opts *bind.TransactOpts, recipient common.Address, amount0 *big.Int, amount1 *big.Int, data []byte) (*types.Transaction, error) { + return _IUniswapV3PoolActions.contract.Transact(opts, "flash", recipient, amount0, amount1, data) +} + +// Flash is a paid mutator transaction binding the contract method 0x490e6cbc. +// +// Solidity: function flash(address recipient, uint256 amount0, uint256 amount1, bytes data) returns() +func (_IUniswapV3PoolActions *IUniswapV3PoolActionsSession) Flash(recipient common.Address, amount0 *big.Int, amount1 *big.Int, data []byte) (*types.Transaction, error) { + return _IUniswapV3PoolActions.Contract.Flash(&_IUniswapV3PoolActions.TransactOpts, recipient, amount0, amount1, data) +} + +// Flash is a paid mutator transaction binding the contract method 0x490e6cbc. +// +// Solidity: function flash(address recipient, uint256 amount0, uint256 amount1, bytes data) returns() +func (_IUniswapV3PoolActions *IUniswapV3PoolActionsTransactorSession) Flash(recipient common.Address, amount0 *big.Int, amount1 *big.Int, data []byte) (*types.Transaction, error) { + return _IUniswapV3PoolActions.Contract.Flash(&_IUniswapV3PoolActions.TransactOpts, recipient, amount0, amount1, data) +} + +// IncreaseObservationCardinalityNext is a paid mutator transaction binding the contract method 0x32148f67. +// +// Solidity: function increaseObservationCardinalityNext(uint16 observationCardinalityNext) returns() +func (_IUniswapV3PoolActions *IUniswapV3PoolActionsTransactor) IncreaseObservationCardinalityNext(opts *bind.TransactOpts, observationCardinalityNext uint16) (*types.Transaction, error) { + return _IUniswapV3PoolActions.contract.Transact(opts, "increaseObservationCardinalityNext", observationCardinalityNext) +} + +// IncreaseObservationCardinalityNext is a paid mutator transaction binding the contract method 0x32148f67. +// +// Solidity: function increaseObservationCardinalityNext(uint16 observationCardinalityNext) returns() +func (_IUniswapV3PoolActions *IUniswapV3PoolActionsSession) IncreaseObservationCardinalityNext(observationCardinalityNext uint16) (*types.Transaction, error) { + return _IUniswapV3PoolActions.Contract.IncreaseObservationCardinalityNext(&_IUniswapV3PoolActions.TransactOpts, observationCardinalityNext) +} + +// IncreaseObservationCardinalityNext is a paid mutator transaction binding the contract method 0x32148f67. +// +// Solidity: function increaseObservationCardinalityNext(uint16 observationCardinalityNext) returns() +func (_IUniswapV3PoolActions *IUniswapV3PoolActionsTransactorSession) IncreaseObservationCardinalityNext(observationCardinalityNext uint16) (*types.Transaction, error) { + return _IUniswapV3PoolActions.Contract.IncreaseObservationCardinalityNext(&_IUniswapV3PoolActions.TransactOpts, observationCardinalityNext) +} + +// Initialize is a paid mutator transaction binding the contract method 0xf637731d. +// +// Solidity: function initialize(uint160 sqrtPriceX96) returns() +func (_IUniswapV3PoolActions *IUniswapV3PoolActionsTransactor) Initialize(opts *bind.TransactOpts, sqrtPriceX96 *big.Int) (*types.Transaction, error) { + return _IUniswapV3PoolActions.contract.Transact(opts, "initialize", sqrtPriceX96) +} + +// Initialize is a paid mutator transaction binding the contract method 0xf637731d. +// +// Solidity: function initialize(uint160 sqrtPriceX96) returns() +func (_IUniswapV3PoolActions *IUniswapV3PoolActionsSession) Initialize(sqrtPriceX96 *big.Int) (*types.Transaction, error) { + return _IUniswapV3PoolActions.Contract.Initialize(&_IUniswapV3PoolActions.TransactOpts, sqrtPriceX96) +} + +// Initialize is a paid mutator transaction binding the contract method 0xf637731d. +// +// Solidity: function initialize(uint160 sqrtPriceX96) returns() +func (_IUniswapV3PoolActions *IUniswapV3PoolActionsTransactorSession) Initialize(sqrtPriceX96 *big.Int) (*types.Transaction, error) { + return _IUniswapV3PoolActions.Contract.Initialize(&_IUniswapV3PoolActions.TransactOpts, sqrtPriceX96) +} + +// Mint is a paid mutator transaction binding the contract method 0x3c8a7d8d. +// +// Solidity: function mint(address recipient, int24 tickLower, int24 tickUpper, uint128 amount, bytes data) returns(uint256 amount0, uint256 amount1) +func (_IUniswapV3PoolActions *IUniswapV3PoolActionsTransactor) Mint(opts *bind.TransactOpts, recipient common.Address, tickLower *big.Int, tickUpper *big.Int, amount *big.Int, data []byte) (*types.Transaction, error) { + return _IUniswapV3PoolActions.contract.Transact(opts, "mint", recipient, tickLower, tickUpper, amount, data) +} + +// Mint is a paid mutator transaction binding the contract method 0x3c8a7d8d. +// +// Solidity: function mint(address recipient, int24 tickLower, int24 tickUpper, uint128 amount, bytes data) returns(uint256 amount0, uint256 amount1) +func (_IUniswapV3PoolActions *IUniswapV3PoolActionsSession) Mint(recipient common.Address, tickLower *big.Int, tickUpper *big.Int, amount *big.Int, data []byte) (*types.Transaction, error) { + return _IUniswapV3PoolActions.Contract.Mint(&_IUniswapV3PoolActions.TransactOpts, recipient, tickLower, tickUpper, amount, data) +} + +// Mint is a paid mutator transaction binding the contract method 0x3c8a7d8d. +// +// Solidity: function mint(address recipient, int24 tickLower, int24 tickUpper, uint128 amount, bytes data) returns(uint256 amount0, uint256 amount1) +func (_IUniswapV3PoolActions *IUniswapV3PoolActionsTransactorSession) Mint(recipient common.Address, tickLower *big.Int, tickUpper *big.Int, amount *big.Int, data []byte) (*types.Transaction, error) { + return _IUniswapV3PoolActions.Contract.Mint(&_IUniswapV3PoolActions.TransactOpts, recipient, tickLower, tickUpper, amount, data) +} + +// Swap is a paid mutator transaction binding the contract method 0x128acb08. +// +// Solidity: function swap(address recipient, bool zeroForOne, int256 amountSpecified, uint160 sqrtPriceLimitX96, bytes data) returns(int256 amount0, int256 amount1) +func (_IUniswapV3PoolActions *IUniswapV3PoolActionsTransactor) Swap(opts *bind.TransactOpts, recipient common.Address, zeroForOne bool, amountSpecified *big.Int, sqrtPriceLimitX96 *big.Int, data []byte) (*types.Transaction, error) { + return _IUniswapV3PoolActions.contract.Transact(opts, "swap", recipient, zeroForOne, amountSpecified, sqrtPriceLimitX96, data) +} + +// Swap is a paid mutator transaction binding the contract method 0x128acb08. +// +// Solidity: function swap(address recipient, bool zeroForOne, int256 amountSpecified, uint160 sqrtPriceLimitX96, bytes data) returns(int256 amount0, int256 amount1) +func (_IUniswapV3PoolActions *IUniswapV3PoolActionsSession) Swap(recipient common.Address, zeroForOne bool, amountSpecified *big.Int, sqrtPriceLimitX96 *big.Int, data []byte) (*types.Transaction, error) { + return _IUniswapV3PoolActions.Contract.Swap(&_IUniswapV3PoolActions.TransactOpts, recipient, zeroForOne, amountSpecified, sqrtPriceLimitX96, data) +} + +// Swap is a paid mutator transaction binding the contract method 0x128acb08. +// +// Solidity: function swap(address recipient, bool zeroForOne, int256 amountSpecified, uint160 sqrtPriceLimitX96, bytes data) returns(int256 amount0, int256 amount1) +func (_IUniswapV3PoolActions *IUniswapV3PoolActionsTransactorSession) Swap(recipient common.Address, zeroForOne bool, amountSpecified *big.Int, sqrtPriceLimitX96 *big.Int, data []byte) (*types.Transaction, error) { + return _IUniswapV3PoolActions.Contract.Swap(&_IUniswapV3PoolActions.TransactOpts, recipient, zeroForOne, amountSpecified, sqrtPriceLimitX96, data) +} diff --git a/pkg/uniswap/v3-core/contracts/interfaces/pool/iuniswapv3poolderivedstate.sol/iuniswapv3poolderivedstate.go b/pkg/uniswap/v3-core/contracts/interfaces/pool/iuniswapv3poolderivedstate.sol/iuniswapv3poolderivedstate.go new file mode 100644 index 00000000..efcbc37a --- /dev/null +++ b/pkg/uniswap/v3-core/contracts/interfaces/pool/iuniswapv3poolderivedstate.sol/iuniswapv3poolderivedstate.go @@ -0,0 +1,276 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package iuniswapv3poolderivedstate + +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 +) + +// IUniswapV3PoolDerivedStateMetaData contains all meta data concerning the IUniswapV3PoolDerivedState contract. +var IUniswapV3PoolDerivedStateMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"uint32[]\",\"name\":\"secondsAgos\",\"type\":\"uint32[]\"}],\"name\":\"observe\",\"outputs\":[{\"internalType\":\"int56[]\",\"name\":\"tickCumulatives\",\"type\":\"int56[]\"},{\"internalType\":\"uint160[]\",\"name\":\"secondsPerLiquidityCumulativeX128s\",\"type\":\"uint160[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"}],\"name\":\"snapshotCumulativesInside\",\"outputs\":[{\"internalType\":\"int56\",\"name\":\"tickCumulativeInside\",\"type\":\"int56\"},{\"internalType\":\"uint160\",\"name\":\"secondsPerLiquidityInsideX128\",\"type\":\"uint160\"},{\"internalType\":\"uint32\",\"name\":\"secondsInside\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", +} + +// IUniswapV3PoolDerivedStateABI is the input ABI used to generate the binding from. +// Deprecated: Use IUniswapV3PoolDerivedStateMetaData.ABI instead. +var IUniswapV3PoolDerivedStateABI = IUniswapV3PoolDerivedStateMetaData.ABI + +// IUniswapV3PoolDerivedState is an auto generated Go binding around an Ethereum contract. +type IUniswapV3PoolDerivedState struct { + IUniswapV3PoolDerivedStateCaller // Read-only binding to the contract + IUniswapV3PoolDerivedStateTransactor // Write-only binding to the contract + IUniswapV3PoolDerivedStateFilterer // Log filterer for contract events +} + +// IUniswapV3PoolDerivedStateCaller is an auto generated read-only Go binding around an Ethereum contract. +type IUniswapV3PoolDerivedStateCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV3PoolDerivedStateTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IUniswapV3PoolDerivedStateTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV3PoolDerivedStateFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IUniswapV3PoolDerivedStateFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV3PoolDerivedStateSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IUniswapV3PoolDerivedStateSession struct { + Contract *IUniswapV3PoolDerivedState // 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 +} + +// IUniswapV3PoolDerivedStateCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IUniswapV3PoolDerivedStateCallerSession struct { + Contract *IUniswapV3PoolDerivedStateCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IUniswapV3PoolDerivedStateTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IUniswapV3PoolDerivedStateTransactorSession struct { + Contract *IUniswapV3PoolDerivedStateTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IUniswapV3PoolDerivedStateRaw is an auto generated low-level Go binding around an Ethereum contract. +type IUniswapV3PoolDerivedStateRaw struct { + Contract *IUniswapV3PoolDerivedState // Generic contract binding to access the raw methods on +} + +// IUniswapV3PoolDerivedStateCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IUniswapV3PoolDerivedStateCallerRaw struct { + Contract *IUniswapV3PoolDerivedStateCaller // Generic read-only contract binding to access the raw methods on +} + +// IUniswapV3PoolDerivedStateTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IUniswapV3PoolDerivedStateTransactorRaw struct { + Contract *IUniswapV3PoolDerivedStateTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIUniswapV3PoolDerivedState creates a new instance of IUniswapV3PoolDerivedState, bound to a specific deployed contract. +func NewIUniswapV3PoolDerivedState(address common.Address, backend bind.ContractBackend) (*IUniswapV3PoolDerivedState, error) { + contract, err := bindIUniswapV3PoolDerivedState(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IUniswapV3PoolDerivedState{IUniswapV3PoolDerivedStateCaller: IUniswapV3PoolDerivedStateCaller{contract: contract}, IUniswapV3PoolDerivedStateTransactor: IUniswapV3PoolDerivedStateTransactor{contract: contract}, IUniswapV3PoolDerivedStateFilterer: IUniswapV3PoolDerivedStateFilterer{contract: contract}}, nil +} + +// NewIUniswapV3PoolDerivedStateCaller creates a new read-only instance of IUniswapV3PoolDerivedState, bound to a specific deployed contract. +func NewIUniswapV3PoolDerivedStateCaller(address common.Address, caller bind.ContractCaller) (*IUniswapV3PoolDerivedStateCaller, error) { + contract, err := bindIUniswapV3PoolDerivedState(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IUniswapV3PoolDerivedStateCaller{contract: contract}, nil +} + +// NewIUniswapV3PoolDerivedStateTransactor creates a new write-only instance of IUniswapV3PoolDerivedState, bound to a specific deployed contract. +func NewIUniswapV3PoolDerivedStateTransactor(address common.Address, transactor bind.ContractTransactor) (*IUniswapV3PoolDerivedStateTransactor, error) { + contract, err := bindIUniswapV3PoolDerivedState(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IUniswapV3PoolDerivedStateTransactor{contract: contract}, nil +} + +// NewIUniswapV3PoolDerivedStateFilterer creates a new log filterer instance of IUniswapV3PoolDerivedState, bound to a specific deployed contract. +func NewIUniswapV3PoolDerivedStateFilterer(address common.Address, filterer bind.ContractFilterer) (*IUniswapV3PoolDerivedStateFilterer, error) { + contract, err := bindIUniswapV3PoolDerivedState(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IUniswapV3PoolDerivedStateFilterer{contract: contract}, nil +} + +// bindIUniswapV3PoolDerivedState binds a generic wrapper to an already deployed contract. +func bindIUniswapV3PoolDerivedState(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IUniswapV3PoolDerivedStateMetaData.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 (_IUniswapV3PoolDerivedState *IUniswapV3PoolDerivedStateRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IUniswapV3PoolDerivedState.Contract.IUniswapV3PoolDerivedStateCaller.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 (_IUniswapV3PoolDerivedState *IUniswapV3PoolDerivedStateRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IUniswapV3PoolDerivedState.Contract.IUniswapV3PoolDerivedStateTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IUniswapV3PoolDerivedState *IUniswapV3PoolDerivedStateRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IUniswapV3PoolDerivedState.Contract.IUniswapV3PoolDerivedStateTransactor.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 (_IUniswapV3PoolDerivedState *IUniswapV3PoolDerivedStateCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IUniswapV3PoolDerivedState.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 (_IUniswapV3PoolDerivedState *IUniswapV3PoolDerivedStateTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IUniswapV3PoolDerivedState.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IUniswapV3PoolDerivedState *IUniswapV3PoolDerivedStateTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IUniswapV3PoolDerivedState.Contract.contract.Transact(opts, method, params...) +} + +// Observe is a free data retrieval call binding the contract method 0x883bdbfd. +// +// Solidity: function observe(uint32[] secondsAgos) view returns(int56[] tickCumulatives, uint160[] secondsPerLiquidityCumulativeX128s) +func (_IUniswapV3PoolDerivedState *IUniswapV3PoolDerivedStateCaller) Observe(opts *bind.CallOpts, secondsAgos []uint32) (struct { + TickCumulatives []*big.Int + SecondsPerLiquidityCumulativeX128s []*big.Int +}, error) { + var out []interface{} + err := _IUniswapV3PoolDerivedState.contract.Call(opts, &out, "observe", secondsAgos) + + outstruct := new(struct { + TickCumulatives []*big.Int + SecondsPerLiquidityCumulativeX128s []*big.Int + }) + if err != nil { + return *outstruct, err + } + + outstruct.TickCumulatives = *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) + outstruct.SecondsPerLiquidityCumulativeX128s = *abi.ConvertType(out[1], new([]*big.Int)).(*[]*big.Int) + + return *outstruct, err + +} + +// Observe is a free data retrieval call binding the contract method 0x883bdbfd. +// +// Solidity: function observe(uint32[] secondsAgos) view returns(int56[] tickCumulatives, uint160[] secondsPerLiquidityCumulativeX128s) +func (_IUniswapV3PoolDerivedState *IUniswapV3PoolDerivedStateSession) Observe(secondsAgos []uint32) (struct { + TickCumulatives []*big.Int + SecondsPerLiquidityCumulativeX128s []*big.Int +}, error) { + return _IUniswapV3PoolDerivedState.Contract.Observe(&_IUniswapV3PoolDerivedState.CallOpts, secondsAgos) +} + +// Observe is a free data retrieval call binding the contract method 0x883bdbfd. +// +// Solidity: function observe(uint32[] secondsAgos) view returns(int56[] tickCumulatives, uint160[] secondsPerLiquidityCumulativeX128s) +func (_IUniswapV3PoolDerivedState *IUniswapV3PoolDerivedStateCallerSession) Observe(secondsAgos []uint32) (struct { + TickCumulatives []*big.Int + SecondsPerLiquidityCumulativeX128s []*big.Int +}, error) { + return _IUniswapV3PoolDerivedState.Contract.Observe(&_IUniswapV3PoolDerivedState.CallOpts, secondsAgos) +} + +// SnapshotCumulativesInside is a free data retrieval call binding the contract method 0xa38807f2. +// +// Solidity: function snapshotCumulativesInside(int24 tickLower, int24 tickUpper) view returns(int56 tickCumulativeInside, uint160 secondsPerLiquidityInsideX128, uint32 secondsInside) +func (_IUniswapV3PoolDerivedState *IUniswapV3PoolDerivedStateCaller) SnapshotCumulativesInside(opts *bind.CallOpts, tickLower *big.Int, tickUpper *big.Int) (struct { + TickCumulativeInside *big.Int + SecondsPerLiquidityInsideX128 *big.Int + SecondsInside uint32 +}, error) { + var out []interface{} + err := _IUniswapV3PoolDerivedState.contract.Call(opts, &out, "snapshotCumulativesInside", tickLower, tickUpper) + + outstruct := new(struct { + TickCumulativeInside *big.Int + SecondsPerLiquidityInsideX128 *big.Int + SecondsInside uint32 + }) + if err != nil { + return *outstruct, err + } + + outstruct.TickCumulativeInside = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + outstruct.SecondsPerLiquidityInsideX128 = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + outstruct.SecondsInside = *abi.ConvertType(out[2], new(uint32)).(*uint32) + + return *outstruct, err + +} + +// SnapshotCumulativesInside is a free data retrieval call binding the contract method 0xa38807f2. +// +// Solidity: function snapshotCumulativesInside(int24 tickLower, int24 tickUpper) view returns(int56 tickCumulativeInside, uint160 secondsPerLiquidityInsideX128, uint32 secondsInside) +func (_IUniswapV3PoolDerivedState *IUniswapV3PoolDerivedStateSession) SnapshotCumulativesInside(tickLower *big.Int, tickUpper *big.Int) (struct { + TickCumulativeInside *big.Int + SecondsPerLiquidityInsideX128 *big.Int + SecondsInside uint32 +}, error) { + return _IUniswapV3PoolDerivedState.Contract.SnapshotCumulativesInside(&_IUniswapV3PoolDerivedState.CallOpts, tickLower, tickUpper) +} + +// SnapshotCumulativesInside is a free data retrieval call binding the contract method 0xa38807f2. +// +// Solidity: function snapshotCumulativesInside(int24 tickLower, int24 tickUpper) view returns(int56 tickCumulativeInside, uint160 secondsPerLiquidityInsideX128, uint32 secondsInside) +func (_IUniswapV3PoolDerivedState *IUniswapV3PoolDerivedStateCallerSession) SnapshotCumulativesInside(tickLower *big.Int, tickUpper *big.Int) (struct { + TickCumulativeInside *big.Int + SecondsPerLiquidityInsideX128 *big.Int + SecondsInside uint32 +}, error) { + return _IUniswapV3PoolDerivedState.Contract.SnapshotCumulativesInside(&_IUniswapV3PoolDerivedState.CallOpts, tickLower, tickUpper) +} diff --git a/pkg/uniswap/v3-core/contracts/interfaces/pool/iuniswapv3poolevents.sol/iuniswapv3poolevents.go b/pkg/uniswap/v3-core/contracts/interfaces/pool/iuniswapv3poolevents.sol/iuniswapv3poolevents.go new file mode 100644 index 00000000..36eaf690 --- /dev/null +++ b/pkg/uniswap/v3-core/contracts/interfaces/pool/iuniswapv3poolevents.sol/iuniswapv3poolevents.go @@ -0,0 +1,1556 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package iuniswapv3poolevents + +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 +) + +// IUniswapV3PoolEventsMetaData contains all meta data concerning the IUniswapV3PoolEvents contract. +var IUniswapV3PoolEventsMetaData = &bind.MetaData{ + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"name\":\"Collect\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"name\":\"CollectProtocol\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"paid0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"paid1\",\"type\":\"uint256\"}],\"name\":\"Flash\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"observationCardinalityNextOld\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"observationCardinalityNextNew\",\"type\":\"uint16\"}],\"name\":\"IncreaseObservationCardinalityNext\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"Initialize\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol0Old\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol1Old\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol0New\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol1New\",\"type\":\"uint8\"}],\"name\":\"SetFeeProtocol\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"amount0\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"amount1\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"Swap\",\"type\":\"event\"}]", +} + +// IUniswapV3PoolEventsABI is the input ABI used to generate the binding from. +// Deprecated: Use IUniswapV3PoolEventsMetaData.ABI instead. +var IUniswapV3PoolEventsABI = IUniswapV3PoolEventsMetaData.ABI + +// IUniswapV3PoolEvents is an auto generated Go binding around an Ethereum contract. +type IUniswapV3PoolEvents struct { + IUniswapV3PoolEventsCaller // Read-only binding to the contract + IUniswapV3PoolEventsTransactor // Write-only binding to the contract + IUniswapV3PoolEventsFilterer // Log filterer for contract events +} + +// IUniswapV3PoolEventsCaller is an auto generated read-only Go binding around an Ethereum contract. +type IUniswapV3PoolEventsCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV3PoolEventsTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IUniswapV3PoolEventsTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV3PoolEventsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IUniswapV3PoolEventsFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV3PoolEventsSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IUniswapV3PoolEventsSession struct { + Contract *IUniswapV3PoolEvents // 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 +} + +// IUniswapV3PoolEventsCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IUniswapV3PoolEventsCallerSession struct { + Contract *IUniswapV3PoolEventsCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IUniswapV3PoolEventsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IUniswapV3PoolEventsTransactorSession struct { + Contract *IUniswapV3PoolEventsTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IUniswapV3PoolEventsRaw is an auto generated low-level Go binding around an Ethereum contract. +type IUniswapV3PoolEventsRaw struct { + Contract *IUniswapV3PoolEvents // Generic contract binding to access the raw methods on +} + +// IUniswapV3PoolEventsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IUniswapV3PoolEventsCallerRaw struct { + Contract *IUniswapV3PoolEventsCaller // Generic read-only contract binding to access the raw methods on +} + +// IUniswapV3PoolEventsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IUniswapV3PoolEventsTransactorRaw struct { + Contract *IUniswapV3PoolEventsTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIUniswapV3PoolEvents creates a new instance of IUniswapV3PoolEvents, bound to a specific deployed contract. +func NewIUniswapV3PoolEvents(address common.Address, backend bind.ContractBackend) (*IUniswapV3PoolEvents, error) { + contract, err := bindIUniswapV3PoolEvents(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IUniswapV3PoolEvents{IUniswapV3PoolEventsCaller: IUniswapV3PoolEventsCaller{contract: contract}, IUniswapV3PoolEventsTransactor: IUniswapV3PoolEventsTransactor{contract: contract}, IUniswapV3PoolEventsFilterer: IUniswapV3PoolEventsFilterer{contract: contract}}, nil +} + +// NewIUniswapV3PoolEventsCaller creates a new read-only instance of IUniswapV3PoolEvents, bound to a specific deployed contract. +func NewIUniswapV3PoolEventsCaller(address common.Address, caller bind.ContractCaller) (*IUniswapV3PoolEventsCaller, error) { + contract, err := bindIUniswapV3PoolEvents(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IUniswapV3PoolEventsCaller{contract: contract}, nil +} + +// NewIUniswapV3PoolEventsTransactor creates a new write-only instance of IUniswapV3PoolEvents, bound to a specific deployed contract. +func NewIUniswapV3PoolEventsTransactor(address common.Address, transactor bind.ContractTransactor) (*IUniswapV3PoolEventsTransactor, error) { + contract, err := bindIUniswapV3PoolEvents(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IUniswapV3PoolEventsTransactor{contract: contract}, nil +} + +// NewIUniswapV3PoolEventsFilterer creates a new log filterer instance of IUniswapV3PoolEvents, bound to a specific deployed contract. +func NewIUniswapV3PoolEventsFilterer(address common.Address, filterer bind.ContractFilterer) (*IUniswapV3PoolEventsFilterer, error) { + contract, err := bindIUniswapV3PoolEvents(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IUniswapV3PoolEventsFilterer{contract: contract}, nil +} + +// bindIUniswapV3PoolEvents binds a generic wrapper to an already deployed contract. +func bindIUniswapV3PoolEvents(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IUniswapV3PoolEventsMetaData.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 (_IUniswapV3PoolEvents *IUniswapV3PoolEventsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IUniswapV3PoolEvents.Contract.IUniswapV3PoolEventsCaller.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 (_IUniswapV3PoolEvents *IUniswapV3PoolEventsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IUniswapV3PoolEvents.Contract.IUniswapV3PoolEventsTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IUniswapV3PoolEvents.Contract.IUniswapV3PoolEventsTransactor.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 (_IUniswapV3PoolEvents *IUniswapV3PoolEventsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IUniswapV3PoolEvents.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 (_IUniswapV3PoolEvents *IUniswapV3PoolEventsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IUniswapV3PoolEvents.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IUniswapV3PoolEvents.Contract.contract.Transact(opts, method, params...) +} + +// IUniswapV3PoolEventsBurnIterator is returned from FilterBurn and is used to iterate over the raw logs and unpacked data for Burn events raised by the IUniswapV3PoolEvents contract. +type IUniswapV3PoolEventsBurnIterator struct { + Event *IUniswapV3PoolEventsBurn // 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 *IUniswapV3PoolEventsBurnIterator) 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(IUniswapV3PoolEventsBurn) + 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(IUniswapV3PoolEventsBurn) + 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 *IUniswapV3PoolEventsBurnIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IUniswapV3PoolEventsBurnIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IUniswapV3PoolEventsBurn represents a Burn event raised by the IUniswapV3PoolEvents contract. +type IUniswapV3PoolEventsBurn struct { + Owner common.Address + TickLower *big.Int + TickUpper *big.Int + Amount *big.Int + Amount0 *big.Int + Amount1 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBurn is a free log retrieval operation binding the contract event 0x0c396cd989a39f4459b5fa1aed6a9a8dcdbc45908acfd67e028cd568da98982c. +// +// Solidity: event Burn(address indexed owner, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount, uint256 amount0, uint256 amount1) +func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) FilterBurn(opts *bind.FilterOpts, owner []common.Address, tickLower []*big.Int, tickUpper []*big.Int) (*IUniswapV3PoolEventsBurnIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var tickLowerRule []interface{} + for _, tickLowerItem := range tickLower { + tickLowerRule = append(tickLowerRule, tickLowerItem) + } + var tickUpperRule []interface{} + for _, tickUpperItem := range tickUpper { + tickUpperRule = append(tickUpperRule, tickUpperItem) + } + + logs, sub, err := _IUniswapV3PoolEvents.contract.FilterLogs(opts, "Burn", ownerRule, tickLowerRule, tickUpperRule) + if err != nil { + return nil, err + } + return &IUniswapV3PoolEventsBurnIterator{contract: _IUniswapV3PoolEvents.contract, event: "Burn", logs: logs, sub: sub}, nil +} + +// WatchBurn is a free log subscription operation binding the contract event 0x0c396cd989a39f4459b5fa1aed6a9a8dcdbc45908acfd67e028cd568da98982c. +// +// Solidity: event Burn(address indexed owner, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount, uint256 amount0, uint256 amount1) +func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) WatchBurn(opts *bind.WatchOpts, sink chan<- *IUniswapV3PoolEventsBurn, owner []common.Address, tickLower []*big.Int, tickUpper []*big.Int) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var tickLowerRule []interface{} + for _, tickLowerItem := range tickLower { + tickLowerRule = append(tickLowerRule, tickLowerItem) + } + var tickUpperRule []interface{} + for _, tickUpperItem := range tickUpper { + tickUpperRule = append(tickUpperRule, tickUpperItem) + } + + logs, sub, err := _IUniswapV3PoolEvents.contract.WatchLogs(opts, "Burn", ownerRule, tickLowerRule, tickUpperRule) + 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(IUniswapV3PoolEventsBurn) + if err := _IUniswapV3PoolEvents.contract.UnpackLog(event, "Burn", 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 +} + +// ParseBurn is a log parse operation binding the contract event 0x0c396cd989a39f4459b5fa1aed6a9a8dcdbc45908acfd67e028cd568da98982c. +// +// Solidity: event Burn(address indexed owner, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount, uint256 amount0, uint256 amount1) +func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) ParseBurn(log types.Log) (*IUniswapV3PoolEventsBurn, error) { + event := new(IUniswapV3PoolEventsBurn) + if err := _IUniswapV3PoolEvents.contract.UnpackLog(event, "Burn", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IUniswapV3PoolEventsCollectIterator is returned from FilterCollect and is used to iterate over the raw logs and unpacked data for Collect events raised by the IUniswapV3PoolEvents contract. +type IUniswapV3PoolEventsCollectIterator struct { + Event *IUniswapV3PoolEventsCollect // 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 *IUniswapV3PoolEventsCollectIterator) 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(IUniswapV3PoolEventsCollect) + 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(IUniswapV3PoolEventsCollect) + 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 *IUniswapV3PoolEventsCollectIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IUniswapV3PoolEventsCollectIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IUniswapV3PoolEventsCollect represents a Collect event raised by the IUniswapV3PoolEvents contract. +type IUniswapV3PoolEventsCollect struct { + Owner common.Address + Recipient common.Address + TickLower *big.Int + TickUpper *big.Int + Amount0 *big.Int + Amount1 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterCollect is a free log retrieval operation binding the contract event 0x70935338e69775456a85ddef226c395fb668b63fa0115f5f20610b388e6ca9c0. +// +// Solidity: event Collect(address indexed owner, address recipient, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount0, uint128 amount1) +func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) FilterCollect(opts *bind.FilterOpts, owner []common.Address, tickLower []*big.Int, tickUpper []*big.Int) (*IUniswapV3PoolEventsCollectIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + + var tickLowerRule []interface{} + for _, tickLowerItem := range tickLower { + tickLowerRule = append(tickLowerRule, tickLowerItem) + } + var tickUpperRule []interface{} + for _, tickUpperItem := range tickUpper { + tickUpperRule = append(tickUpperRule, tickUpperItem) + } + + logs, sub, err := _IUniswapV3PoolEvents.contract.FilterLogs(opts, "Collect", ownerRule, tickLowerRule, tickUpperRule) + if err != nil { + return nil, err + } + return &IUniswapV3PoolEventsCollectIterator{contract: _IUniswapV3PoolEvents.contract, event: "Collect", logs: logs, sub: sub}, nil +} + +// WatchCollect is a free log subscription operation binding the contract event 0x70935338e69775456a85ddef226c395fb668b63fa0115f5f20610b388e6ca9c0. +// +// Solidity: event Collect(address indexed owner, address recipient, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount0, uint128 amount1) +func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) WatchCollect(opts *bind.WatchOpts, sink chan<- *IUniswapV3PoolEventsCollect, owner []common.Address, tickLower []*big.Int, tickUpper []*big.Int) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + + var tickLowerRule []interface{} + for _, tickLowerItem := range tickLower { + tickLowerRule = append(tickLowerRule, tickLowerItem) + } + var tickUpperRule []interface{} + for _, tickUpperItem := range tickUpper { + tickUpperRule = append(tickUpperRule, tickUpperItem) + } + + logs, sub, err := _IUniswapV3PoolEvents.contract.WatchLogs(opts, "Collect", ownerRule, tickLowerRule, tickUpperRule) + 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(IUniswapV3PoolEventsCollect) + if err := _IUniswapV3PoolEvents.contract.UnpackLog(event, "Collect", 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 +} + +// ParseCollect is a log parse operation binding the contract event 0x70935338e69775456a85ddef226c395fb668b63fa0115f5f20610b388e6ca9c0. +// +// Solidity: event Collect(address indexed owner, address recipient, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount0, uint128 amount1) +func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) ParseCollect(log types.Log) (*IUniswapV3PoolEventsCollect, error) { + event := new(IUniswapV3PoolEventsCollect) + if err := _IUniswapV3PoolEvents.contract.UnpackLog(event, "Collect", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IUniswapV3PoolEventsCollectProtocolIterator is returned from FilterCollectProtocol and is used to iterate over the raw logs and unpacked data for CollectProtocol events raised by the IUniswapV3PoolEvents contract. +type IUniswapV3PoolEventsCollectProtocolIterator struct { + Event *IUniswapV3PoolEventsCollectProtocol // 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 *IUniswapV3PoolEventsCollectProtocolIterator) 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(IUniswapV3PoolEventsCollectProtocol) + 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(IUniswapV3PoolEventsCollectProtocol) + 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 *IUniswapV3PoolEventsCollectProtocolIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IUniswapV3PoolEventsCollectProtocolIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IUniswapV3PoolEventsCollectProtocol represents a CollectProtocol event raised by the IUniswapV3PoolEvents contract. +type IUniswapV3PoolEventsCollectProtocol struct { + Sender common.Address + Recipient common.Address + Amount0 *big.Int + Amount1 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterCollectProtocol is a free log retrieval operation binding the contract event 0x596b573906218d3411850b26a6b437d6c4522fdb43d2d2386263f86d50b8b151. +// +// Solidity: event CollectProtocol(address indexed sender, address indexed recipient, uint128 amount0, uint128 amount1) +func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) FilterCollectProtocol(opts *bind.FilterOpts, sender []common.Address, recipient []common.Address) (*IUniswapV3PoolEventsCollectProtocolIterator, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var recipientRule []interface{} + for _, recipientItem := range recipient { + recipientRule = append(recipientRule, recipientItem) + } + + logs, sub, err := _IUniswapV3PoolEvents.contract.FilterLogs(opts, "CollectProtocol", senderRule, recipientRule) + if err != nil { + return nil, err + } + return &IUniswapV3PoolEventsCollectProtocolIterator{contract: _IUniswapV3PoolEvents.contract, event: "CollectProtocol", logs: logs, sub: sub}, nil +} + +// WatchCollectProtocol is a free log subscription operation binding the contract event 0x596b573906218d3411850b26a6b437d6c4522fdb43d2d2386263f86d50b8b151. +// +// Solidity: event CollectProtocol(address indexed sender, address indexed recipient, uint128 amount0, uint128 amount1) +func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) WatchCollectProtocol(opts *bind.WatchOpts, sink chan<- *IUniswapV3PoolEventsCollectProtocol, sender []common.Address, recipient []common.Address) (event.Subscription, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var recipientRule []interface{} + for _, recipientItem := range recipient { + recipientRule = append(recipientRule, recipientItem) + } + + logs, sub, err := _IUniswapV3PoolEvents.contract.WatchLogs(opts, "CollectProtocol", senderRule, recipientRule) + 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(IUniswapV3PoolEventsCollectProtocol) + if err := _IUniswapV3PoolEvents.contract.UnpackLog(event, "CollectProtocol", 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 +} + +// ParseCollectProtocol is a log parse operation binding the contract event 0x596b573906218d3411850b26a6b437d6c4522fdb43d2d2386263f86d50b8b151. +// +// Solidity: event CollectProtocol(address indexed sender, address indexed recipient, uint128 amount0, uint128 amount1) +func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) ParseCollectProtocol(log types.Log) (*IUniswapV3PoolEventsCollectProtocol, error) { + event := new(IUniswapV3PoolEventsCollectProtocol) + if err := _IUniswapV3PoolEvents.contract.UnpackLog(event, "CollectProtocol", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IUniswapV3PoolEventsFlashIterator is returned from FilterFlash and is used to iterate over the raw logs and unpacked data for Flash events raised by the IUniswapV3PoolEvents contract. +type IUniswapV3PoolEventsFlashIterator struct { + Event *IUniswapV3PoolEventsFlash // 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 *IUniswapV3PoolEventsFlashIterator) 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(IUniswapV3PoolEventsFlash) + 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(IUniswapV3PoolEventsFlash) + 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 *IUniswapV3PoolEventsFlashIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IUniswapV3PoolEventsFlashIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IUniswapV3PoolEventsFlash represents a Flash event raised by the IUniswapV3PoolEvents contract. +type IUniswapV3PoolEventsFlash struct { + Sender common.Address + Recipient common.Address + Amount0 *big.Int + Amount1 *big.Int + Paid0 *big.Int + Paid1 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterFlash is a free log retrieval operation binding the contract event 0xbdbdb71d7860376ba52b25a5028beea23581364a40522f6bcfb86bb1f2dca633. +// +// Solidity: event Flash(address indexed sender, address indexed recipient, uint256 amount0, uint256 amount1, uint256 paid0, uint256 paid1) +func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) FilterFlash(opts *bind.FilterOpts, sender []common.Address, recipient []common.Address) (*IUniswapV3PoolEventsFlashIterator, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var recipientRule []interface{} + for _, recipientItem := range recipient { + recipientRule = append(recipientRule, recipientItem) + } + + logs, sub, err := _IUniswapV3PoolEvents.contract.FilterLogs(opts, "Flash", senderRule, recipientRule) + if err != nil { + return nil, err + } + return &IUniswapV3PoolEventsFlashIterator{contract: _IUniswapV3PoolEvents.contract, event: "Flash", logs: logs, sub: sub}, nil +} + +// WatchFlash is a free log subscription operation binding the contract event 0xbdbdb71d7860376ba52b25a5028beea23581364a40522f6bcfb86bb1f2dca633. +// +// Solidity: event Flash(address indexed sender, address indexed recipient, uint256 amount0, uint256 amount1, uint256 paid0, uint256 paid1) +func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) WatchFlash(opts *bind.WatchOpts, sink chan<- *IUniswapV3PoolEventsFlash, sender []common.Address, recipient []common.Address) (event.Subscription, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var recipientRule []interface{} + for _, recipientItem := range recipient { + recipientRule = append(recipientRule, recipientItem) + } + + logs, sub, err := _IUniswapV3PoolEvents.contract.WatchLogs(opts, "Flash", senderRule, recipientRule) + 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(IUniswapV3PoolEventsFlash) + if err := _IUniswapV3PoolEvents.contract.UnpackLog(event, "Flash", 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 +} + +// ParseFlash is a log parse operation binding the contract event 0xbdbdb71d7860376ba52b25a5028beea23581364a40522f6bcfb86bb1f2dca633. +// +// Solidity: event Flash(address indexed sender, address indexed recipient, uint256 amount0, uint256 amount1, uint256 paid0, uint256 paid1) +func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) ParseFlash(log types.Log) (*IUniswapV3PoolEventsFlash, error) { + event := new(IUniswapV3PoolEventsFlash) + if err := _IUniswapV3PoolEvents.contract.UnpackLog(event, "Flash", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IUniswapV3PoolEventsIncreaseObservationCardinalityNextIterator is returned from FilterIncreaseObservationCardinalityNext and is used to iterate over the raw logs and unpacked data for IncreaseObservationCardinalityNext events raised by the IUniswapV3PoolEvents contract. +type IUniswapV3PoolEventsIncreaseObservationCardinalityNextIterator struct { + Event *IUniswapV3PoolEventsIncreaseObservationCardinalityNext // 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 *IUniswapV3PoolEventsIncreaseObservationCardinalityNextIterator) 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(IUniswapV3PoolEventsIncreaseObservationCardinalityNext) + 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(IUniswapV3PoolEventsIncreaseObservationCardinalityNext) + 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 *IUniswapV3PoolEventsIncreaseObservationCardinalityNextIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IUniswapV3PoolEventsIncreaseObservationCardinalityNextIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IUniswapV3PoolEventsIncreaseObservationCardinalityNext represents a IncreaseObservationCardinalityNext event raised by the IUniswapV3PoolEvents contract. +type IUniswapV3PoolEventsIncreaseObservationCardinalityNext struct { + ObservationCardinalityNextOld uint16 + ObservationCardinalityNextNew uint16 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterIncreaseObservationCardinalityNext is a free log retrieval operation binding the contract event 0xac49e518f90a358f652e4400164f05a5d8f7e35e7747279bc3a93dbf584e125a. +// +// Solidity: event IncreaseObservationCardinalityNext(uint16 observationCardinalityNextOld, uint16 observationCardinalityNextNew) +func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) FilterIncreaseObservationCardinalityNext(opts *bind.FilterOpts) (*IUniswapV3PoolEventsIncreaseObservationCardinalityNextIterator, error) { + + logs, sub, err := _IUniswapV3PoolEvents.contract.FilterLogs(opts, "IncreaseObservationCardinalityNext") + if err != nil { + return nil, err + } + return &IUniswapV3PoolEventsIncreaseObservationCardinalityNextIterator{contract: _IUniswapV3PoolEvents.contract, event: "IncreaseObservationCardinalityNext", logs: logs, sub: sub}, nil +} + +// WatchIncreaseObservationCardinalityNext is a free log subscription operation binding the contract event 0xac49e518f90a358f652e4400164f05a5d8f7e35e7747279bc3a93dbf584e125a. +// +// Solidity: event IncreaseObservationCardinalityNext(uint16 observationCardinalityNextOld, uint16 observationCardinalityNextNew) +func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) WatchIncreaseObservationCardinalityNext(opts *bind.WatchOpts, sink chan<- *IUniswapV3PoolEventsIncreaseObservationCardinalityNext) (event.Subscription, error) { + + logs, sub, err := _IUniswapV3PoolEvents.contract.WatchLogs(opts, "IncreaseObservationCardinalityNext") + 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(IUniswapV3PoolEventsIncreaseObservationCardinalityNext) + if err := _IUniswapV3PoolEvents.contract.UnpackLog(event, "IncreaseObservationCardinalityNext", 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 +} + +// ParseIncreaseObservationCardinalityNext is a log parse operation binding the contract event 0xac49e518f90a358f652e4400164f05a5d8f7e35e7747279bc3a93dbf584e125a. +// +// Solidity: event IncreaseObservationCardinalityNext(uint16 observationCardinalityNextOld, uint16 observationCardinalityNextNew) +func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) ParseIncreaseObservationCardinalityNext(log types.Log) (*IUniswapV3PoolEventsIncreaseObservationCardinalityNext, error) { + event := new(IUniswapV3PoolEventsIncreaseObservationCardinalityNext) + if err := _IUniswapV3PoolEvents.contract.UnpackLog(event, "IncreaseObservationCardinalityNext", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IUniswapV3PoolEventsInitializeIterator is returned from FilterInitialize and is used to iterate over the raw logs and unpacked data for Initialize events raised by the IUniswapV3PoolEvents contract. +type IUniswapV3PoolEventsInitializeIterator struct { + Event *IUniswapV3PoolEventsInitialize // 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 *IUniswapV3PoolEventsInitializeIterator) 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(IUniswapV3PoolEventsInitialize) + 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(IUniswapV3PoolEventsInitialize) + 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 *IUniswapV3PoolEventsInitializeIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IUniswapV3PoolEventsInitializeIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IUniswapV3PoolEventsInitialize represents a Initialize event raised by the IUniswapV3PoolEvents contract. +type IUniswapV3PoolEventsInitialize struct { + SqrtPriceX96 *big.Int + Tick *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialize is a free log retrieval operation binding the contract event 0x98636036cb66a9c19a37435efc1e90142190214e8abeb821bdba3f2990dd4c95. +// +// Solidity: event Initialize(uint160 sqrtPriceX96, int24 tick) +func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) FilterInitialize(opts *bind.FilterOpts) (*IUniswapV3PoolEventsInitializeIterator, error) { + + logs, sub, err := _IUniswapV3PoolEvents.contract.FilterLogs(opts, "Initialize") + if err != nil { + return nil, err + } + return &IUniswapV3PoolEventsInitializeIterator{contract: _IUniswapV3PoolEvents.contract, event: "Initialize", logs: logs, sub: sub}, nil +} + +// WatchInitialize is a free log subscription operation binding the contract event 0x98636036cb66a9c19a37435efc1e90142190214e8abeb821bdba3f2990dd4c95. +// +// Solidity: event Initialize(uint160 sqrtPriceX96, int24 tick) +func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) WatchInitialize(opts *bind.WatchOpts, sink chan<- *IUniswapV3PoolEventsInitialize) (event.Subscription, error) { + + logs, sub, err := _IUniswapV3PoolEvents.contract.WatchLogs(opts, "Initialize") + 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(IUniswapV3PoolEventsInitialize) + if err := _IUniswapV3PoolEvents.contract.UnpackLog(event, "Initialize", 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 +} + +// ParseInitialize is a log parse operation binding the contract event 0x98636036cb66a9c19a37435efc1e90142190214e8abeb821bdba3f2990dd4c95. +// +// Solidity: event Initialize(uint160 sqrtPriceX96, int24 tick) +func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) ParseInitialize(log types.Log) (*IUniswapV3PoolEventsInitialize, error) { + event := new(IUniswapV3PoolEventsInitialize) + if err := _IUniswapV3PoolEvents.contract.UnpackLog(event, "Initialize", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IUniswapV3PoolEventsMintIterator is returned from FilterMint and is used to iterate over the raw logs and unpacked data for Mint events raised by the IUniswapV3PoolEvents contract. +type IUniswapV3PoolEventsMintIterator struct { + Event *IUniswapV3PoolEventsMint // 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 *IUniswapV3PoolEventsMintIterator) 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(IUniswapV3PoolEventsMint) + 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(IUniswapV3PoolEventsMint) + 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 *IUniswapV3PoolEventsMintIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IUniswapV3PoolEventsMintIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IUniswapV3PoolEventsMint represents a Mint event raised by the IUniswapV3PoolEvents contract. +type IUniswapV3PoolEventsMint struct { + Sender common.Address + Owner common.Address + TickLower *big.Int + TickUpper *big.Int + Amount *big.Int + Amount0 *big.Int + Amount1 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterMint is a free log retrieval operation binding the contract event 0x7a53080ba414158be7ec69b987b5fb7d07dee101fe85488f0853ae16239d0bde. +// +// Solidity: event Mint(address sender, address indexed owner, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount, uint256 amount0, uint256 amount1) +func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) FilterMint(opts *bind.FilterOpts, owner []common.Address, tickLower []*big.Int, tickUpper []*big.Int) (*IUniswapV3PoolEventsMintIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var tickLowerRule []interface{} + for _, tickLowerItem := range tickLower { + tickLowerRule = append(tickLowerRule, tickLowerItem) + } + var tickUpperRule []interface{} + for _, tickUpperItem := range tickUpper { + tickUpperRule = append(tickUpperRule, tickUpperItem) + } + + logs, sub, err := _IUniswapV3PoolEvents.contract.FilterLogs(opts, "Mint", ownerRule, tickLowerRule, tickUpperRule) + if err != nil { + return nil, err + } + return &IUniswapV3PoolEventsMintIterator{contract: _IUniswapV3PoolEvents.contract, event: "Mint", logs: logs, sub: sub}, nil +} + +// WatchMint is a free log subscription operation binding the contract event 0x7a53080ba414158be7ec69b987b5fb7d07dee101fe85488f0853ae16239d0bde. +// +// Solidity: event Mint(address sender, address indexed owner, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount, uint256 amount0, uint256 amount1) +func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) WatchMint(opts *bind.WatchOpts, sink chan<- *IUniswapV3PoolEventsMint, owner []common.Address, tickLower []*big.Int, tickUpper []*big.Int) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var tickLowerRule []interface{} + for _, tickLowerItem := range tickLower { + tickLowerRule = append(tickLowerRule, tickLowerItem) + } + var tickUpperRule []interface{} + for _, tickUpperItem := range tickUpper { + tickUpperRule = append(tickUpperRule, tickUpperItem) + } + + logs, sub, err := _IUniswapV3PoolEvents.contract.WatchLogs(opts, "Mint", ownerRule, tickLowerRule, tickUpperRule) + 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(IUniswapV3PoolEventsMint) + if err := _IUniswapV3PoolEvents.contract.UnpackLog(event, "Mint", 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 +} + +// ParseMint is a log parse operation binding the contract event 0x7a53080ba414158be7ec69b987b5fb7d07dee101fe85488f0853ae16239d0bde. +// +// Solidity: event Mint(address sender, address indexed owner, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount, uint256 amount0, uint256 amount1) +func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) ParseMint(log types.Log) (*IUniswapV3PoolEventsMint, error) { + event := new(IUniswapV3PoolEventsMint) + if err := _IUniswapV3PoolEvents.contract.UnpackLog(event, "Mint", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IUniswapV3PoolEventsSetFeeProtocolIterator is returned from FilterSetFeeProtocol and is used to iterate over the raw logs and unpacked data for SetFeeProtocol events raised by the IUniswapV3PoolEvents contract. +type IUniswapV3PoolEventsSetFeeProtocolIterator struct { + Event *IUniswapV3PoolEventsSetFeeProtocol // 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 *IUniswapV3PoolEventsSetFeeProtocolIterator) 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(IUniswapV3PoolEventsSetFeeProtocol) + 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(IUniswapV3PoolEventsSetFeeProtocol) + 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 *IUniswapV3PoolEventsSetFeeProtocolIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IUniswapV3PoolEventsSetFeeProtocolIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IUniswapV3PoolEventsSetFeeProtocol represents a SetFeeProtocol event raised by the IUniswapV3PoolEvents contract. +type IUniswapV3PoolEventsSetFeeProtocol struct { + FeeProtocol0Old uint8 + FeeProtocol1Old uint8 + FeeProtocol0New uint8 + FeeProtocol1New uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSetFeeProtocol is a free log retrieval operation binding the contract event 0x973d8d92bb299f4af6ce49b52a8adb85ae46b9f214c4c4fc06ac77401237b133. +// +// Solidity: event SetFeeProtocol(uint8 feeProtocol0Old, uint8 feeProtocol1Old, uint8 feeProtocol0New, uint8 feeProtocol1New) +func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) FilterSetFeeProtocol(opts *bind.FilterOpts) (*IUniswapV3PoolEventsSetFeeProtocolIterator, error) { + + logs, sub, err := _IUniswapV3PoolEvents.contract.FilterLogs(opts, "SetFeeProtocol") + if err != nil { + return nil, err + } + return &IUniswapV3PoolEventsSetFeeProtocolIterator{contract: _IUniswapV3PoolEvents.contract, event: "SetFeeProtocol", logs: logs, sub: sub}, nil +} + +// WatchSetFeeProtocol is a free log subscription operation binding the contract event 0x973d8d92bb299f4af6ce49b52a8adb85ae46b9f214c4c4fc06ac77401237b133. +// +// Solidity: event SetFeeProtocol(uint8 feeProtocol0Old, uint8 feeProtocol1Old, uint8 feeProtocol0New, uint8 feeProtocol1New) +func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) WatchSetFeeProtocol(opts *bind.WatchOpts, sink chan<- *IUniswapV3PoolEventsSetFeeProtocol) (event.Subscription, error) { + + logs, sub, err := _IUniswapV3PoolEvents.contract.WatchLogs(opts, "SetFeeProtocol") + 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(IUniswapV3PoolEventsSetFeeProtocol) + if err := _IUniswapV3PoolEvents.contract.UnpackLog(event, "SetFeeProtocol", 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 +} + +// ParseSetFeeProtocol is a log parse operation binding the contract event 0x973d8d92bb299f4af6ce49b52a8adb85ae46b9f214c4c4fc06ac77401237b133. +// +// Solidity: event SetFeeProtocol(uint8 feeProtocol0Old, uint8 feeProtocol1Old, uint8 feeProtocol0New, uint8 feeProtocol1New) +func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) ParseSetFeeProtocol(log types.Log) (*IUniswapV3PoolEventsSetFeeProtocol, error) { + event := new(IUniswapV3PoolEventsSetFeeProtocol) + if err := _IUniswapV3PoolEvents.contract.UnpackLog(event, "SetFeeProtocol", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IUniswapV3PoolEventsSwapIterator is returned from FilterSwap and is used to iterate over the raw logs and unpacked data for Swap events raised by the IUniswapV3PoolEvents contract. +type IUniswapV3PoolEventsSwapIterator struct { + Event *IUniswapV3PoolEventsSwap // 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 *IUniswapV3PoolEventsSwapIterator) 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(IUniswapV3PoolEventsSwap) + 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(IUniswapV3PoolEventsSwap) + 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 *IUniswapV3PoolEventsSwapIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IUniswapV3PoolEventsSwapIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IUniswapV3PoolEventsSwap represents a Swap event raised by the IUniswapV3PoolEvents contract. +type IUniswapV3PoolEventsSwap struct { + Sender common.Address + Recipient common.Address + Amount0 *big.Int + Amount1 *big.Int + SqrtPriceX96 *big.Int + Liquidity *big.Int + Tick *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSwap is a free log retrieval operation binding the contract event 0xc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca67. +// +// Solidity: event Swap(address indexed sender, address indexed recipient, int256 amount0, int256 amount1, uint160 sqrtPriceX96, uint128 liquidity, int24 tick) +func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) FilterSwap(opts *bind.FilterOpts, sender []common.Address, recipient []common.Address) (*IUniswapV3PoolEventsSwapIterator, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var recipientRule []interface{} + for _, recipientItem := range recipient { + recipientRule = append(recipientRule, recipientItem) + } + + logs, sub, err := _IUniswapV3PoolEvents.contract.FilterLogs(opts, "Swap", senderRule, recipientRule) + if err != nil { + return nil, err + } + return &IUniswapV3PoolEventsSwapIterator{contract: _IUniswapV3PoolEvents.contract, event: "Swap", logs: logs, sub: sub}, nil +} + +// WatchSwap is a free log subscription operation binding the contract event 0xc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca67. +// +// Solidity: event Swap(address indexed sender, address indexed recipient, int256 amount0, int256 amount1, uint160 sqrtPriceX96, uint128 liquidity, int24 tick) +func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) WatchSwap(opts *bind.WatchOpts, sink chan<- *IUniswapV3PoolEventsSwap, sender []common.Address, recipient []common.Address) (event.Subscription, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var recipientRule []interface{} + for _, recipientItem := range recipient { + recipientRule = append(recipientRule, recipientItem) + } + + logs, sub, err := _IUniswapV3PoolEvents.contract.WatchLogs(opts, "Swap", senderRule, recipientRule) + 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(IUniswapV3PoolEventsSwap) + if err := _IUniswapV3PoolEvents.contract.UnpackLog(event, "Swap", 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 +} + +// ParseSwap is a log parse operation binding the contract event 0xc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca67. +// +// Solidity: event Swap(address indexed sender, address indexed recipient, int256 amount0, int256 amount1, uint160 sqrtPriceX96, uint128 liquidity, int24 tick) +func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) ParseSwap(log types.Log) (*IUniswapV3PoolEventsSwap, error) { + event := new(IUniswapV3PoolEventsSwap) + if err := _IUniswapV3PoolEvents.contract.UnpackLog(event, "Swap", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/pkg/uniswap/v3-core/contracts/interfaces/pool/iuniswapv3poolimmutables.sol/iuniswapv3poolimmutables.go b/pkg/uniswap/v3-core/contracts/interfaces/pool/iuniswapv3poolimmutables.sol/iuniswapv3poolimmutables.go new file mode 100644 index 00000000..9126c9db --- /dev/null +++ b/pkg/uniswap/v3-core/contracts/interfaces/pool/iuniswapv3poolimmutables.sol/iuniswapv3poolimmutables.go @@ -0,0 +1,367 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package iuniswapv3poolimmutables + +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 +) + +// IUniswapV3PoolImmutablesMetaData contains all meta data concerning the IUniswapV3PoolImmutables contract. +var IUniswapV3PoolImmutablesMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fee\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxLiquidityPerTick\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tickSpacing\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"\",\"type\":\"int24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", +} + +// IUniswapV3PoolImmutablesABI is the input ABI used to generate the binding from. +// Deprecated: Use IUniswapV3PoolImmutablesMetaData.ABI instead. +var IUniswapV3PoolImmutablesABI = IUniswapV3PoolImmutablesMetaData.ABI + +// IUniswapV3PoolImmutables is an auto generated Go binding around an Ethereum contract. +type IUniswapV3PoolImmutables struct { + IUniswapV3PoolImmutablesCaller // Read-only binding to the contract + IUniswapV3PoolImmutablesTransactor // Write-only binding to the contract + IUniswapV3PoolImmutablesFilterer // Log filterer for contract events +} + +// IUniswapV3PoolImmutablesCaller is an auto generated read-only Go binding around an Ethereum contract. +type IUniswapV3PoolImmutablesCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV3PoolImmutablesTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IUniswapV3PoolImmutablesTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV3PoolImmutablesFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IUniswapV3PoolImmutablesFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV3PoolImmutablesSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IUniswapV3PoolImmutablesSession struct { + Contract *IUniswapV3PoolImmutables // 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 +} + +// IUniswapV3PoolImmutablesCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IUniswapV3PoolImmutablesCallerSession struct { + Contract *IUniswapV3PoolImmutablesCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IUniswapV3PoolImmutablesTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IUniswapV3PoolImmutablesTransactorSession struct { + Contract *IUniswapV3PoolImmutablesTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IUniswapV3PoolImmutablesRaw is an auto generated low-level Go binding around an Ethereum contract. +type IUniswapV3PoolImmutablesRaw struct { + Contract *IUniswapV3PoolImmutables // Generic contract binding to access the raw methods on +} + +// IUniswapV3PoolImmutablesCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IUniswapV3PoolImmutablesCallerRaw struct { + Contract *IUniswapV3PoolImmutablesCaller // Generic read-only contract binding to access the raw methods on +} + +// IUniswapV3PoolImmutablesTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IUniswapV3PoolImmutablesTransactorRaw struct { + Contract *IUniswapV3PoolImmutablesTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIUniswapV3PoolImmutables creates a new instance of IUniswapV3PoolImmutables, bound to a specific deployed contract. +func NewIUniswapV3PoolImmutables(address common.Address, backend bind.ContractBackend) (*IUniswapV3PoolImmutables, error) { + contract, err := bindIUniswapV3PoolImmutables(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IUniswapV3PoolImmutables{IUniswapV3PoolImmutablesCaller: IUniswapV3PoolImmutablesCaller{contract: contract}, IUniswapV3PoolImmutablesTransactor: IUniswapV3PoolImmutablesTransactor{contract: contract}, IUniswapV3PoolImmutablesFilterer: IUniswapV3PoolImmutablesFilterer{contract: contract}}, nil +} + +// NewIUniswapV3PoolImmutablesCaller creates a new read-only instance of IUniswapV3PoolImmutables, bound to a specific deployed contract. +func NewIUniswapV3PoolImmutablesCaller(address common.Address, caller bind.ContractCaller) (*IUniswapV3PoolImmutablesCaller, error) { + contract, err := bindIUniswapV3PoolImmutables(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IUniswapV3PoolImmutablesCaller{contract: contract}, nil +} + +// NewIUniswapV3PoolImmutablesTransactor creates a new write-only instance of IUniswapV3PoolImmutables, bound to a specific deployed contract. +func NewIUniswapV3PoolImmutablesTransactor(address common.Address, transactor bind.ContractTransactor) (*IUniswapV3PoolImmutablesTransactor, error) { + contract, err := bindIUniswapV3PoolImmutables(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IUniswapV3PoolImmutablesTransactor{contract: contract}, nil +} + +// NewIUniswapV3PoolImmutablesFilterer creates a new log filterer instance of IUniswapV3PoolImmutables, bound to a specific deployed contract. +func NewIUniswapV3PoolImmutablesFilterer(address common.Address, filterer bind.ContractFilterer) (*IUniswapV3PoolImmutablesFilterer, error) { + contract, err := bindIUniswapV3PoolImmutables(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IUniswapV3PoolImmutablesFilterer{contract: contract}, nil +} + +// bindIUniswapV3PoolImmutables binds a generic wrapper to an already deployed contract. +func bindIUniswapV3PoolImmutables(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IUniswapV3PoolImmutablesMetaData.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 (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IUniswapV3PoolImmutables.Contract.IUniswapV3PoolImmutablesCaller.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 (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IUniswapV3PoolImmutables.Contract.IUniswapV3PoolImmutablesTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IUniswapV3PoolImmutables.Contract.IUniswapV3PoolImmutablesTransactor.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 (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IUniswapV3PoolImmutables.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 (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IUniswapV3PoolImmutables.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IUniswapV3PoolImmutables.Contract.contract.Transact(opts, method, params...) +} + +// Factory is a free data retrieval call binding the contract method 0xc45a0155. +// +// Solidity: function factory() view returns(address) +func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesCaller) Factory(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _IUniswapV3PoolImmutables.contract.Call(opts, &out, "factory") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Factory is a free data retrieval call binding the contract method 0xc45a0155. +// +// Solidity: function factory() view returns(address) +func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesSession) Factory() (common.Address, error) { + return _IUniswapV3PoolImmutables.Contract.Factory(&_IUniswapV3PoolImmutables.CallOpts) +} + +// Factory is a free data retrieval call binding the contract method 0xc45a0155. +// +// Solidity: function factory() view returns(address) +func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesCallerSession) Factory() (common.Address, error) { + return _IUniswapV3PoolImmutables.Contract.Factory(&_IUniswapV3PoolImmutables.CallOpts) +} + +// Fee is a free data retrieval call binding the contract method 0xddca3f43. +// +// Solidity: function fee() view returns(uint24) +func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesCaller) Fee(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IUniswapV3PoolImmutables.contract.Call(opts, &out, "fee") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Fee is a free data retrieval call binding the contract method 0xddca3f43. +// +// Solidity: function fee() view returns(uint24) +func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesSession) Fee() (*big.Int, error) { + return _IUniswapV3PoolImmutables.Contract.Fee(&_IUniswapV3PoolImmutables.CallOpts) +} + +// Fee is a free data retrieval call binding the contract method 0xddca3f43. +// +// Solidity: function fee() view returns(uint24) +func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesCallerSession) Fee() (*big.Int, error) { + return _IUniswapV3PoolImmutables.Contract.Fee(&_IUniswapV3PoolImmutables.CallOpts) +} + +// MaxLiquidityPerTick is a free data retrieval call binding the contract method 0x70cf754a. +// +// Solidity: function maxLiquidityPerTick() view returns(uint128) +func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesCaller) MaxLiquidityPerTick(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IUniswapV3PoolImmutables.contract.Call(opts, &out, "maxLiquidityPerTick") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// MaxLiquidityPerTick is a free data retrieval call binding the contract method 0x70cf754a. +// +// Solidity: function maxLiquidityPerTick() view returns(uint128) +func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesSession) MaxLiquidityPerTick() (*big.Int, error) { + return _IUniswapV3PoolImmutables.Contract.MaxLiquidityPerTick(&_IUniswapV3PoolImmutables.CallOpts) +} + +// MaxLiquidityPerTick is a free data retrieval call binding the contract method 0x70cf754a. +// +// Solidity: function maxLiquidityPerTick() view returns(uint128) +func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesCallerSession) MaxLiquidityPerTick() (*big.Int, error) { + return _IUniswapV3PoolImmutables.Contract.MaxLiquidityPerTick(&_IUniswapV3PoolImmutables.CallOpts) +} + +// TickSpacing is a free data retrieval call binding the contract method 0xd0c93a7c. +// +// Solidity: function tickSpacing() view returns(int24) +func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesCaller) TickSpacing(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IUniswapV3PoolImmutables.contract.Call(opts, &out, "tickSpacing") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TickSpacing is a free data retrieval call binding the contract method 0xd0c93a7c. +// +// Solidity: function tickSpacing() view returns(int24) +func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesSession) TickSpacing() (*big.Int, error) { + return _IUniswapV3PoolImmutables.Contract.TickSpacing(&_IUniswapV3PoolImmutables.CallOpts) +} + +// TickSpacing is a free data retrieval call binding the contract method 0xd0c93a7c. +// +// Solidity: function tickSpacing() view returns(int24) +func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesCallerSession) TickSpacing() (*big.Int, error) { + return _IUniswapV3PoolImmutables.Contract.TickSpacing(&_IUniswapV3PoolImmutables.CallOpts) +} + +// Token0 is a free data retrieval call binding the contract method 0x0dfe1681. +// +// Solidity: function token0() view returns(address) +func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesCaller) Token0(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _IUniswapV3PoolImmutables.contract.Call(opts, &out, "token0") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Token0 is a free data retrieval call binding the contract method 0x0dfe1681. +// +// Solidity: function token0() view returns(address) +func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesSession) Token0() (common.Address, error) { + return _IUniswapV3PoolImmutables.Contract.Token0(&_IUniswapV3PoolImmutables.CallOpts) +} + +// Token0 is a free data retrieval call binding the contract method 0x0dfe1681. +// +// Solidity: function token0() view returns(address) +func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesCallerSession) Token0() (common.Address, error) { + return _IUniswapV3PoolImmutables.Contract.Token0(&_IUniswapV3PoolImmutables.CallOpts) +} + +// Token1 is a free data retrieval call binding the contract method 0xd21220a7. +// +// Solidity: function token1() view returns(address) +func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesCaller) Token1(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _IUniswapV3PoolImmutables.contract.Call(opts, &out, "token1") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Token1 is a free data retrieval call binding the contract method 0xd21220a7. +// +// Solidity: function token1() view returns(address) +func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesSession) Token1() (common.Address, error) { + return _IUniswapV3PoolImmutables.Contract.Token1(&_IUniswapV3PoolImmutables.CallOpts) +} + +// Token1 is a free data retrieval call binding the contract method 0xd21220a7. +// +// Solidity: function token1() view returns(address) +func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesCallerSession) Token1() (common.Address, error) { + return _IUniswapV3PoolImmutables.Contract.Token1(&_IUniswapV3PoolImmutables.CallOpts) +} diff --git a/pkg/uniswap/v3-core/contracts/interfaces/pool/iuniswapv3poolowneractions.sol/iuniswapv3poolowneractions.go b/pkg/uniswap/v3-core/contracts/interfaces/pool/iuniswapv3poolowneractions.sol/iuniswapv3poolowneractions.go new file mode 100644 index 00000000..a5bd7aeb --- /dev/null +++ b/pkg/uniswap/v3-core/contracts/interfaces/pool/iuniswapv3poolowneractions.sol/iuniswapv3poolowneractions.go @@ -0,0 +1,223 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package iuniswapv3poolowneractions + +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 +) + +// IUniswapV3PoolOwnerActionsMetaData contains all meta data concerning the IUniswapV3PoolOwnerActions contract. +var IUniswapV3PoolOwnerActionsMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"amount0Requested\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1Requested\",\"type\":\"uint128\"}],\"name\":\"collectProtocol\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"feeProtocol0\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"feeProtocol1\",\"type\":\"uint8\"}],\"name\":\"setFeeProtocol\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// IUniswapV3PoolOwnerActionsABI is the input ABI used to generate the binding from. +// Deprecated: Use IUniswapV3PoolOwnerActionsMetaData.ABI instead. +var IUniswapV3PoolOwnerActionsABI = IUniswapV3PoolOwnerActionsMetaData.ABI + +// IUniswapV3PoolOwnerActions is an auto generated Go binding around an Ethereum contract. +type IUniswapV3PoolOwnerActions struct { + IUniswapV3PoolOwnerActionsCaller // Read-only binding to the contract + IUniswapV3PoolOwnerActionsTransactor // Write-only binding to the contract + IUniswapV3PoolOwnerActionsFilterer // Log filterer for contract events +} + +// IUniswapV3PoolOwnerActionsCaller is an auto generated read-only Go binding around an Ethereum contract. +type IUniswapV3PoolOwnerActionsCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV3PoolOwnerActionsTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IUniswapV3PoolOwnerActionsTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV3PoolOwnerActionsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IUniswapV3PoolOwnerActionsFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV3PoolOwnerActionsSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IUniswapV3PoolOwnerActionsSession struct { + Contract *IUniswapV3PoolOwnerActions // 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 +} + +// IUniswapV3PoolOwnerActionsCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IUniswapV3PoolOwnerActionsCallerSession struct { + Contract *IUniswapV3PoolOwnerActionsCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IUniswapV3PoolOwnerActionsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IUniswapV3PoolOwnerActionsTransactorSession struct { + Contract *IUniswapV3PoolOwnerActionsTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IUniswapV3PoolOwnerActionsRaw is an auto generated low-level Go binding around an Ethereum contract. +type IUniswapV3PoolOwnerActionsRaw struct { + Contract *IUniswapV3PoolOwnerActions // Generic contract binding to access the raw methods on +} + +// IUniswapV3PoolOwnerActionsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IUniswapV3PoolOwnerActionsCallerRaw struct { + Contract *IUniswapV3PoolOwnerActionsCaller // Generic read-only contract binding to access the raw methods on +} + +// IUniswapV3PoolOwnerActionsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IUniswapV3PoolOwnerActionsTransactorRaw struct { + Contract *IUniswapV3PoolOwnerActionsTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIUniswapV3PoolOwnerActions creates a new instance of IUniswapV3PoolOwnerActions, bound to a specific deployed contract. +func NewIUniswapV3PoolOwnerActions(address common.Address, backend bind.ContractBackend) (*IUniswapV3PoolOwnerActions, error) { + contract, err := bindIUniswapV3PoolOwnerActions(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IUniswapV3PoolOwnerActions{IUniswapV3PoolOwnerActionsCaller: IUniswapV3PoolOwnerActionsCaller{contract: contract}, IUniswapV3PoolOwnerActionsTransactor: IUniswapV3PoolOwnerActionsTransactor{contract: contract}, IUniswapV3PoolOwnerActionsFilterer: IUniswapV3PoolOwnerActionsFilterer{contract: contract}}, nil +} + +// NewIUniswapV3PoolOwnerActionsCaller creates a new read-only instance of IUniswapV3PoolOwnerActions, bound to a specific deployed contract. +func NewIUniswapV3PoolOwnerActionsCaller(address common.Address, caller bind.ContractCaller) (*IUniswapV3PoolOwnerActionsCaller, error) { + contract, err := bindIUniswapV3PoolOwnerActions(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IUniswapV3PoolOwnerActionsCaller{contract: contract}, nil +} + +// NewIUniswapV3PoolOwnerActionsTransactor creates a new write-only instance of IUniswapV3PoolOwnerActions, bound to a specific deployed contract. +func NewIUniswapV3PoolOwnerActionsTransactor(address common.Address, transactor bind.ContractTransactor) (*IUniswapV3PoolOwnerActionsTransactor, error) { + contract, err := bindIUniswapV3PoolOwnerActions(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IUniswapV3PoolOwnerActionsTransactor{contract: contract}, nil +} + +// NewIUniswapV3PoolOwnerActionsFilterer creates a new log filterer instance of IUniswapV3PoolOwnerActions, bound to a specific deployed contract. +func NewIUniswapV3PoolOwnerActionsFilterer(address common.Address, filterer bind.ContractFilterer) (*IUniswapV3PoolOwnerActionsFilterer, error) { + contract, err := bindIUniswapV3PoolOwnerActions(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IUniswapV3PoolOwnerActionsFilterer{contract: contract}, nil +} + +// bindIUniswapV3PoolOwnerActions binds a generic wrapper to an already deployed contract. +func bindIUniswapV3PoolOwnerActions(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IUniswapV3PoolOwnerActionsMetaData.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 (_IUniswapV3PoolOwnerActions *IUniswapV3PoolOwnerActionsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IUniswapV3PoolOwnerActions.Contract.IUniswapV3PoolOwnerActionsCaller.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 (_IUniswapV3PoolOwnerActions *IUniswapV3PoolOwnerActionsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IUniswapV3PoolOwnerActions.Contract.IUniswapV3PoolOwnerActionsTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IUniswapV3PoolOwnerActions *IUniswapV3PoolOwnerActionsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IUniswapV3PoolOwnerActions.Contract.IUniswapV3PoolOwnerActionsTransactor.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 (_IUniswapV3PoolOwnerActions *IUniswapV3PoolOwnerActionsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IUniswapV3PoolOwnerActions.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 (_IUniswapV3PoolOwnerActions *IUniswapV3PoolOwnerActionsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IUniswapV3PoolOwnerActions.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IUniswapV3PoolOwnerActions *IUniswapV3PoolOwnerActionsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IUniswapV3PoolOwnerActions.Contract.contract.Transact(opts, method, params...) +} + +// CollectProtocol is a paid mutator transaction binding the contract method 0x85b66729. +// +// Solidity: function collectProtocol(address recipient, uint128 amount0Requested, uint128 amount1Requested) returns(uint128 amount0, uint128 amount1) +func (_IUniswapV3PoolOwnerActions *IUniswapV3PoolOwnerActionsTransactor) CollectProtocol(opts *bind.TransactOpts, recipient common.Address, amount0Requested *big.Int, amount1Requested *big.Int) (*types.Transaction, error) { + return _IUniswapV3PoolOwnerActions.contract.Transact(opts, "collectProtocol", recipient, amount0Requested, amount1Requested) +} + +// CollectProtocol is a paid mutator transaction binding the contract method 0x85b66729. +// +// Solidity: function collectProtocol(address recipient, uint128 amount0Requested, uint128 amount1Requested) returns(uint128 amount0, uint128 amount1) +func (_IUniswapV3PoolOwnerActions *IUniswapV3PoolOwnerActionsSession) CollectProtocol(recipient common.Address, amount0Requested *big.Int, amount1Requested *big.Int) (*types.Transaction, error) { + return _IUniswapV3PoolOwnerActions.Contract.CollectProtocol(&_IUniswapV3PoolOwnerActions.TransactOpts, recipient, amount0Requested, amount1Requested) +} + +// CollectProtocol is a paid mutator transaction binding the contract method 0x85b66729. +// +// Solidity: function collectProtocol(address recipient, uint128 amount0Requested, uint128 amount1Requested) returns(uint128 amount0, uint128 amount1) +func (_IUniswapV3PoolOwnerActions *IUniswapV3PoolOwnerActionsTransactorSession) CollectProtocol(recipient common.Address, amount0Requested *big.Int, amount1Requested *big.Int) (*types.Transaction, error) { + return _IUniswapV3PoolOwnerActions.Contract.CollectProtocol(&_IUniswapV3PoolOwnerActions.TransactOpts, recipient, amount0Requested, amount1Requested) +} + +// SetFeeProtocol is a paid mutator transaction binding the contract method 0x8206a4d1. +// +// Solidity: function setFeeProtocol(uint8 feeProtocol0, uint8 feeProtocol1) returns() +func (_IUniswapV3PoolOwnerActions *IUniswapV3PoolOwnerActionsTransactor) SetFeeProtocol(opts *bind.TransactOpts, feeProtocol0 uint8, feeProtocol1 uint8) (*types.Transaction, error) { + return _IUniswapV3PoolOwnerActions.contract.Transact(opts, "setFeeProtocol", feeProtocol0, feeProtocol1) +} + +// SetFeeProtocol is a paid mutator transaction binding the contract method 0x8206a4d1. +// +// Solidity: function setFeeProtocol(uint8 feeProtocol0, uint8 feeProtocol1) returns() +func (_IUniswapV3PoolOwnerActions *IUniswapV3PoolOwnerActionsSession) SetFeeProtocol(feeProtocol0 uint8, feeProtocol1 uint8) (*types.Transaction, error) { + return _IUniswapV3PoolOwnerActions.Contract.SetFeeProtocol(&_IUniswapV3PoolOwnerActions.TransactOpts, feeProtocol0, feeProtocol1) +} + +// SetFeeProtocol is a paid mutator transaction binding the contract method 0x8206a4d1. +// +// Solidity: function setFeeProtocol(uint8 feeProtocol0, uint8 feeProtocol1) returns() +func (_IUniswapV3PoolOwnerActions *IUniswapV3PoolOwnerActionsTransactorSession) SetFeeProtocol(feeProtocol0 uint8, feeProtocol1 uint8) (*types.Transaction, error) { + return _IUniswapV3PoolOwnerActions.Contract.SetFeeProtocol(&_IUniswapV3PoolOwnerActions.TransactOpts, feeProtocol0, feeProtocol1) +} diff --git a/pkg/uniswap/v3-core/contracts/interfaces/pool/iuniswapv3poolstate.sol/iuniswapv3poolstate.go b/pkg/uniswap/v3-core/contracts/interfaces/pool/iuniswapv3poolstate.sol/iuniswapv3poolstate.go new file mode 100644 index 00000000..11fc3c9e --- /dev/null +++ b/pkg/uniswap/v3-core/contracts/interfaces/pool/iuniswapv3poolstate.sol/iuniswapv3poolstate.go @@ -0,0 +1,610 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package iuniswapv3poolstate + +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 +) + +// IUniswapV3PoolStateMetaData contains all meta data concerning the IUniswapV3PoolState contract. +var IUniswapV3PoolStateMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"feeGrowthGlobal0X128\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeGrowthGlobal1X128\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"liquidity\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"observations\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"blockTimestamp\",\"type\":\"uint32\"},{\"internalType\":\"int56\",\"name\":\"tickCumulative\",\"type\":\"int56\"},{\"internalType\":\"uint160\",\"name\":\"secondsPerLiquidityCumulativeX128\",\"type\":\"uint160\"},{\"internalType\":\"bool\",\"name\":\"initialized\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"}],\"name\":\"positions\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"_liquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside0LastX128\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside1LastX128\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"tokensOwed0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"tokensOwed1\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolFees\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"token0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"token1\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slot0\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"},{\"internalType\":\"uint16\",\"name\":\"observationIndex\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"observationCardinality\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"observationCardinalityNext\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"feeProtocol\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"unlocked\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int16\",\"name\":\"wordPosition\",\"type\":\"int16\"}],\"name\":\"tickBitmap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"ticks\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"liquidityGross\",\"type\":\"uint128\"},{\"internalType\":\"int128\",\"name\":\"liquidityNet\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthOutside0X128\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthOutside1X128\",\"type\":\"uint256\"},{\"internalType\":\"int56\",\"name\":\"tickCumulativeOutside\",\"type\":\"int56\"},{\"internalType\":\"uint160\",\"name\":\"secondsPerLiquidityOutsideX128\",\"type\":\"uint160\"},{\"internalType\":\"uint32\",\"name\":\"secondsOutside\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"initialized\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", +} + +// IUniswapV3PoolStateABI is the input ABI used to generate the binding from. +// Deprecated: Use IUniswapV3PoolStateMetaData.ABI instead. +var IUniswapV3PoolStateABI = IUniswapV3PoolStateMetaData.ABI + +// IUniswapV3PoolState is an auto generated Go binding around an Ethereum contract. +type IUniswapV3PoolState struct { + IUniswapV3PoolStateCaller // Read-only binding to the contract + IUniswapV3PoolStateTransactor // Write-only binding to the contract + IUniswapV3PoolStateFilterer // Log filterer for contract events +} + +// IUniswapV3PoolStateCaller is an auto generated read-only Go binding around an Ethereum contract. +type IUniswapV3PoolStateCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV3PoolStateTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IUniswapV3PoolStateTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV3PoolStateFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IUniswapV3PoolStateFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV3PoolStateSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IUniswapV3PoolStateSession struct { + Contract *IUniswapV3PoolState // 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 +} + +// IUniswapV3PoolStateCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IUniswapV3PoolStateCallerSession struct { + Contract *IUniswapV3PoolStateCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IUniswapV3PoolStateTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IUniswapV3PoolStateTransactorSession struct { + Contract *IUniswapV3PoolStateTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IUniswapV3PoolStateRaw is an auto generated low-level Go binding around an Ethereum contract. +type IUniswapV3PoolStateRaw struct { + Contract *IUniswapV3PoolState // Generic contract binding to access the raw methods on +} + +// IUniswapV3PoolStateCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IUniswapV3PoolStateCallerRaw struct { + Contract *IUniswapV3PoolStateCaller // Generic read-only contract binding to access the raw methods on +} + +// IUniswapV3PoolStateTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IUniswapV3PoolStateTransactorRaw struct { + Contract *IUniswapV3PoolStateTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIUniswapV3PoolState creates a new instance of IUniswapV3PoolState, bound to a specific deployed contract. +func NewIUniswapV3PoolState(address common.Address, backend bind.ContractBackend) (*IUniswapV3PoolState, error) { + contract, err := bindIUniswapV3PoolState(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IUniswapV3PoolState{IUniswapV3PoolStateCaller: IUniswapV3PoolStateCaller{contract: contract}, IUniswapV3PoolStateTransactor: IUniswapV3PoolStateTransactor{contract: contract}, IUniswapV3PoolStateFilterer: IUniswapV3PoolStateFilterer{contract: contract}}, nil +} + +// NewIUniswapV3PoolStateCaller creates a new read-only instance of IUniswapV3PoolState, bound to a specific deployed contract. +func NewIUniswapV3PoolStateCaller(address common.Address, caller bind.ContractCaller) (*IUniswapV3PoolStateCaller, error) { + contract, err := bindIUniswapV3PoolState(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IUniswapV3PoolStateCaller{contract: contract}, nil +} + +// NewIUniswapV3PoolStateTransactor creates a new write-only instance of IUniswapV3PoolState, bound to a specific deployed contract. +func NewIUniswapV3PoolStateTransactor(address common.Address, transactor bind.ContractTransactor) (*IUniswapV3PoolStateTransactor, error) { + contract, err := bindIUniswapV3PoolState(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IUniswapV3PoolStateTransactor{contract: contract}, nil +} + +// NewIUniswapV3PoolStateFilterer creates a new log filterer instance of IUniswapV3PoolState, bound to a specific deployed contract. +func NewIUniswapV3PoolStateFilterer(address common.Address, filterer bind.ContractFilterer) (*IUniswapV3PoolStateFilterer, error) { + contract, err := bindIUniswapV3PoolState(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IUniswapV3PoolStateFilterer{contract: contract}, nil +} + +// bindIUniswapV3PoolState binds a generic wrapper to an already deployed contract. +func bindIUniswapV3PoolState(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IUniswapV3PoolStateMetaData.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 (_IUniswapV3PoolState *IUniswapV3PoolStateRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IUniswapV3PoolState.Contract.IUniswapV3PoolStateCaller.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 (_IUniswapV3PoolState *IUniswapV3PoolStateRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IUniswapV3PoolState.Contract.IUniswapV3PoolStateTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IUniswapV3PoolState *IUniswapV3PoolStateRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IUniswapV3PoolState.Contract.IUniswapV3PoolStateTransactor.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 (_IUniswapV3PoolState *IUniswapV3PoolStateCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IUniswapV3PoolState.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 (_IUniswapV3PoolState *IUniswapV3PoolStateTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IUniswapV3PoolState.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IUniswapV3PoolState *IUniswapV3PoolStateTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IUniswapV3PoolState.Contract.contract.Transact(opts, method, params...) +} + +// FeeGrowthGlobal0X128 is a free data retrieval call binding the contract method 0xf3058399. +// +// Solidity: function feeGrowthGlobal0X128() view returns(uint256) +func (_IUniswapV3PoolState *IUniswapV3PoolStateCaller) FeeGrowthGlobal0X128(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IUniswapV3PoolState.contract.Call(opts, &out, "feeGrowthGlobal0X128") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// FeeGrowthGlobal0X128 is a free data retrieval call binding the contract method 0xf3058399. +// +// Solidity: function feeGrowthGlobal0X128() view returns(uint256) +func (_IUniswapV3PoolState *IUniswapV3PoolStateSession) FeeGrowthGlobal0X128() (*big.Int, error) { + return _IUniswapV3PoolState.Contract.FeeGrowthGlobal0X128(&_IUniswapV3PoolState.CallOpts) +} + +// FeeGrowthGlobal0X128 is a free data retrieval call binding the contract method 0xf3058399. +// +// Solidity: function feeGrowthGlobal0X128() view returns(uint256) +func (_IUniswapV3PoolState *IUniswapV3PoolStateCallerSession) FeeGrowthGlobal0X128() (*big.Int, error) { + return _IUniswapV3PoolState.Contract.FeeGrowthGlobal0X128(&_IUniswapV3PoolState.CallOpts) +} + +// FeeGrowthGlobal1X128 is a free data retrieval call binding the contract method 0x46141319. +// +// Solidity: function feeGrowthGlobal1X128() view returns(uint256) +func (_IUniswapV3PoolState *IUniswapV3PoolStateCaller) FeeGrowthGlobal1X128(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IUniswapV3PoolState.contract.Call(opts, &out, "feeGrowthGlobal1X128") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// FeeGrowthGlobal1X128 is a free data retrieval call binding the contract method 0x46141319. +// +// Solidity: function feeGrowthGlobal1X128() view returns(uint256) +func (_IUniswapV3PoolState *IUniswapV3PoolStateSession) FeeGrowthGlobal1X128() (*big.Int, error) { + return _IUniswapV3PoolState.Contract.FeeGrowthGlobal1X128(&_IUniswapV3PoolState.CallOpts) +} + +// FeeGrowthGlobal1X128 is a free data retrieval call binding the contract method 0x46141319. +// +// Solidity: function feeGrowthGlobal1X128() view returns(uint256) +func (_IUniswapV3PoolState *IUniswapV3PoolStateCallerSession) FeeGrowthGlobal1X128() (*big.Int, error) { + return _IUniswapV3PoolState.Contract.FeeGrowthGlobal1X128(&_IUniswapV3PoolState.CallOpts) +} + +// Liquidity is a free data retrieval call binding the contract method 0x1a686502. +// +// Solidity: function liquidity() view returns(uint128) +func (_IUniswapV3PoolState *IUniswapV3PoolStateCaller) Liquidity(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IUniswapV3PoolState.contract.Call(opts, &out, "liquidity") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Liquidity is a free data retrieval call binding the contract method 0x1a686502. +// +// Solidity: function liquidity() view returns(uint128) +func (_IUniswapV3PoolState *IUniswapV3PoolStateSession) Liquidity() (*big.Int, error) { + return _IUniswapV3PoolState.Contract.Liquidity(&_IUniswapV3PoolState.CallOpts) +} + +// Liquidity is a free data retrieval call binding the contract method 0x1a686502. +// +// Solidity: function liquidity() view returns(uint128) +func (_IUniswapV3PoolState *IUniswapV3PoolStateCallerSession) Liquidity() (*big.Int, error) { + return _IUniswapV3PoolState.Contract.Liquidity(&_IUniswapV3PoolState.CallOpts) +} + +// Observations is a free data retrieval call binding the contract method 0x252c09d7. +// +// Solidity: function observations(uint256 index) view returns(uint32 blockTimestamp, int56 tickCumulative, uint160 secondsPerLiquidityCumulativeX128, bool initialized) +func (_IUniswapV3PoolState *IUniswapV3PoolStateCaller) Observations(opts *bind.CallOpts, index *big.Int) (struct { + BlockTimestamp uint32 + TickCumulative *big.Int + SecondsPerLiquidityCumulativeX128 *big.Int + Initialized bool +}, error) { + var out []interface{} + err := _IUniswapV3PoolState.contract.Call(opts, &out, "observations", index) + + outstruct := new(struct { + BlockTimestamp uint32 + TickCumulative *big.Int + SecondsPerLiquidityCumulativeX128 *big.Int + Initialized bool + }) + if err != nil { + return *outstruct, err + } + + outstruct.BlockTimestamp = *abi.ConvertType(out[0], new(uint32)).(*uint32) + outstruct.TickCumulative = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + outstruct.SecondsPerLiquidityCumulativeX128 = *abi.ConvertType(out[2], new(*big.Int)).(**big.Int) + outstruct.Initialized = *abi.ConvertType(out[3], new(bool)).(*bool) + + return *outstruct, err + +} + +// Observations is a free data retrieval call binding the contract method 0x252c09d7. +// +// Solidity: function observations(uint256 index) view returns(uint32 blockTimestamp, int56 tickCumulative, uint160 secondsPerLiquidityCumulativeX128, bool initialized) +func (_IUniswapV3PoolState *IUniswapV3PoolStateSession) Observations(index *big.Int) (struct { + BlockTimestamp uint32 + TickCumulative *big.Int + SecondsPerLiquidityCumulativeX128 *big.Int + Initialized bool +}, error) { + return _IUniswapV3PoolState.Contract.Observations(&_IUniswapV3PoolState.CallOpts, index) +} + +// Observations is a free data retrieval call binding the contract method 0x252c09d7. +// +// Solidity: function observations(uint256 index) view returns(uint32 blockTimestamp, int56 tickCumulative, uint160 secondsPerLiquidityCumulativeX128, bool initialized) +func (_IUniswapV3PoolState *IUniswapV3PoolStateCallerSession) Observations(index *big.Int) (struct { + BlockTimestamp uint32 + TickCumulative *big.Int + SecondsPerLiquidityCumulativeX128 *big.Int + Initialized bool +}, error) { + return _IUniswapV3PoolState.Contract.Observations(&_IUniswapV3PoolState.CallOpts, index) +} + +// Positions is a free data retrieval call binding the contract method 0x514ea4bf. +// +// Solidity: function positions(bytes32 key) view returns(uint128 _liquidity, uint256 feeGrowthInside0LastX128, uint256 feeGrowthInside1LastX128, uint128 tokensOwed0, uint128 tokensOwed1) +func (_IUniswapV3PoolState *IUniswapV3PoolStateCaller) Positions(opts *bind.CallOpts, key [32]byte) (struct { + Liquidity *big.Int + FeeGrowthInside0LastX128 *big.Int + FeeGrowthInside1LastX128 *big.Int + TokensOwed0 *big.Int + TokensOwed1 *big.Int +}, error) { + var out []interface{} + err := _IUniswapV3PoolState.contract.Call(opts, &out, "positions", key) + + outstruct := new(struct { + Liquidity *big.Int + FeeGrowthInside0LastX128 *big.Int + FeeGrowthInside1LastX128 *big.Int + TokensOwed0 *big.Int + TokensOwed1 *big.Int + }) + if err != nil { + return *outstruct, err + } + + outstruct.Liquidity = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + outstruct.FeeGrowthInside0LastX128 = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + outstruct.FeeGrowthInside1LastX128 = *abi.ConvertType(out[2], new(*big.Int)).(**big.Int) + outstruct.TokensOwed0 = *abi.ConvertType(out[3], new(*big.Int)).(**big.Int) + outstruct.TokensOwed1 = *abi.ConvertType(out[4], new(*big.Int)).(**big.Int) + + return *outstruct, err + +} + +// Positions is a free data retrieval call binding the contract method 0x514ea4bf. +// +// Solidity: function positions(bytes32 key) view returns(uint128 _liquidity, uint256 feeGrowthInside0LastX128, uint256 feeGrowthInside1LastX128, uint128 tokensOwed0, uint128 tokensOwed1) +func (_IUniswapV3PoolState *IUniswapV3PoolStateSession) Positions(key [32]byte) (struct { + Liquidity *big.Int + FeeGrowthInside0LastX128 *big.Int + FeeGrowthInside1LastX128 *big.Int + TokensOwed0 *big.Int + TokensOwed1 *big.Int +}, error) { + return _IUniswapV3PoolState.Contract.Positions(&_IUniswapV3PoolState.CallOpts, key) +} + +// Positions is a free data retrieval call binding the contract method 0x514ea4bf. +// +// Solidity: function positions(bytes32 key) view returns(uint128 _liquidity, uint256 feeGrowthInside0LastX128, uint256 feeGrowthInside1LastX128, uint128 tokensOwed0, uint128 tokensOwed1) +func (_IUniswapV3PoolState *IUniswapV3PoolStateCallerSession) Positions(key [32]byte) (struct { + Liquidity *big.Int + FeeGrowthInside0LastX128 *big.Int + FeeGrowthInside1LastX128 *big.Int + TokensOwed0 *big.Int + TokensOwed1 *big.Int +}, error) { + return _IUniswapV3PoolState.Contract.Positions(&_IUniswapV3PoolState.CallOpts, key) +} + +// ProtocolFees is a free data retrieval call binding the contract method 0x1ad8b03b. +// +// Solidity: function protocolFees() view returns(uint128 token0, uint128 token1) +func (_IUniswapV3PoolState *IUniswapV3PoolStateCaller) ProtocolFees(opts *bind.CallOpts) (struct { + Token0 *big.Int + Token1 *big.Int +}, error) { + var out []interface{} + err := _IUniswapV3PoolState.contract.Call(opts, &out, "protocolFees") + + outstruct := new(struct { + Token0 *big.Int + Token1 *big.Int + }) + if err != nil { + return *outstruct, err + } + + outstruct.Token0 = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + outstruct.Token1 = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + + return *outstruct, err + +} + +// ProtocolFees is a free data retrieval call binding the contract method 0x1ad8b03b. +// +// Solidity: function protocolFees() view returns(uint128 token0, uint128 token1) +func (_IUniswapV3PoolState *IUniswapV3PoolStateSession) ProtocolFees() (struct { + Token0 *big.Int + Token1 *big.Int +}, error) { + return _IUniswapV3PoolState.Contract.ProtocolFees(&_IUniswapV3PoolState.CallOpts) +} + +// ProtocolFees is a free data retrieval call binding the contract method 0x1ad8b03b. +// +// Solidity: function protocolFees() view returns(uint128 token0, uint128 token1) +func (_IUniswapV3PoolState *IUniswapV3PoolStateCallerSession) ProtocolFees() (struct { + Token0 *big.Int + Token1 *big.Int +}, error) { + return _IUniswapV3PoolState.Contract.ProtocolFees(&_IUniswapV3PoolState.CallOpts) +} + +// Slot0 is a free data retrieval call binding the contract method 0x3850c7bd. +// +// Solidity: function slot0() view returns(uint160 sqrtPriceX96, int24 tick, uint16 observationIndex, uint16 observationCardinality, uint16 observationCardinalityNext, uint8 feeProtocol, bool unlocked) +func (_IUniswapV3PoolState *IUniswapV3PoolStateCaller) Slot0(opts *bind.CallOpts) (struct { + SqrtPriceX96 *big.Int + Tick *big.Int + ObservationIndex uint16 + ObservationCardinality uint16 + ObservationCardinalityNext uint16 + FeeProtocol uint8 + Unlocked bool +}, error) { + var out []interface{} + err := _IUniswapV3PoolState.contract.Call(opts, &out, "slot0") + + outstruct := new(struct { + SqrtPriceX96 *big.Int + Tick *big.Int + ObservationIndex uint16 + ObservationCardinality uint16 + ObservationCardinalityNext uint16 + FeeProtocol uint8 + Unlocked bool + }) + if err != nil { + return *outstruct, err + } + + outstruct.SqrtPriceX96 = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + outstruct.Tick = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + outstruct.ObservationIndex = *abi.ConvertType(out[2], new(uint16)).(*uint16) + outstruct.ObservationCardinality = *abi.ConvertType(out[3], new(uint16)).(*uint16) + outstruct.ObservationCardinalityNext = *abi.ConvertType(out[4], new(uint16)).(*uint16) + outstruct.FeeProtocol = *abi.ConvertType(out[5], new(uint8)).(*uint8) + outstruct.Unlocked = *abi.ConvertType(out[6], new(bool)).(*bool) + + return *outstruct, err + +} + +// Slot0 is a free data retrieval call binding the contract method 0x3850c7bd. +// +// Solidity: function slot0() view returns(uint160 sqrtPriceX96, int24 tick, uint16 observationIndex, uint16 observationCardinality, uint16 observationCardinalityNext, uint8 feeProtocol, bool unlocked) +func (_IUniswapV3PoolState *IUniswapV3PoolStateSession) Slot0() (struct { + SqrtPriceX96 *big.Int + Tick *big.Int + ObservationIndex uint16 + ObservationCardinality uint16 + ObservationCardinalityNext uint16 + FeeProtocol uint8 + Unlocked bool +}, error) { + return _IUniswapV3PoolState.Contract.Slot0(&_IUniswapV3PoolState.CallOpts) +} + +// Slot0 is a free data retrieval call binding the contract method 0x3850c7bd. +// +// Solidity: function slot0() view returns(uint160 sqrtPriceX96, int24 tick, uint16 observationIndex, uint16 observationCardinality, uint16 observationCardinalityNext, uint8 feeProtocol, bool unlocked) +func (_IUniswapV3PoolState *IUniswapV3PoolStateCallerSession) Slot0() (struct { + SqrtPriceX96 *big.Int + Tick *big.Int + ObservationIndex uint16 + ObservationCardinality uint16 + ObservationCardinalityNext uint16 + FeeProtocol uint8 + Unlocked bool +}, error) { + return _IUniswapV3PoolState.Contract.Slot0(&_IUniswapV3PoolState.CallOpts) +} + +// TickBitmap is a free data retrieval call binding the contract method 0x5339c296. +// +// Solidity: function tickBitmap(int16 wordPosition) view returns(uint256) +func (_IUniswapV3PoolState *IUniswapV3PoolStateCaller) TickBitmap(opts *bind.CallOpts, wordPosition int16) (*big.Int, error) { + var out []interface{} + err := _IUniswapV3PoolState.contract.Call(opts, &out, "tickBitmap", wordPosition) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TickBitmap is a free data retrieval call binding the contract method 0x5339c296. +// +// Solidity: function tickBitmap(int16 wordPosition) view returns(uint256) +func (_IUniswapV3PoolState *IUniswapV3PoolStateSession) TickBitmap(wordPosition int16) (*big.Int, error) { + return _IUniswapV3PoolState.Contract.TickBitmap(&_IUniswapV3PoolState.CallOpts, wordPosition) +} + +// TickBitmap is a free data retrieval call binding the contract method 0x5339c296. +// +// Solidity: function tickBitmap(int16 wordPosition) view returns(uint256) +func (_IUniswapV3PoolState *IUniswapV3PoolStateCallerSession) TickBitmap(wordPosition int16) (*big.Int, error) { + return _IUniswapV3PoolState.Contract.TickBitmap(&_IUniswapV3PoolState.CallOpts, wordPosition) +} + +// Ticks is a free data retrieval call binding the contract method 0xf30dba93. +// +// Solidity: function ticks(int24 tick) view returns(uint128 liquidityGross, int128 liquidityNet, uint256 feeGrowthOutside0X128, uint256 feeGrowthOutside1X128, int56 tickCumulativeOutside, uint160 secondsPerLiquidityOutsideX128, uint32 secondsOutside, bool initialized) +func (_IUniswapV3PoolState *IUniswapV3PoolStateCaller) Ticks(opts *bind.CallOpts, tick *big.Int) (struct { + LiquidityGross *big.Int + LiquidityNet *big.Int + FeeGrowthOutside0X128 *big.Int + FeeGrowthOutside1X128 *big.Int + TickCumulativeOutside *big.Int + SecondsPerLiquidityOutsideX128 *big.Int + SecondsOutside uint32 + Initialized bool +}, error) { + var out []interface{} + err := _IUniswapV3PoolState.contract.Call(opts, &out, "ticks", tick) + + outstruct := new(struct { + LiquidityGross *big.Int + LiquidityNet *big.Int + FeeGrowthOutside0X128 *big.Int + FeeGrowthOutside1X128 *big.Int + TickCumulativeOutside *big.Int + SecondsPerLiquidityOutsideX128 *big.Int + SecondsOutside uint32 + Initialized bool + }) + if err != nil { + return *outstruct, err + } + + outstruct.LiquidityGross = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + outstruct.LiquidityNet = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + outstruct.FeeGrowthOutside0X128 = *abi.ConvertType(out[2], new(*big.Int)).(**big.Int) + outstruct.FeeGrowthOutside1X128 = *abi.ConvertType(out[3], new(*big.Int)).(**big.Int) + outstruct.TickCumulativeOutside = *abi.ConvertType(out[4], new(*big.Int)).(**big.Int) + outstruct.SecondsPerLiquidityOutsideX128 = *abi.ConvertType(out[5], new(*big.Int)).(**big.Int) + outstruct.SecondsOutside = *abi.ConvertType(out[6], new(uint32)).(*uint32) + outstruct.Initialized = *abi.ConvertType(out[7], new(bool)).(*bool) + + return *outstruct, err + +} + +// Ticks is a free data retrieval call binding the contract method 0xf30dba93. +// +// Solidity: function ticks(int24 tick) view returns(uint128 liquidityGross, int128 liquidityNet, uint256 feeGrowthOutside0X128, uint256 feeGrowthOutside1X128, int56 tickCumulativeOutside, uint160 secondsPerLiquidityOutsideX128, uint32 secondsOutside, bool initialized) +func (_IUniswapV3PoolState *IUniswapV3PoolStateSession) Ticks(tick *big.Int) (struct { + LiquidityGross *big.Int + LiquidityNet *big.Int + FeeGrowthOutside0X128 *big.Int + FeeGrowthOutside1X128 *big.Int + TickCumulativeOutside *big.Int + SecondsPerLiquidityOutsideX128 *big.Int + SecondsOutside uint32 + Initialized bool +}, error) { + return _IUniswapV3PoolState.Contract.Ticks(&_IUniswapV3PoolState.CallOpts, tick) +} + +// Ticks is a free data retrieval call binding the contract method 0xf30dba93. +// +// Solidity: function ticks(int24 tick) view returns(uint128 liquidityGross, int128 liquidityNet, uint256 feeGrowthOutside0X128, uint256 feeGrowthOutside1X128, int56 tickCumulativeOutside, uint160 secondsPerLiquidityOutsideX128, uint32 secondsOutside, bool initialized) +func (_IUniswapV3PoolState *IUniswapV3PoolStateCallerSession) Ticks(tick *big.Int) (struct { + LiquidityGross *big.Int + LiquidityNet *big.Int + FeeGrowthOutside0X128 *big.Int + FeeGrowthOutside1X128 *big.Int + TickCumulativeOutside *big.Int + SecondsPerLiquidityOutsideX128 *big.Int + SecondsOutside uint32 + Initialized bool +}, error) { + return _IUniswapV3PoolState.Contract.Ticks(&_IUniswapV3PoolState.CallOpts, tick) +} diff --git a/readme.md b/readme.md index 0b42a56c..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 @@ -73,7 +73,7 @@ to the `artifacts` directory. To generate Go bindings for the Solidity contracts, run the following command: ``` -yarn generate:go +yarn generate ``` This will use `abigen` to generate Go bindings for the contracts and output the diff --git a/scripts/deployments/core/deploy-immutable-create2-factory.ts b/scripts/deployments/core/deploy-immutable-create2-factory.ts index 81030a2c..6d3babf6 100644 --- a/scripts/deployments/core/deploy-immutable-create2-factory.ts +++ b/scripts/deployments/core/deploy-immutable-create2-factory.ts @@ -1,11 +1,10 @@ -import { isNetworkName } from "@zetachain/addresses"; -import { saveAddress } from "@zetachain/addresses-tools"; import { network } from "hardhat"; +import { isProtocolNetworkName } from "lib"; import { deployImmutableCreate2Factory as deploy } from "../../../lib/contracts.helpers"; export async function deployImmutableCreate2Factory() { - if (!isNetworkName(network.name)) { + if (!isProtocolNetworkName(network.name)) { throw new Error(`network.name: ${network.name} isn't supported.`); } @@ -13,7 +12,6 @@ export async function deployImmutableCreate2Factory() { const contract = await deploy(); - // saveAddress("immutableCreate2Factory", contract.address); console.log("Deployed ImmutableCreate2Factory. Address:", contract.address); } diff --git a/scripts/deployments/core/deploy-zeta-connector.ts b/scripts/deployments/core/deploy-zeta-connector.ts index 6fa56ae4..8d27b507 100644 --- a/scripts/deployments/core/deploy-zeta-connector.ts +++ b/scripts/deployments/core/deploy-zeta-connector.ts @@ -1,30 +1,31 @@ -import { isNetworkName } from "@zetachain/addresses"; -import { saveAddress } from "@zetachain/addresses-tools"; import { Contract } from "ethers"; import { network } from "hardhat"; +import { getAddress, isProtocolNetworkName } from "lib/address.tools"; -import { getAddress } from "../../../lib/address.helpers"; import { deployZetaConnectorEth, deployZetaConnectorNonEth, isEthNetworkName } from "../../../lib/contracts.helpers"; export async function deployZetaConnector() { - if (!isNetworkName(network.name)) { + if (!isProtocolNetworkName(network.name)) { throw new Error(`network.name: ${network.name} isn't supported.`); } + const zetaTokenAddress = getAddress("zetaToken", network.name); + const tssAddress = getAddress("tss", network.name); + const tssUpdaterAddress = getAddress("tssUpdater", network.name); + let contract: Contract; console.log(`Deploying ZetaConnector to ${network.name}`); if (isEthNetworkName(network.name)) { contract = await deployZetaConnectorEth({ - args: [getAddress("zetaToken"), getAddress("tss"), getAddress("tssUpdater"), getAddress("tssUpdater")], + args: [zetaTokenAddress, tssAddress, tssUpdaterAddress, tssUpdaterAddress], }); } else { contract = await deployZetaConnectorNonEth({ - args: [getAddress("zetaToken"), getAddress("tss"), getAddress("tssUpdater"), getAddress("tssUpdater")], + args: [zetaTokenAddress, tssAddress, tssUpdaterAddress, tssUpdaterAddress], }); } - // saveAddress("connector", contract.address); console.log("Deployed ZetaConnector. Address:", contract.address); return contract.address; } diff --git a/scripts/deployments/core/deploy-zeta-token.ts b/scripts/deployments/core/deploy-zeta-token.ts index 5c6f60a1..fbb974c2 100644 --- a/scripts/deployments/core/deploy-zeta-token.ts +++ b/scripts/deployments/core/deploy-zeta-token.ts @@ -1,30 +1,35 @@ -import { isNetworkName } from "@zetachain/addresses"; -import { saveAddress } from "@zetachain/addresses-tools"; import { Contract } from "ethers"; -import { network } from "hardhat"; +import { ethers, network } from "hardhat"; +import { getAddress, isProtocolNetworkName } from "lib"; -import { getAddress } from "../../../lib/address.helpers"; import { ZETA_INITIAL_SUPPLY } from "../../../lib/contracts.constants"; import { deployZetaEth, deployZetaNonEth, isEthNetworkName } from "../../../lib/contracts.helpers"; export async function deployZetaToken() { - if (!isNetworkName(network.name)) { + if (!isProtocolNetworkName(network.name)) { throw new Error(`network.name: ${network.name} isn't supported.`); } + const accounts = await ethers.getSigners(); + const [signer] = accounts; + + const DEPLOYER_ADDRESS = process.env.DEPLOYER_ADDRESS || signer.address; + + const tssAddress = getAddress("tss", network.name); + const tssUpdaterAddress = getAddress("tssUpdater", network.name); + let contract: Contract; if (isEthNetworkName(network.name)) { contract = await deployZetaEth({ - args: [ZETA_INITIAL_SUPPLY], + args: [DEPLOYER_ADDRESS, ZETA_INITIAL_SUPPLY], }); } else { contract = await deployZetaNonEth({ - args: [getAddress("tss"), getAddress("tssUpdater")], + args: [tssAddress, tssUpdaterAddress], }); } - // saveAddress("zetaToken", contract.address); console.log("Deployed Zeta to:", contract.address); return contract.address; } diff --git a/scripts/deployments/core/deploy.ts b/scripts/deployments/core/deploy.ts index bafe1ebd..c144016d 100644 --- a/scripts/deployments/core/deploy.ts +++ b/scripts/deployments/core/deploy.ts @@ -1,17 +1,15 @@ -import { isLocalNetworkName } from "@zetachain/addresses"; -import { saveAddress } from "@zetachain/addresses-tools"; -import { ethers, network } from "hardhat"; +import { network } from "hardhat"; +import { isProtocolNetworkName } from "../../../lib/address.tools"; 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"; +const networkName = network.name; + async function main() { - if (isLocalNetworkName(network.name)) { - const [owner] = await ethers.getSigners(); - // saveAddress("tssUpdater", owner.address); - } + if (!isProtocolNetworkName(networkName)) throw new Error("Invalid network name"); const zetaTokenAddress = await deployZetaToken(); const connectorAddress = await deployZetaConnector(); @@ -25,9 +23,7 @@ async function main() { * @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 setZetaAddresses(connectorAddress, zetaTokenAddress); } main() diff --git a/scripts/deployments/core/deterministic-deploy-erc20-custody.ts b/scripts/deployments/core/deterministic-deploy-erc20-custody.ts index 6abc70ba..75ddef57 100644 --- a/scripts/deployments/core/deterministic-deploy-erc20-custody.ts +++ b/scripts/deployments/core/deterministic-deploy-erc20-custody.ts @@ -1,9 +1,7 @@ -import { isNetworkName } from "@zetachain/addresses"; -import { saveAddress } from "@zetachain/addresses-tools"; import { BigNumber } from "ethers"; import { ethers, network } from "hardhat"; +import { getAddress, isProtocolNetworkName } from "lib"; -import { getAddress } from "../../../lib/address.helpers"; import { ERC20_CUSTODY_SALT_NUMBER_ETH, ERC20_CUSTODY_SALT_NUMBER_NON_ETH, @@ -18,7 +16,7 @@ import { import { ERC20Custody__factory } from "../../../typechain-types"; export const deterministicDeployERC20Custody = async () => { - if (!isNetworkName(network.name)) { + if (!isProtocolNetworkName(network.name)) { throw new Error(`network.name: ${network.name} isn't supported.`); } @@ -27,51 +25,35 @@ export const deterministicDeployERC20Custody = async () => { const DEPLOYER_ADDRESS = process.env.DEPLOYER_ADDRESS || signer.address; - const saltNumber = isEthNetworkName(network.name) - ? ERC20_CUSTODY_SALT_NUMBER_ETH - : ERC20_CUSTODY_SALT_NUMBER_NON_ETH; - const saltStr = BigNumber.from(saltNumber).toHexString(); + const zetaTokenAddress = getAddress("zetaToken", network.name); + const tssAddress = getAddress("tss", network.name); + const tssUpdaterAddress = getAddress("tssUpdater", network.name); + const immutableCreate2FactoryAddress = getAddress("immutableCreate2Factory", network.name); - const zetaToken = getAddress("zetaToken"); - const tss = getAddress("tss"); - const tssUpdater = getAddress("tssUpdater"); + const saltNumber = isEthNetworkName(network.name) ? ERC20_CUSTODY_SALT_NUMBER_ETH : ERC20_CUSTODY_SALT_NUMBER_NON_ETH; + const saltStr = BigNumber.from(saltNumber).toHexString(); const zetaFee = ERC20_CUSTODY_ZETA_FEE; const zetaMaxFee = ERC20_CUSTODY_ZETA_MAX_FEE; - const immutableCreate2Factory = getAddress("immutableCreate2Factory"); - const salthex = saltToHex(saltStr, DEPLOYER_ADDRESS); console.log("SaltHex:", salthex); - const constructorTypes = [ - "address", - "address", - "uint256", - "uint256", - "address", - ]; - const constructorArgs = [ - tss, - tssUpdater, - zetaFee.toString(), - zetaMaxFee.toString(), - zetaToken, - ]; + const constructorTypes = ["address", "address", "uint256", "uint256", "address"]; + const constructorArgs = [tssAddress, tssUpdaterAddress, zetaFee.toString(), zetaMaxFee.toString(), zetaTokenAddress]; const contractBytecode = ERC20Custody__factory.bytecode; const { address } = await deployContractToAddress({ constructorArgs, constructorTypes, contractBytecode, - factoryAddress: immutableCreate2Factory, + factoryAddress: immutableCreate2FactoryAddress, salt: salthex, signer, }); console.log("Deployed ERC20 Custody. Address:", address); console.log("Constructor Args", constructorArgs); - // saveAddress("zetaToken", 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 cbb246a0..7918ef3b 100644 --- a/scripts/deployments/core/deterministic-deploy-zeta-connector.ts +++ b/scripts/deployments/core/deterministic-deploy-zeta-connector.ts @@ -1,9 +1,7 @@ -import { isNetworkName } from "@zetachain/addresses"; -import { saveAddress } from "@zetachain/addresses-tools"; import { BigNumber } from "ethers"; import { ethers, network } from "hardhat"; +import { getAddress, isProtocolNetworkName } from "lib"; -import { getAddress } from "../../../lib/address.helpers"; import { ZETA_CONNECTOR_SALT_NUMBER_ETH, ZETA_CONNECTOR_SALT_NUMBER_NON_ETH } from "../../../lib/contracts.constants"; import { isEthNetworkName } from "../../../lib/contracts.helpers"; import { @@ -13,7 +11,7 @@ import { import { ZetaConnectorEth__factory, ZetaConnectorNonEth__factory } from "../../../typechain-types"; export async function deterministicDeployZetaConnector() { - if (!isNetworkName(network.name)) { + if (!isProtocolNetworkName(network.name)) { throw new Error(`network.name: ${network.name} isn't supported.`); } @@ -22,19 +20,19 @@ export async function deterministicDeployZetaConnector() { const DEPLOYER_ADDRESS = process.env.DEPLOYER_ADDRESS || signer.address; + const zetaTokenAddress = getAddress("zetaToken", network.name); + const tssAddress = getAddress("tss", network.name); + 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 saltStr = BigNumber.from(saltNumber).toHexString(); - const zetaToken = getAddress("zetaToken"); - const tss = getAddress("tss"); - const tssUpdater = getAddress("tssUpdater"); - const immutableCreate2Factory = getAddress("immutableCreate2Factory"); - const salthex = saltToHex(saltStr, DEPLOYER_ADDRESS); const constructorTypes = ["address", "address", "address", "address"]; - const constructorArgs = [zetaToken, tss, tssUpdater, tssUpdater]; + const constructorArgs = [zetaTokenAddress, tssAddress, tssUpdaterAddress, tssUpdaterAddress]; let contractBytecode; if (isEthNetworkName(network.name)) { @@ -47,14 +45,13 @@ export async function deterministicDeployZetaConnector() { constructorArgs, constructorTypes, contractBytecode, - factoryAddress: immutableCreate2Factory, + factoryAddress: immutableCreate2FactoryAddress, salt: salthex, signer, }); console.log("Deployed ZetaConnector. Address:", address); console.log("Constructor Args", constructorArgs); - // saveAddress("connector", address); } if (!process.env.EXECUTE_PROGRAMMATICALLY) { diff --git a/scripts/deployments/core/deterministic-deploy-zeta-token.ts b/scripts/deployments/core/deterministic-deploy-zeta-token.ts index 64d6ff31..f55284af 100644 --- a/scripts/deployments/core/deterministic-deploy-zeta-token.ts +++ b/scripts/deployments/core/deterministic-deploy-zeta-token.ts @@ -1,9 +1,7 @@ -import { isNetworkName } from "@zetachain/addresses"; -import { saveAddress } from "@zetachain/addresses-tools"; import { BigNumber } from "ethers"; import { ethers, network } from "hardhat"; +import { getAddress, isProtocolNetworkName } from "lib"; -import { getAddress } from "../../../lib/address.helpers"; import { ZETA_INITIAL_SUPPLY, ZETA_TOKEN_SALT_NUMBER_ETH, @@ -14,13 +12,10 @@ import { deployContractToAddress, saltToHex, } from "../../../lib/ImmutableCreate2Factory/ImmutableCreate2Factory.helpers"; -import { - ZetaEth__factory, - ZetaNonEth__factory, -} from "../../../typechain-types"; +import { ZetaEth__factory, ZetaNonEth__factory } from "../../../typechain-types"; export async function deterministicDeployZetaToken() { - if (!isNetworkName(network.name)) { + if (!isProtocolNetworkName(network.name)) { throw new Error(`network.name: ${network.name} isn't supported.`); } @@ -29,14 +24,12 @@ export async function deterministicDeployZetaToken() { const DEPLOYER_ADDRESS = process.env.DEPLOYER_ADDRESS || signer.address; - const saltNumber = isEthNetworkName(network.name) - ? ZETA_TOKEN_SALT_NUMBER_ETH - : ZETA_TOKEN_SALT_NUMBER_NON_ETH; - const saltStr = BigNumber.from(saltNumber).toHexString(); + const tssAddress = getAddress("tss", network.name); + const tssUpdaterAddress = getAddress("tssUpdater", network.name); + const immutableCreate2FactoryAddress = getAddress("immutableCreate2Factory", network.name); - const tss = getAddress("tss"); - const tssUpdater = getAddress("tssUpdater"); - const immutableCreate2Factory = getAddress("immutableCreate2Factory"); + const saltNumber = isEthNetworkName(network.name) ? ZETA_TOKEN_SALT_NUMBER_ETH : ZETA_TOKEN_SALT_NUMBER_NON_ETH; + const saltStr = BigNumber.from(saltNumber).toHexString(); const salthex = saltToHex(saltStr, DEPLOYER_ADDRESS); console.log("SaltHex:", salthex); @@ -51,7 +44,7 @@ export async function deterministicDeployZetaToken() { contractBytecode = ZetaEth__factory.bytecode; } else { constructorTypes = ["address", "address"]; - constructorArgs = [tss, tssUpdater]; + constructorArgs = [tssAddress, tssUpdaterAddress]; contractBytecode = ZetaNonEth__factory.bytecode; } @@ -59,14 +52,13 @@ export async function deterministicDeployZetaToken() { constructorArgs, constructorTypes, contractBytecode, - factoryAddress: immutableCreate2Factory, + factoryAddress: immutableCreate2FactoryAddress, salt: salthex, signer, }); console.log("Deployed zetaToken. Address:", address); console.log("Constructor Args", constructorArgs); - // saveAddress("zetaToken", address); } if (!process.env.EXECUTE_PROGRAMMATICALLY) { 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-deploy-zeta-consumer-v2.ts b/scripts/deployments/tools/deterministic-deploy-zeta-consumer-v2.ts index 7e0be929..d10989a3 100644 --- a/scripts/deployments/tools/deterministic-deploy-zeta-consumer-v2.ts +++ b/scripts/deployments/tools/deterministic-deploy-zeta-consumer-v2.ts @@ -1,9 +1,7 @@ -import { isNetworkName } from "@zetachain/addresses"; -import { saveAddress } from "@zetachain/addresses-tools"; import { BigNumber } from "ethers"; import { ethers, network } from "hardhat"; +import { getAddress, getNonZetaAddress, isProtocolNetworkName } from "lib"; -import { getAddress } from "../../../lib/address.helpers"; import { ZETA_CONSUMER_SALT_NUMBER } from "../../../lib/contracts.constants"; import { deployContractToAddress, @@ -12,7 +10,7 @@ import { import { ZetaTokenConsumerUniV2__factory } from "../../../typechain-types"; export async function deterministicDeployZetaConsumer() { - if (!isNetworkName(network.name)) { + if (!isProtocolNetworkName(network.name)) { throw new Error(`network.name: ${network.name} isn't supported.`); } @@ -21,17 +19,17 @@ export async function deterministicDeployZetaConsumer() { const DEPLOYER_ADDRESS = process.env.DEPLOYER_ADDRESS || signer.address; - const saltNumber = ZETA_CONSUMER_SALT_NUMBER; - const saltStr = BigNumber.from(saltNumber).toHexString(); + const zetaTokenAddress = getAddress("zetaToken", network.name); + const immutableCreate2FactoryAddress = getAddress("immutableCreate2Factory", network.name); - const zetaToken = getAddress("zetaToken"); - const uniswapV2Router02 = getAddress("uniswapV2Router02"); + const uniswapV2Router02 = getNonZetaAddress("uniswapV2Router02", network.name); - const immutableCreate2Factory = getAddress("immutableCreate2Factory"); + const saltNumber = ZETA_CONSUMER_SALT_NUMBER; + const saltStr = BigNumber.from(saltNumber).toHexString(); const salthex = saltToHex(saltStr, DEPLOYER_ADDRESS); const constructorTypes = ["address", "address"]; - const constructorArgs = [zetaToken, uniswapV2Router02]; + const constructorArgs = [zetaTokenAddress, uniswapV2Router02]; const contractBytecode = ZetaTokenConsumerUniV2__factory.bytecode; @@ -39,12 +37,11 @@ export async function deterministicDeployZetaConsumer() { constructorArgs, constructorTypes, contractBytecode, - factoryAddress: immutableCreate2Factory, + factoryAddress: immutableCreate2FactoryAddress, salt: salthex, signer, }); - // saveAddress("zetaTokenConsumerUniV2", address); console.log("Deployed ZetaConsumer. Address:", address); } diff --git a/scripts/deployments/tools/deterministic-deploy-zeta-consumer-v3.ts b/scripts/deployments/tools/deterministic-deploy-zeta-consumer-v3.ts index cd413a67..9e560152 100644 --- a/scripts/deployments/tools/deterministic-deploy-zeta-consumer-v3.ts +++ b/scripts/deployments/tools/deterministic-deploy-zeta-consumer-v3.ts @@ -1,33 +1,38 @@ -import { isNetworkName } from "@zetachain/addresses"; -import { saveAddress } from "@zetachain/addresses-tools"; import { ethers, network } from "hardhat"; +import { getAddress, getNonZetaAddress, isProtocolNetworkName } from "lib"; -import { getAddress } from "../../../lib/address.helpers"; import { ZetaTokenConsumerUniV3__factory } from "../../../typechain-types"; export async function deterministicDeployZetaConsumer() { - if (!isNetworkName(network.name)) { + if (!isProtocolNetworkName(network.name)) { throw new Error(`network.name: ${network.name} isn't supported.`); } - const accounts = await ethers.getSigners(); const [signer] = accounts; - const zetaToken = getAddress("zetaToken"); - const uniswapV3Router = getAddress("uniswapV3Router"); - const quoter = getAddress("uniswapV3Quoter"); - const WETH9Address = getAddress("weth9"); + 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([zetaToken, uniswapV3Router, quoter, WETH9Address, zetaPoolFee, tokenPoolFee]); + console.log([zetaTokenAddress, uniswapV3Router, uniswapV3Factory, WETH9Address, zetaPoolFee, tokenPoolFee]); const Factory = new ZetaTokenConsumerUniV3__factory(signer); - const contract = await Factory.deploy(zetaToken, uniswapV3Router, quoter, WETH9Address, zetaPoolFee, tokenPoolFee); + const contract = await Factory.deploy( + zetaTokenAddress, + uniswapV3Router, + uniswapV3Factory, + WETH9Address, + zetaPoolFee, + tokenPoolFee + ); await contract.deployed(); const address = contract.address; - // saveAddress("zetaTokenConsumerUniV3", address); console.log("Deployed ZetaConsumer. Address:", address); } diff --git a/scripts/deployments/tools/deterministic-get-salt-erc20-custody.ts b/scripts/deployments/tools/deterministic-get-salt-erc20-custody.ts index 3c0bad25..d22a602a 100644 --- a/scripts/deployments/tools/deterministic-get-salt-erc20-custody.ts +++ b/scripts/deployments/tools/deterministic-get-salt-erc20-custody.ts @@ -1,19 +1,15 @@ -import { isNetworkName } from "@zetachain/addresses"; import { BigNumber } from "ethers"; import { ethers, network } from "hardhat"; -import { - ERC20_CUSTODY_ZETA_FEE, - ERC20_CUSTODY_ZETA_MAX_FEE, -} from "lib/contracts.constants"; +import { getAddress, isProtocolNetworkName } from "lib"; +import { ERC20_CUSTODY_ZETA_FEE, ERC20_CUSTODY_ZETA_MAX_FEE } from "lib/contracts.constants"; -import { getAddress } from "../../../lib/address.helpers"; import { calculateBestSalt } from "../../../lib/deterministic-deploy.helpers"; import { ERC20Custody__factory } from "../../../typechain-types"; const MAX_ITERATIONS = BigNumber.from(1000000); export const deterministicDeployGetSaltERC20Custody = async () => { - if (!isNetworkName(network.name)) { + if (!isProtocolNetworkName(network.name)) { throw new Error(`network.name: ${network.name} isn't supported.`); } @@ -22,36 +18,18 @@ export const deterministicDeployGetSaltERC20Custody = async () => { const DEPLOYER_ADDRESS = process.env.DEPLOYER_ADDRESS || signer.address; - const zetaToken = getAddress("zetaToken"); - const tss = getAddress("tss"); - const tssUpdater = getAddress("tssUpdater"); + const zetaTokenAddress = getAddress("zetaToken", network.name); + const tssAddress = getAddress("tss", network.name); + const tssUpdaterAddress = getAddress("tssUpdater", network.name); const zetaFee = ERC20_CUSTODY_ZETA_FEE; const zetaMaxFee = ERC20_CUSTODY_ZETA_MAX_FEE; - const constructorTypes = [ - "address", - "address", - "uint256", - "uint256", - "address", - ]; - const constructorArgs = [ - tss, - tssUpdater, - zetaFee.toString(), - zetaMaxFee.toString(), - zetaToken, - ]; + const constructorTypes = ["address", "address", "uint256", "uint256", "address"]; + const constructorArgs = [tssAddress, tssUpdaterAddress, zetaFee.toString(), zetaMaxFee.toString(), zetaTokenAddress]; const contractBytecode = ERC20Custody__factory.bytecode; - calculateBestSalt( - MAX_ITERATIONS, - DEPLOYER_ADDRESS, - constructorTypes, - constructorArgs, - contractBytecode - ); + calculateBestSalt(MAX_ITERATIONS, DEPLOYER_ADDRESS, constructorTypes, constructorArgs, contractBytecode); }; if (!process.env.EXECUTE_PROGRAMMATICALLY) { diff --git a/scripts/deployments/tools/deterministic-get-salt-zeta-connector.ts b/scripts/deployments/tools/deterministic-get-salt-zeta-connector.ts index 7ad8ef39..73252f6f 100644 --- a/scripts/deployments/tools/deterministic-get-salt-zeta-connector.ts +++ b/scripts/deployments/tools/deterministic-get-salt-zeta-connector.ts @@ -1,8 +1,7 @@ -import { isNetworkName } from "@zetachain/addresses"; import { BigNumber } from "ethers"; import { ethers, network } from "hardhat"; +import { getAddress, isProtocolNetworkName } from "lib"; -import { getAddress } from "../../../lib/address.helpers"; import { isEthNetworkName } from "../../../lib/contracts.helpers"; import { calculateBestSalt } from "../../../lib/deterministic-deploy.helpers"; import { ZetaConnectorEth__factory, ZetaConnectorNonEth__factory } from "../../../typechain-types"; @@ -10,7 +9,7 @@ import { ZetaConnectorEth__factory, ZetaConnectorNonEth__factory } from "../../. const MAX_ITERATIONS = BigNumber.from(100000); export async function deterministicDeployGetSaltZetaConnector() { - if (!isNetworkName(network.name)) { + if (!isProtocolNetworkName(network.name)) { throw new Error(`network.name: ${network.name} isn't supported.`); } @@ -19,13 +18,13 @@ export async function deterministicDeployGetSaltZetaConnector() { const DEPLOYER_ADDRESS = process.env.DEPLOYER_ADDRESS || signer.address; - const zetaToken = getAddress("zetaToken"); - const tss = getAddress("tss"); - const tssUpdater = getAddress("tssUpdater"); + const zetaTokenAddress = getAddress("zetaToken", network.name); + const tssAddress = getAddress("tss", network.name); + const tssUpdaterAddress = getAddress("tssUpdater", network.name); // @todo: decide which address use as pauser const constructorTypes = ["address", "address", "address", "address"]; - const constructorArgs = [zetaToken, tss, tssUpdater, tssUpdater]; + const constructorArgs = [zetaTokenAddress, tssAddress, tssUpdaterAddress, tssUpdaterAddress]; let contractBytecode; diff --git a/scripts/deployments/tools/deterministic-get-salt-zeta-token.ts b/scripts/deployments/tools/deterministic-get-salt-zeta-token.ts index fdf8a68f..e988ee2c 100644 --- a/scripts/deployments/tools/deterministic-get-salt-zeta-token.ts +++ b/scripts/deployments/tools/deterministic-get-salt-zeta-token.ts @@ -1,20 +1,16 @@ -import { isNetworkName } from "@zetachain/addresses"; import { BigNumber } from "ethers"; import { ethers, network } from "hardhat"; +import { getAddress, isProtocolNetworkName } from "lib"; -import { getAddress } from "../../../lib/address.helpers"; import { ZETA_INITIAL_SUPPLY } from "../../../lib/contracts.constants"; import { isEthNetworkName } from "../../../lib/contracts.helpers"; import { calculateBestSalt } from "../../../lib/deterministic-deploy.helpers"; -import { - ZetaEth__factory, - ZetaNonEth__factory, -} from "../../../typechain-types"; +import { ZetaEth__factory, ZetaNonEth__factory } from "../../../typechain-types"; const MAX_ITERATIONS = BigNumber.from(1000000); export async function deterministicDeployGetSaltZetaToken() { - if (!isNetworkName(network.name)) { + if (!isProtocolNetworkName(network.name)) { throw new Error(`network.name: ${network.name} isn't supported.`); } @@ -23,8 +19,8 @@ export async function deterministicDeployGetSaltZetaToken() { const DEPLOYER_ADDRESS = process.env.DEPLOYER_ADDRESS || signer.address; - const tss = getAddress("tss"); - const tssUpdater = getAddress("tssUpdater"); + const tssAddress = getAddress("tss", network.name); + const tssUpdaterAddress = getAddress("tssUpdater", network.name); let constructorTypes; let constructorArgs; @@ -35,16 +31,10 @@ export async function deterministicDeployGetSaltZetaToken() { contractBytecode = ZetaEth__factory.bytecode; } else { constructorTypes = ["address", "address"]; - constructorArgs = [tss, tssUpdater]; + constructorArgs = [tssAddress, tssUpdaterAddress]; contractBytecode = ZetaNonEth__factory.bytecode; } - calculateBestSalt( - MAX_ITERATIONS, - DEPLOYER_ADDRESS, - constructorTypes, - constructorArgs, - contractBytecode - ); + calculateBestSalt(MAX_ITERATIONS, DEPLOYER_ADDRESS, constructorTypes, constructorArgs, contractBytecode); } if (!process.env.EXECUTE_PROGRAMMATICALLY) { diff --git a/scripts/generate_go.sh b/scripts/generate_go.sh index 11d3336f..c2259b1f 100755 --- a/scripts/generate_go.sh +++ b/scripts/generate_go.sh @@ -27,7 +27,7 @@ process_file() { contract_name_lowercase=$(echo "$contract_name" | tr '[:upper:]' '[:lower:]') # Define output subdirectory and create it if it doesn't exist - output_subdir="$OUTPUT_DIR/${subdir/@/}/" + output_subdir="$OUTPUT_DIR/${subdir/@/}" output_subdir_lowercase=$(echo "$output_subdir" | tr '[:upper:]' '[:lower:]') mkdir -p "$output_subdir_lowercase" @@ -35,9 +35,9 @@ process_file() { # Generate the Go binding for the contract echo "Compiling $contract_name..." - cat "$contract" | jq .abi > "$output_subdir/$contract_name.abi" - cat "$contract" | jq .bytecode | tr -d '\"' > "$output_subdir/$contract_name.bin" - abigen --abi "$output_subdir/$contract_name.abi" --bin "$output_subdir/$contract_name.bin" --pkg "$package_name" --type "$contract_name" --out "$output_subdir/$contract_name_lowercase.go" > /dev/null 2>&1 + cat "$contract" | jq .abi > "$output_subdir_lowercase/$contract_name.abi" + cat "$contract" | jq .bytecode | tr -d '\"' > "$output_subdir_lowercase/$contract_name.bin" + abigen --abi "$output_subdir_lowercase/$contract_name.abi" --bin "$output_subdir_lowercase/$contract_name.bin" --pkg "$package_name" --type "$contract_name" --out "$output_subdir_lowercase/$contract_name_lowercase.go" > /dev/null 2>&1 # Check if there were errors during the compilation if [ $? -ne 0 ]; then echo "Error: Failed to compile $contract_name" @@ -45,7 +45,7 @@ process_file() { fi # Remove temporary .abi and .bin files - rm "$output_subdir/$contract_name.abi" "$output_subdir/$contract_name.bin" + rm "$output_subdir_lowercase/$contract_name.abi" "$output_subdir_lowercase/$contract_name.bin" } # Function to iterate through the artifacts directory diff --git a/scripts/tools/send-tss-gas.ts b/scripts/tools/send-tss-gas.ts index 6fe9ebe6..2990e3ac 100644 --- a/scripts/tools/send-tss-gas.ts +++ b/scripts/tools/send-tss-gas.ts @@ -1,21 +1,23 @@ -import { isNetworkName } from "@zetachain/addresses"; import { ethers, network } from "hardhat"; -import { getAddress } from "../../lib/address.helpers"; +import { getAddress, isProtocolNetworkName } from "../../lib/address.tools"; async function sendGas() { - if (!isNetworkName(network.name)) { + if (!isProtocolNetworkName(network.name)) { throw new Error(`network.name: ${network.name} isn't supported.`); } const [signer] = await ethers.getSigners(); + + const tssAddress = getAddress("tss", network.name); + const sendGasTx = { from: signer.address, - to: getAddress("tss"), + to: tssAddress, value: ethers.utils.parseEther("1.0"), }; await signer.sendTransaction(sendGasTx); - console.log(`Sent 1.0 Ether from ${signer.address} to TSS address (${getAddress("tss")}).`); + console.log(`Sent 1.0 Ether from ${signer.address} to TSS address (${tssAddress}).`); } sendGas() diff --git a/scripts/tools/set-zeta-token-addresses.ts b/scripts/tools/set-zeta-token-addresses.ts index db372cb4..ff9aea2a 100644 --- a/scripts/tools/set-zeta-token-addresses.ts +++ b/scripts/tools/set-zeta-token-addresses.ts @@ -1,16 +1,19 @@ -import { isNetworkName } from "@zetachain/addresses"; import { ethers, network } from "hardhat"; +import { getAddress, isProtocolNetworkName } from "lib"; -import { getAddress } from "../../lib/address.helpers"; import { ZetaNonEth__factory as ZetaNonEthFactory } from "../../typechain-types"; export async function setZetaAddresses(connectorAddress: string, zetaTokenAddress: string) { const [owner] = await ethers.getSigners(); - if (!isNetworkName(network.name)) { + if (!isProtocolNetworkName(network.name)) { throw new Error(`network.name: ${network.name} isn't supported.`); } - if (owner.address !== getAddress("tss") && owner.address !== getAddress("tssUpdater")) { + + const tssAddress = getAddress("tss", network.name); + const tssUpdaterAddress = getAddress("tssUpdater", network.name); + + if (owner.address !== tssAddress && owner.address !== tssUpdaterAddress) { console.log("Only TSS or TSS Updater can set Zeta addresses."); console.log("Please execute this step with a valid account."); return; @@ -23,7 +26,7 @@ export async function setZetaAddresses(connectorAddress: string, zetaTokenAddres console.log("Updating"); console.log("connectorAddress", connectorAddress); console.log("zetaTokenAddress", zetaTokenAddress); - const tx = await contract.updateTssAndConnectorAddresses(getAddress("tss"), connectorAddress); + const tx = await contract.updateTssAndConnectorAddresses(tssAddress, connectorAddress); await tx.wait(); console.log("Updated"); } diff --git a/scripts/tools/test-zeta-send.ts b/scripts/tools/test-zeta-send.ts index 25bfd00e..81de7738 100644 --- a/scripts/tools/test-zeta-send.ts +++ b/scripts/tools/test-zeta-send.ts @@ -1,22 +1,34 @@ -import { getChainId } from "@zetachain/addresses"; +import { networks } from "@zetachain/networks"; import { AbiCoder } from "ethers/lib/utils"; -import { ethers } from "hardhat"; +import { ethers, network } from "hardhat"; -import { getAddress } from "../../lib/address.helpers"; +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() { - const factory = (await ethers.getContractFactory("ZetaConnectorEth")) as ZetaConnectorEthFactory; + if (!isProtocolNetworkName(network.name)) { + throw new Error(`network.name: ${network.name} isn't supported.`); + } + const accounts = await ethers.getSigners(); - const contract = factory.attach(getAddress("connector")); + + const connectorAddress = getAddress("connector", network.name); + + const factory = (await ethers.getContractFactory("ZetaConnectorEth")) as ZetaConnectorEthFactory; + const contract = factory.attach(connectorAddress); console.log(`Sending To ${accounts[0].address}`); 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/scripts/tools/token-approval.ts b/scripts/tools/token-approval.ts index c407c9b4..3f59df76 100644 --- a/scripts/tools/token-approval.ts +++ b/scripts/tools/token-approval.ts @@ -1,27 +1,29 @@ -import { isNetworkName } from "@zetachain/addresses"; import { ethers, network } from "hardhat"; +import { getAddress, isProtocolNetworkName } from "lib"; -import { getAddress } from "../../lib/address.helpers"; import { getZetaFactoryEth, getZetaFactoryNonEth, isEthNetworkName } from "../../lib/contracts.helpers"; const approvalAmount = ethers.utils.parseEther("10000000.0"); export async function setTokenApproval() { - if (!isNetworkName(network.name)) { + if (!isProtocolNetworkName(network.name)) { throw new Error(`network.name: ${network.name} isn't supported.`); } + const zetaTokenAddress = getAddress("zetaToken", network.name); + const connectorAddress = getAddress("connector", network.name); + let contract; if (isEthNetworkName(network.name)) { - contract = await getZetaFactoryEth({ deployParams: null, existingContractAddress: getAddress("zetaToken") }); + contract = await getZetaFactoryEth({ deployParams: null, existingContractAddress: zetaTokenAddress }); } else { - contract = await getZetaFactoryNonEth({ deployParams: null, existingContractAddress: getAddress("zetaToken") }); + contract = await getZetaFactoryNonEth({ deployParams: null, existingContractAddress: zetaTokenAddress }); } - let tx = await contract.approve(getAddress("connector"), approvalAmount); + let tx = await contract.approve(connectorAddress, approvalAmount); tx.wait(); - console.log(`Approved Connector Contract ${getAddress("connector")} for ${approvalAmount} `); + console.log(`Approved Connector Contract ${connectorAddress} for ${approvalAmount} `); } setTokenApproval() diff --git a/scripts/tools/update-tss-address.ts b/scripts/tools/update-tss-address.ts index ba255a16..9ad03052 100644 --- a/scripts/tools/update-tss-address.ts +++ b/scripts/tools/update-tss-address.ts @@ -1,36 +1,35 @@ -import { isNetworkName } from "@zetachain/addresses"; -import { saveAddress } from "@zetachain/addresses-tools"; import { ethers, network } from "hardhat"; +import { getAddress, isProtocolNetworkName } from "lib"; -import { getAddress } from "../../lib/address.helpers"; import { getZetaConnectorEth, getZetaConnectorNonEth, isEthNetworkName } from "../../lib/contracts.helpers"; async function sendGas() { - if (!isNetworkName(network.name)) { + if (!isProtocolNetworkName(network.name)) { throw new Error(`network.name: ${network.name} isn't supported.`); } const [, tssUpdaterSigner] = await ethers.getSigners(); + const tssAddress = getAddress("tss", network.name); + const connectorAddress = getAddress("connector", network.name); + const newTssAddress = "0x0000000000000000000000000000000000000000"; if (isEthNetworkName(network.name)) { const contract = ( - await getZetaConnectorEth({ deployParams: null, existingContractAddress: getAddress("connector") }) + await getZetaConnectorEth({ deployParams: null, existingContractAddress: connectorAddress }) ).connect(tssUpdaterSigner); await (await contract.updateTssAddress(newTssAddress)).wait(); } else { const contract = ( - await getZetaConnectorNonEth({ deployParams: null, existingContractAddress: getAddress("connector") }) + await getZetaConnectorNonEth({ deployParams: null, existingContractAddress: connectorAddress }) ).connect(tssUpdaterSigner); await (await contract.updateTssAddress(newTssAddress)).wait(); } - console.log(`Updated TSS address from ${getAddress("tss")} to ${newTssAddress}.`); - - // saveAddress("tss", newTssAddress); + console.log(`Updated TSS address from ${tssAddress} to ${newTssAddress}.`); } sendGas() diff --git a/scripts/tools/update-zeta-connector.ts b/scripts/tools/update-zeta-connector.ts index 7188edc9..ebe0534b 100644 --- a/scripts/tools/update-zeta-connector.ts +++ b/scripts/tools/update-zeta-connector.ts @@ -1,28 +1,27 @@ -import { isNetworkName } from "@zetachain/addresses"; import { ethers, network } from "hardhat"; +import { getAddress, isProtocolNetworkName } from "lib"; -import { getAddress } from "../../lib/address.helpers"; -import { getZetaFactoryNonEth, isEthNetworkName } from "../../lib/contracts.helpers"; +import { getZetaFactoryNonEth } from "../../lib/contracts.helpers"; async function updateZetaConnector() { - if (!isNetworkName(network.name)) { + if (!isProtocolNetworkName(network.name)) { throw new Error(`network.name: ${network.name} isn't supported.`); } const [, tssUpdaterSigner] = await ethers.getSigners(); - if (isEthNetworkName(network.name)) { - throw new Error(`network.name: ${network.name} isn't supported.`); - } + const zetaTokenAddress = getAddress("zetaToken", network.name); + const tssAddress = getAddress("tss", network.name); + const connectorAddress = getAddress("connector", network.name); const contract = ( - await getZetaFactoryNonEth({ deployParams: null, existingContractAddress: getAddress("zetaToken") }) + await getZetaFactoryNonEth({ deployParams: null, existingContractAddress: zetaTokenAddress }) ).connect(tssUpdaterSigner); - await (await contract.updateTssAndConnectorAddresses(getAddress("tss"), getAddress("connector"))).wait(); + await (await contract.updateTssAndConnectorAddresses(tssAddress, connectorAddress)).wait(); - console.log(`Updated TSS address to ${getAddress("tss")}.`); - console.log(`Updated Connector address to ${getAddress("connector")}.`); + console.log(`Updated TSS address to ${tssAddress}.`); + console.log(`Updated Connector address to ${connectorAddress}.`); } updateZetaConnector() 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/ImmutableCreate2Factory.spec.ts b/test/ImmutableCreate2Factory.spec.ts index 63a5779c..3c713ed1 100644 --- a/test/ImmutableCreate2Factory.spec.ts +++ b/test/ImmutableCreate2Factory.spec.ts @@ -31,9 +31,7 @@ describe("Deterministic deployment tests", () => { accounts = await ethers.getSigners(); [signer] = accounts; - const immutableCreate2Factory = new ImmutableCreate2Factory__factory( - signer - ); + const immutableCreate2Factory = new ImmutableCreate2Factory__factory(signer); immutableCreate2 = await immutableCreate2Factory.deploy(); }); @@ -44,15 +42,8 @@ describe("Deterministic deployment tests", () => { const constructorArgs = [signer.address, "2100000000"]; const contractBytecode = ZetaEth__factory.bytecode; - const bytecode = buildBytecode( - constructorTypes, - constructorArgs, - contractBytecode - ); - const expectedAddress = await immutableCreate2.findCreate2Address( - salthex, - bytecode - ); + const bytecode = buildBytecode(constructorTypes, constructorArgs, contractBytecode); + const expectedAddress = await immutableCreate2.findCreate2Address(salthex, bytecode); // Deploy contract const { address } = await deployContractToAddress({ @@ -87,16 +78,8 @@ describe("Deterministic deployment tests", () => { const constructorArgs = [signer.address, "2100000000"]; const contractBytecode = ZetaEth__factory.bytecode; - const bytecode = buildBytecode( - constructorTypes, - constructorArgs, - contractBytecode - ); - const expectedAddress = buildCreate2Address( - salthex, - bytecode, - immutableCreate2.address - ); + const bytecode = buildBytecode(constructorTypes, constructorArgs, contractBytecode); + const expectedAddress = buildCreate2Address(salthex, bytecode, immutableCreate2.address); if (expectedAddress < minAddress) { minAddress = expectedAddress; minAddressSalt = saltStr; @@ -115,23 +98,10 @@ describe("Deterministic deployment tests", () => { const constructorArgs = [signer.address, "2100000000"]; const contractBytecode = ZetaEth__factory.bytecode; - const bytecode = buildBytecode( - constructorTypes, - constructorArgs, - contractBytecode - ); - const expectedAddress = await immutableCreate2.findCreate2Address( - salthex, - bytecode - ); - const expectedAddressOffchain = buildCreate2Address( - salthex, - bytecode, - immutableCreate2.address - ); - expect(expectedAddress.toLocaleLowerCase()).to.be.eq( - expectedAddressOffchain - ); + const bytecode = buildBytecode(constructorTypes, constructorArgs, contractBytecode); + const expectedAddress = await immutableCreate2.findCreate2Address(salthex, bytecode); + const expectedAddressOffchain = buildCreate2Address(salthex, bytecode, immutableCreate2.address); + expect(expectedAddress.toLocaleLowerCase()).to.be.eq(expectedAddressOffchain); }); it("Should deploy and transfer ownership to deployer", async () => { 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/ZetaConnector.spec.ts b/test/ZetaConnector.spec.ts index 49e1a56c..380a8d67 100644 --- a/test/ZetaConnector.spec.ts +++ b/test/ZetaConnector.spec.ts @@ -34,21 +34,11 @@ describe("ZetaConnector tests", () => { let pauserSigner: SignerWithAddress; const tssUpdaterApproveConnectorEth = async () => { - await ( - await zetaTokenEthContract.approve( - zetaConnectorEthContract.address, - parseEther("100000") - ) - ).wait(); + await (await zetaTokenEthContract.approve(zetaConnectorEthContract.address, parseEther("100000"))).wait(); }; const tssUpdaterApproveConnectorNonEth = async () => { - await ( - await zetaTokenNonEthContract.approve( - zetaConnectorNonEthContract.address, - parseEther("100000") - ) - ).wait(); + await (await zetaTokenNonEthContract.approve(zetaConnectorNonEthContract.address, parseEther("100000"))).wait(); }; const transfer100kZetaEth = async (transferTo: string) => { @@ -61,25 +51,14 @@ describe("ZetaConnector tests", () => { await ( await zetaConnectorNonEthContract .connect(tssSigner) - .onReceive( - randomSigner.address, - 1, - transferTo, - zeta100k, - [], - ethers.constants.HashZero - ) + .onReceive(randomSigner.address, 1, transferTo, zeta100k, [], ethers.constants.HashZero) ).wait(); }; const transfer100kZetaNonEth = async (transferTo: string) => { await mint100kZetaNonEth(tssUpdater.address); - await ( - await zetaTokenNonEthContract - .connect(tssUpdater) - .transfer(transferTo, 100_000) - ).wait(); + await (await zetaTokenNonEthContract.connect(tssUpdater).transfer(transferTo, 100_000)).wait(); }; beforeEach(async () => { @@ -96,28 +75,13 @@ describe("ZetaConnector tests", () => { zetaReceiverMockContract = await deployZetaReceiverMock(); zetaConnectorBaseContract = await deployZetaConnectorBase({ - args: [ - zetaTokenEthContract.address, - tssSigner.address, - tssUpdater.address, - pauserSigner.address, - ], + args: [zetaTokenEthContract.address, tssSigner.address, tssUpdater.address, pauserSigner.address], }); zetaConnectorEthContract = await deployZetaConnectorEth({ - args: [ - zetaTokenEthContract.address, - tssSigner.address, - tssUpdater.address, - pauserSigner.address, - ], + args: [zetaTokenEthContract.address, tssSigner.address, tssUpdater.address, pauserSigner.address], }); zetaConnectorNonEthContract = await deployZetaConnectorNonEth({ - args: [ - zetaTokenNonEthContract.address, - tssSigner.address, - tssUpdater.address, - pauserSigner.address, - ], + args: [zetaTokenNonEthContract.address, tssSigner.address, tssUpdater.address, pauserSigner.address], }); await zetaTokenNonEthContract.updateTssAndConnectorAddresses( @@ -131,29 +95,19 @@ describe("ZetaConnector tests", () => { describe("ZetaConnector.base", () => { describe("updateTssAddress", () => { it("Should revert if the caller is not TSS or TSS updater", async () => { - await expect( - zetaConnectorBaseContract - .connect(randomSigner) - .updateTssAddress(randomSigner.address) - ) + await expect(zetaConnectorBaseContract.connect(randomSigner).updateTssAddress(randomSigner.address)) .to.revertedWith("CallerIsNotTssOrUpdater") .withArgs(randomSigner.address); }); it("Should revert if the new TSS address is invalid", async () => { await expect( - zetaConnectorBaseContract.updateTssAddress( - "0x0000000000000000000000000000000000000000" - ) + zetaConnectorBaseContract.updateTssAddress("0x0000000000000000000000000000000000000000") ).to.revertedWith("InvalidAddress"); }); it("Should change the TSS address if called by TSS", async () => { - await ( - await zetaConnectorBaseContract - .connect(tssSigner) - .updateTssAddress(randomSigner.address) - ).wait(); + await (await zetaConnectorBaseContract.connect(tssSigner).updateTssAddress(randomSigner.address)).wait(); const address = await zetaConnectorBaseContract.tssAddress(); @@ -161,9 +115,7 @@ describe("ZetaConnector tests", () => { }); it("Should change the TSS address if called by TSS updater", async () => { - await ( - await zetaConnectorBaseContract.updateTssAddress(randomSigner.address) - ).wait(); + await (await zetaConnectorBaseContract.updateTssAddress(randomSigner.address)).wait(); const address = await zetaConnectorBaseContract.tssAddress(); @@ -173,11 +125,7 @@ describe("ZetaConnector tests", () => { describe("updatePauserAddress", () => { it("Should revert if the caller is not the Pauser", async () => { - await expect( - zetaConnectorBaseContract - .connect(randomSigner) - .updatePauserAddress(randomSigner.address) - ) + await expect(zetaConnectorBaseContract.connect(randomSigner).updatePauserAddress(randomSigner.address)) .to.revertedWith("CallerIsNotPauser") .withArgs(randomSigner.address); }); @@ -191,11 +139,7 @@ describe("ZetaConnector tests", () => { }); it("Should change the Pauser address if called by Pauser", async () => { - await ( - await zetaConnectorBaseContract - .connect(pauserSigner) - .updatePauserAddress(randomSigner.address) - ).wait(); + await (await zetaConnectorBaseContract.connect(pauserSigner).updatePauserAddress(randomSigner.address)).wait(); const address = await zetaConnectorBaseContract.pauserAddress(); @@ -203,22 +147,16 @@ describe("ZetaConnector tests", () => { }); it("Should emit `PauserAddressUpdated` on success", async () => { - const pauserAddressUpdatedFilter = - zetaConnectorBaseContract.filters.PauserAddressUpdated(); + const pauserAddressUpdatedFilter = zetaConnectorBaseContract.filters.PauserAddressUpdated(); - const tx = await zetaConnectorBaseContract - .connect(pauserSigner) - .updatePauserAddress(randomSigner.address); + const tx = await zetaConnectorBaseContract.connect(pauserSigner).updatePauserAddress(randomSigner.address); const receipt = await tx.wait(); const address = await zetaConnectorBaseContract.pauserAddress(); expect(address).to.equal(randomSigner.address); - const event = await zetaConnectorBaseContract.queryFilter( - pauserAddressUpdatedFilter, - receipt.blockHash - ); + const event = await zetaConnectorBaseContract.queryFilter(pauserAddressUpdatedFilter, receipt.blockHash); expect(event.length).to.equal(1); }); }); @@ -235,15 +173,11 @@ describe("ZetaConnector tests", () => { }); it("Should pause if called by the Pauser", async () => { - await ( - await zetaConnectorBaseContract.connect(pauserSigner).pause() - ).wait(); + await (await zetaConnectorBaseContract.connect(pauserSigner).pause()).wait(); const paused1 = await zetaConnectorBaseContract.paused(); expect(paused1).to.equal(true); - await ( - await zetaConnectorBaseContract.connect(pauserSigner).unpause() - ).wait(); + await (await zetaConnectorBaseContract.connect(pauserSigner).unpause()).wait(); const paused2 = await zetaConnectorBaseContract.paused(); expect(paused2).to.equal(false); }); @@ -253,9 +187,7 @@ describe("ZetaConnector tests", () => { describe("ZetaConnector.eth", () => { describe("send", () => { it("Should revert if the contract is paused", async () => { - await ( - await zetaConnectorEthContract.connect(pauserSigner).pause() - ).wait(); + await (await zetaConnectorEthContract.connect(pauserSigner).pause()).wait(); const paused1 = await zetaConnectorEthContract.paused(); expect(paused1).to.equal(true); @@ -265,10 +197,7 @@ describe("ZetaConnector tests", () => { destinationChainId: 1, destinationGasLimit: 2500000, message: new ethers.utils.AbiCoder().encode(["string"], ["hello"]), - zetaParams: new ethers.utils.AbiCoder().encode( - ["string"], - ["hello"] - ), + zetaParams: new ethers.utils.AbiCoder().encode(["string"], ["hello"]), zetaValueAndGas: 1000, }) ).to.revertedWith("Pausable: paused"); @@ -276,9 +205,7 @@ describe("ZetaConnector tests", () => { it("Should revert if the zetaTxSender has no enough zeta", async () => { await ( - await zetaTokenEthContract - .connect(randomSigner) - .approve(zetaConnectorEthContract.address, 100_000) + await zetaTokenEthContract.connect(randomSigner).approve(zetaConnectorEthContract.address, 100_000) ).wait(); await expect( @@ -287,10 +214,7 @@ describe("ZetaConnector tests", () => { destinationChainId: 1, destinationGasLimit: 2500000, message: new ethers.utils.AbiCoder().encode(["string"], ["hello"]), - zetaParams: new ethers.utils.AbiCoder().encode( - ["string"], - ["hello"] - ), + zetaParams: new ethers.utils.AbiCoder().encode(["string"], ["hello"]), zetaValueAndGas: 1000, }) ).to.revertedWith("ERC20: transfer amount exceeds balance"); @@ -303,26 +227,17 @@ describe("ZetaConnector tests", () => { destinationChainId: 1, destinationGasLimit: 2500000, message: new ethers.utils.AbiCoder().encode(["string"], ["hello"]), - zetaParams: new ethers.utils.AbiCoder().encode( - ["string"], - ["hello"] - ), + zetaParams: new ethers.utils.AbiCoder().encode(["string"], ["hello"]), zetaValueAndGas: 1000, }) ).to.revertedWith("ERC20: insufficient allowance"); }); it("Should transfer Zeta token from the zetaTxSender account to the Connector contract", async () => { - const initialBalanceDeployer = await zetaTokenEthContract.balanceOf( - tssUpdater.address - ); - const initialBalanceConnector = await zetaTokenEthContract.balanceOf( - zetaConnectorEthContract.address - ); - - expect(initialBalanceDeployer.toString()).to.equal( - "100000000000000000000000" - ); + const initialBalanceDeployer = await zetaTokenEthContract.balanceOf(tssUpdater.address); + const initialBalanceConnector = await zetaTokenEthContract.balanceOf(zetaConnectorEthContract.address); + + expect(initialBalanceDeployer.toString()).to.equal("100000000000000000000000"); expect(initialBalanceConnector.toString()).to.equal("0"); await tssUpdaterApproveConnectorEth(); @@ -333,24 +248,15 @@ describe("ZetaConnector tests", () => { destinationChainId: 1, destinationGasLimit: 2500000, message: new ethers.utils.AbiCoder().encode(["string"], ["hello"]), - zetaParams: new ethers.utils.AbiCoder().encode( - ["string"], - ["hello"] - ), + zetaParams: new ethers.utils.AbiCoder().encode(["string"], ["hello"]), zetaValueAndGas: 1000, }) ).wait(); - const finalBalanceDeployer = await zetaTokenEthContract.balanceOf( - tssUpdater.address - ); - const finalBalanceConnector = await zetaTokenEthContract.balanceOf( - zetaConnectorEthContract.address - ); + const finalBalanceDeployer = await zetaTokenEthContract.balanceOf(tssUpdater.address); + const finalBalanceConnector = await zetaTokenEthContract.balanceOf(zetaConnectorEthContract.address); - expect(finalBalanceDeployer.toString()).to.equal( - "99999999999999999999000" - ); + expect(finalBalanceDeployer.toString()).to.equal("99999999999999999999000"); expect(finalBalanceConnector.toString()).to.equal("1000"); }); @@ -366,10 +272,7 @@ describe("ZetaConnector tests", () => { zetaValueAndGas: 0, }); const receipt = await tx.wait(); - const events = await zetaConnectorEthContract.queryFilter( - zetaSentFilter, - receipt.blockHash - ); + const events = await zetaConnectorEthContract.queryFilter(zetaSentFilter, receipt.blockHash); expect(events.length).to.equal(1); }); @@ -387,19 +290,14 @@ describe("ZetaConnector tests", () => { const receipt = await tx.wait(); - const events = await zetaConnectorEthContract.queryFilter( - zetaSentFilter, - receipt.blockHash - ); + const events = await zetaConnectorEthContract.queryFilter(zetaSentFilter, receipt.blockHash); expect(events[0].args[0].toString()).to.equal(randomSigner.address); }); }); describe("onReceive", () => { it("Should not revert if the contract is paused", async () => { - await ( - await zetaConnectorEthContract.connect(pauserSigner).pause() - ).wait(); + await (await zetaConnectorEthContract.connect(pauserSigner).pause()).wait(); const paused1 = await zetaConnectorEthContract.paused(); expect(paused1).to.equal(true); @@ -450,12 +348,8 @@ describe("ZetaConnector tests", () => { it("Should transfer to the receiver address", async () => { await transfer100kZetaEth(zetaConnectorEthContract.address); - const initialBalanceConnector = await zetaTokenEthContract.balanceOf( - zetaConnectorEthContract.address - ); - const initialBalanceReceiver = await zetaTokenEthContract.balanceOf( - zetaReceiverMockContract.address - ); + const initialBalanceConnector = await zetaTokenEthContract.balanceOf(zetaConnectorEthContract.address); + const initialBalanceReceiver = await zetaTokenEthContract.balanceOf(zetaReceiverMockContract.address); expect(initialBalanceConnector.toString()).to.equal("100000"); expect(initialBalanceReceiver.toString()).to.equal("0"); @@ -472,12 +366,8 @@ describe("ZetaConnector tests", () => { ) ).wait(); - const finalBalanceConnector = await zetaTokenEthContract.balanceOf( - zetaConnectorEthContract.address - ); - const finalBalanceReceiver = await zetaTokenEthContract.balanceOf( - zetaReceiverMockContract.address - ); + const finalBalanceConnector = await zetaTokenEthContract.balanceOf(zetaConnectorEthContract.address); + const finalBalanceReceiver = await zetaTokenEthContract.balanceOf(zetaReceiverMockContract.address); expect(finalBalanceConnector.toString()).to.equal("99000"); expect(finalBalanceReceiver.toString()).to.equal("1000"); @@ -486,8 +376,7 @@ describe("ZetaConnector tests", () => { it("Should emit `ZetaReceived` on success", async () => { await transfer100kZetaEth(zetaConnectorEthContract.address); - const zetaReceivedFilter = - zetaConnectorEthContract.filters.ZetaReceived(); + const zetaReceivedFilter = zetaConnectorEthContract.filters.ZetaReceived(); const tx = await zetaConnectorEthContract .connect(tssSigner) @@ -501,19 +390,14 @@ describe("ZetaConnector tests", () => { ); const receipt = await tx.wait(); - const events = await zetaConnectorEthContract.queryFilter( - zetaReceivedFilter, - receipt.blockHash - ); + const events = await zetaConnectorEthContract.queryFilter(zetaReceivedFilter, receipt.blockHash); expect(events.length).to.equal(1); }); }); describe("onRevert", () => { it("Should revert if the contract is paused", async () => { - await ( - await zetaConnectorEthContract.connect(pauserSigner).pause() - ).wait(); + await (await zetaConnectorEthContract.connect(pauserSigner).pause()).wait(); const paused1 = await zetaConnectorEthContract.paused(); expect(paused1).to.equal(true); @@ -549,12 +433,8 @@ describe("ZetaConnector tests", () => { it("Should transfer to the zetaTxSender address", async () => { await transfer100kZetaEth(zetaConnectorEthContract.address); - const initialBalanceConnector = await zetaTokenEthContract.balanceOf( - zetaConnectorEthContract.address - ); - const initialBalanceZetaTxSender = await zetaTokenEthContract.balanceOf( - zetaReceiverMockContract.address - ); + const initialBalanceConnector = await zetaTokenEthContract.balanceOf(zetaConnectorEthContract.address); + const initialBalanceZetaTxSender = await zetaTokenEthContract.balanceOf(zetaReceiverMockContract.address); expect(initialBalanceConnector.toString()).to.equal("100000"); expect(initialBalanceZetaTxSender.toString()).to.equal("0"); @@ -572,12 +452,8 @@ describe("ZetaConnector tests", () => { ) ).wait(); - const finalBalanceConnector = await zetaTokenEthContract.balanceOf( - zetaConnectorEthContract.address - ); - const finalBalanceZetaTxSender = await zetaTokenEthContract.balanceOf( - zetaReceiverMockContract.address - ); + const finalBalanceConnector = await zetaTokenEthContract.balanceOf(zetaConnectorEthContract.address); + const finalBalanceZetaTxSender = await zetaTokenEthContract.balanceOf(zetaReceiverMockContract.address); expect(finalBalanceConnector.toString()).to.equal("99000"); expect(finalBalanceZetaTxSender.toString()).to.equal("1000"); @@ -586,8 +462,7 @@ describe("ZetaConnector tests", () => { it("Should emit `ZetaReverted` on success", async () => { await transfer100kZetaEth(zetaConnectorEthContract.address); - const zetaRevertedFilter = - zetaConnectorEthContract.filters.ZetaReverted(); + const zetaRevertedFilter = zetaConnectorEthContract.filters.ZetaReverted(); const tx = await zetaConnectorEthContract .connect(tssSigner) @@ -602,10 +477,7 @@ describe("ZetaConnector tests", () => { ); const receipt = await tx.wait(); - const events = await zetaConnectorEthContract.queryFilter( - zetaRevertedFilter, - receipt.blockHash - ); + const events = await zetaConnectorEthContract.queryFilter(zetaRevertedFilter, receipt.blockHash); expect(events.length).to.equal(1); }); }); @@ -614,9 +486,7 @@ describe("ZetaConnector tests", () => { describe("ZetaConnector.non-eth", () => { describe("send", () => { it("Should revert if the contract is paused", async () => { - await ( - await zetaConnectorNonEthContract.connect(pauserSigner).pause() - ).wait(); + await (await zetaConnectorNonEthContract.connect(pauserSigner).pause()).wait(); const paused1 = await zetaConnectorNonEthContract.paused(); expect(paused1).to.equal(true); @@ -626,10 +496,7 @@ describe("ZetaConnector tests", () => { destinationChainId: 1, destinationGasLimit: 2500000, message: new ethers.utils.AbiCoder().encode(["string"], ["hello"]), - zetaParams: new ethers.utils.AbiCoder().encode( - ["string"], - ["hello"] - ), + zetaParams: new ethers.utils.AbiCoder().encode(["string"], ["hello"]), zetaValueAndGas: 1000, }) ).to.revertedWith("Pausable: paused"); @@ -637,9 +504,7 @@ describe("ZetaConnector tests", () => { it("Should revert if the zetaTxSender has no enough zeta", async () => { await ( - await zetaTokenEthContract - .connect(randomSigner) - .approve(zetaConnectorEthContract.address, 100_000) + await zetaTokenEthContract.connect(randomSigner).approve(zetaConnectorEthContract.address, 100_000) ).wait(); await expect( @@ -648,10 +513,7 @@ describe("ZetaConnector tests", () => { destinationChainId: 1, destinationGasLimit: 2500000, message: new ethers.utils.AbiCoder().encode(["string"], ["hello"]), - zetaParams: new ethers.utils.AbiCoder().encode( - ["string"], - ["hello"] - ), + zetaParams: new ethers.utils.AbiCoder().encode(["string"], ["hello"]), zetaValueAndGas: 1000, }) ).to.revertedWith("ERC20: insufficient allowance"); @@ -664,22 +526,15 @@ describe("ZetaConnector tests", () => { destinationChainId: 1, destinationGasLimit: 2500000, message: new ethers.utils.AbiCoder().encode(["string"], ["hello"]), - zetaParams: new ethers.utils.AbiCoder().encode( - ["string"], - ["hello"] - ), + zetaParams: new ethers.utils.AbiCoder().encode(["string"], ["hello"]), zetaValueAndGas: 1000, }) ).to.revertedWith("ERC20: insufficient allowance"); }); it("Should burn Zeta token from the zetaTxSender account", async () => { - const initialBalanceDeployer = await zetaTokenNonEthContract.balanceOf( - tssUpdater.address - ); - expect(initialBalanceDeployer.toString()).to.equal( - parseEther("100000") - ); + const initialBalanceDeployer = await zetaTokenNonEthContract.balanceOf(tssUpdater.address); + expect(initialBalanceDeployer.toString()).to.equal(parseEther("100000")); await tssUpdaterApproveConnectorNonEth(); @@ -689,17 +544,12 @@ describe("ZetaConnector tests", () => { destinationChainId: 1, destinationGasLimit: 2500000, message: new ethers.utils.AbiCoder().encode(["string"], ["hello"]), - zetaParams: new ethers.utils.AbiCoder().encode( - ["string"], - ["hello"] - ), + zetaParams: new ethers.utils.AbiCoder().encode(["string"], ["hello"]), zetaValueAndGas: parseEther("1"), }) ).wait(); - const finalBalanceDeployer = await zetaTokenNonEthContract.balanceOf( - tssUpdater.address - ); + const finalBalanceDeployer = await zetaTokenNonEthContract.balanceOf(tssUpdater.address); expect(finalBalanceDeployer.toString()).to.equal(parseEther("99999")); }); @@ -716,44 +566,31 @@ describe("ZetaConnector tests", () => { }); const receipt = await tx.wait(); - const events = await zetaConnectorNonEthContract.queryFilter( - zetaSentFilter, - receipt.blockHash - ); + const events = await zetaConnectorNonEthContract.queryFilter(zetaSentFilter, receipt.blockHash); expect(events.length).to.equal(1); }); it("Should emit `ZetaSent` with tx.origin as the first parameter", async () => { const zetaSentFilter = zetaConnectorNonEthContract.filters.ZetaSent(); - const tx = await zetaConnectorNonEthContract - .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: 0, - }); + const tx = await zetaConnectorNonEthContract.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: 0, + }); const receipt = await tx.wait(); - const events = await zetaConnectorNonEthContract.queryFilter( - zetaSentFilter, - receipt.blockHash - ); + const events = await zetaConnectorNonEthContract.queryFilter(zetaSentFilter, receipt.blockHash); expect(events[0].args[0].toString()).to.equal(randomSigner.address); }); }); describe("onReceive", () => { it("Should not revert if the contract is paused", async () => { - await ( - await zetaConnectorNonEthContract.connect(pauserSigner).pause() - ).wait(); + await (await zetaConnectorNonEthContract.connect(pauserSigner).pause()).wait(); const paused1 = await zetaConnectorNonEthContract.paused(); expect(paused1).to.equal(true); @@ -790,10 +627,7 @@ describe("ZetaConnector tests", () => { /** * Update TSS and Connector addresses so minting fails */ - await zetaTokenNonEthContract.updateTssAndConnectorAddresses( - tssSigner.address, - randomSigner.address - ); + await zetaTokenNonEthContract.updateTssAndConnectorAddresses(tssSigner.address, randomSigner.address); await expect( zetaConnectorNonEthContract @@ -812,9 +646,7 @@ describe("ZetaConnector tests", () => { }); it("Should mint on the receiver address", async () => { - const initialBalanceReceiver = await zetaTokenNonEthContract.balanceOf( - zetaReceiverMockContract.address - ); + const initialBalanceReceiver = await zetaTokenNonEthContract.balanceOf(zetaReceiverMockContract.address); expect(initialBalanceReceiver.toString()).to.equal("0"); await ( @@ -830,16 +662,13 @@ describe("ZetaConnector tests", () => { ) ).wait(); - const finalBalanceReceiver = await zetaTokenNonEthContract.balanceOf( - zetaReceiverMockContract.address - ); + const finalBalanceReceiver = await zetaTokenNonEthContract.balanceOf(zetaReceiverMockContract.address); expect(finalBalanceReceiver.toString()).to.equal("1000"); }); it("Should emit `ZetaReceived` on success", async () => { - const zetaReceivedFilter = - zetaConnectorNonEthContract.filters.ZetaReceived(); + const zetaReceivedFilter = zetaConnectorNonEthContract.filters.ZetaReceived(); const tx = await zetaConnectorNonEthContract .connect(tssSigner) @@ -853,19 +682,14 @@ describe("ZetaConnector tests", () => { ); const receipt = await tx.wait(); - const events = await zetaConnectorNonEthContract.queryFilter( - zetaReceivedFilter, - receipt.blockHash - ); + const events = await zetaConnectorNonEthContract.queryFilter(zetaReceivedFilter, receipt.blockHash); expect(events.length).to.equal(1); }); }); describe("onRevert", () => { it("Should revert if the contract is paused", async () => { - await ( - await zetaConnectorNonEthContract.connect(pauserSigner).pause() - ).wait(); + await (await zetaConnectorNonEthContract.connect(pauserSigner).pause()).wait(); const paused1 = await zetaConnectorNonEthContract.paused(); expect(paused1).to.equal(true); @@ -899,10 +723,7 @@ describe("ZetaConnector tests", () => { }); it("Should mint on the zetaTxSender address", async () => { - const initialBalanceZetaTxSender = - await zetaTokenNonEthContract.balanceOf( - zetaReceiverMockContract.address - ); + const initialBalanceZetaTxSender = await zetaTokenNonEthContract.balanceOf(zetaReceiverMockContract.address); expect(initialBalanceZetaTxSender.toString()).to.equal("0"); await ( @@ -919,18 +740,14 @@ describe("ZetaConnector tests", () => { ) ).wait(); - const finalBalanceZetaTxSender = - await zetaTokenNonEthContract.balanceOf( - zetaReceiverMockContract.address - ); + const finalBalanceZetaTxSender = await zetaTokenNonEthContract.balanceOf(zetaReceiverMockContract.address); expect(finalBalanceZetaTxSender.toString()).to.equal("1000"); }); it("Should emit `ZetaReverted` on success", async () => { await transfer100kZetaNonEth(zetaConnectorNonEthContract.address); - const zetaRevertedFilter = - zetaConnectorNonEthContract.filters.ZetaReverted(); + const zetaRevertedFilter = zetaConnectorNonEthContract.filters.ZetaReverted(); const tx = await zetaConnectorNonEthContract .connect(tssSigner) @@ -945,10 +762,7 @@ describe("ZetaConnector tests", () => { ); const receipt = await tx.wait(); - const events = await zetaConnectorNonEthContract.queryFilter( - zetaRevertedFilter, - receipt.blockHash - ); + const events = await zetaConnectorNonEthContract.queryFilter(zetaRevertedFilter, receipt.blockHash); expect(events.length).to.equal(1); }); }); @@ -956,17 +770,13 @@ describe("ZetaConnector tests", () => { describe("MaxSupply", () => { describe("setMaxSupply", () => { it("Should revert if the caller is not the TSS address", async () => { - await expect( - zetaConnectorNonEthContract.connect(randomSigner).setMaxSupply(0) - ) + await expect(zetaConnectorNonEthContract.connect(randomSigner).setMaxSupply(0)) .to.revertedWith("CallerIsNotTss") .withArgs(randomSigner.address); }); it("Should revert if want to mint more than MaxSupply", async () => { - await zetaConnectorNonEthContract - .connect(tssSigner) - .setMaxSupply(999); + await zetaConnectorNonEthContract.connect(tssSigner).setMaxSupply(999); await expect( zetaConnectorNonEthContract .connect(tssSigner) @@ -989,9 +799,7 @@ describe("ZetaConnector tests", () => { const supplyToAdd = 1000; const initialSupply = await zetaTokenNonEthContract.totalSupply(); - await zetaConnectorNonEthContract - .connect(tssSigner) - .setMaxSupply(initialSupply.add(supplyToAdd)); + await zetaConnectorNonEthContract.connect(tssSigner).setMaxSupply(initialSupply.add(supplyToAdd)); await expect( zetaConnectorNonEthContract diff --git a/test/ZetaTokenConsumer.spec.ts b/test/ZetaTokenConsumer.spec.ts index daabecf9..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, @@ -15,8 +12,9 @@ import { import chai, { expect } from "chai"; import { BigNumber } from "ethers"; import { ethers } from "hardhat"; +import { getNonZetaAddress } from "lib"; -import { getAddress } from "../lib/address.helpers"; +import { getTestAddress } from "../lib/address.helpers"; import { deployZetaNonEth, getZetaTokenConsumerUniV2Strategy, @@ -48,74 +46,14 @@ describe("ZetaTokenConsumer tests", () => { const swapToken = async (signer: SignerWithAddress, tokenAddress: string, expectedAmount: BigNumber) => { const uniswapRouter = UniswapV2Router02__factory.connect(uniswapV2RouterAddr, signer); - const WETH = await uniswapRouter.WETH(); const path = [WETH, tokenAddress]; const tx = await uniswapRouter .connect(signer) .swapETHForExactTokens(expectedAmount, path, signer.address, (await getNow()) + 360, { value: parseEther("10") }); - await tx.wait(); }; - /** - * @todo (andy): WIP, not in use yet - */ - const createPoolV3 = async (signer: SignerWithAddress, tokenAddress: string) => { - const DAI = getAddress("dai", { - customNetworkName: "eth-mainnet", - customZetaNetwork: "mainnet", - }); - - const UNI_NFT_MANAGER_V3 = getAddress("uniswapV3NftManager", { - customNetworkName: "eth-mainnet", - customZetaNetwork: "mainnet", - }); - - const USDC = getAddress("usdc", { - customNetworkName: "eth-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; @@ -124,35 +62,17 @@ describe("ZetaTokenConsumer tests", () => { args: [tssSigner.address, tssUpdater.address], }); - uniswapV2RouterAddr = getAddress("uniswapV2Router02", { - customNetworkName: "eth-mainnet", - customZetaNetwork: "mainnet", - }); + const DAI = getTestAddress("dai", "eth_mainnet"); - const DAI = getAddress("dai", { - customNetworkName: "eth-mainnet", - customZetaNetwork: "mainnet", - }); + USDCAddr = getTestAddress("usdc", "eth_mainnet"); - const UNI_QUOTER_V3 = getAddress("uniswapV3Quoter", { - customNetworkName: "eth-mainnet", - customZetaNetwork: "mainnet", - }); + uniswapV2RouterAddr = getNonZetaAddress("uniswapV2Router02", "eth_mainnet"); - const UNI_ROUTER_V3 = getAddress("uniswapV3Router", { - customNetworkName: "eth-mainnet", - customZetaNetwork: "mainnet", - }); + const UNI_FACTORY_V3 = getNonZetaAddress("uniswapV3Factory", "eth_mainnet"); - const WETH9 = getAddress("weth9", { - customNetworkName: "eth-mainnet", - customZetaNetwork: "mainnet", - }); + const UNI_ROUTER_V3 = getNonZetaAddress("uniswapV3Router", "eth_mainnet"); - USDCAddr = getAddress("usdc", { - customNetworkName: "eth-mainnet", - customZetaNetwork: "mainnet", - }); + const WETH9 = getNonZetaAddress("weth9", "eth_mainnet"); // For testing purposes we use an existing uni v3 pool await swapToken(tssUpdater, DAI, parseEther("10000")); @@ -160,6 +80,7 @@ describe("ZetaTokenConsumer tests", () => { await swapToken(randomSigner, DAI, parseEther("10000")); await swapToken(randomSigner, DAI, parseEther("10000")); await swapToken(randomSigner, DAI, parseEther("10000")); + zetaTokenNonEthAddress = DAI; zetaTokenNonEth = IERC20__factory.connect(zetaTokenNonEthAddress, tssSigner); @@ -169,7 +90,7 @@ describe("ZetaTokenConsumer tests", () => { uniswapV3RouterAddr = UNI_ROUTER_V3; zetaTokenConsumerUniV3 = await getZetaTokenConsumerUniV3Strategy({ - deployParams: [zetaTokenNonEthAddress, uniswapV3RouterAddr, UNI_QUOTER_V3, WETH9, 3000, 3000], + deployParams: [zetaTokenNonEthAddress, uniswapV3RouterAddr, UNI_FACTORY_V3, WETH9, 3000, 3000], }); }); 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/tsconfig.json b/tsconfig.json index 27144d44..ac7c6560 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -17,5 +17,14 @@ "strict": true, "target": "es2020", "typeRoots": ["@types", "./node_modules/@types"] - } + }, + "exclude": [ + "hardhat.config.ts", + "scripts", + "test", + "lib/deterministic-deploy.helpers.ts", + "lib/contracts.constants.ts", + "lib/contracts.helpers.ts", + "lib/ImmutableCreate2Factory/ImmutableCreate2Factory.helpers.ts" + ] } diff --git a/typechain-types/@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.ts b/typechain-types/@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.ts new file mode 100644 index 00000000..ca8f8c17 --- /dev/null +++ b/typechain-types/@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.ts @@ -0,0 +1,369 @@ +/* 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 IUniswapV3FactoryInterface extends utils.Interface { + functions: { + "createPool(address,address,uint24)": FunctionFragment; + "enableFeeAmount(uint24,int24)": FunctionFragment; + "feeAmountTickSpacing(uint24)": FunctionFragment; + "getPool(address,address,uint24)": FunctionFragment; + "owner()": FunctionFragment; + "setOwner(address)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "createPool" + | "enableFeeAmount" + | "feeAmountTickSpacing" + | "getPool" + | "owner" + | "setOwner" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "createPool", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "enableFeeAmount", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "feeAmountTickSpacing", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getPool", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData( + functionFragment: "setOwner", + values: [PromiseOrValue] + ): string; + + decodeFunctionResult(functionFragment: "createPool", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "enableFeeAmount", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "feeAmountTickSpacing", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "getPool", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "setOwner", data: BytesLike): Result; + + events: { + "FeeAmountEnabled(uint24,int24)": EventFragment; + "OwnerChanged(address,address)": EventFragment; + "PoolCreated(address,address,uint24,int24,address)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "FeeAmountEnabled"): EventFragment; + getEvent(nameOrSignatureOrTopic: "OwnerChanged"): EventFragment; + getEvent(nameOrSignatureOrTopic: "PoolCreated"): EventFragment; +} + +export interface FeeAmountEnabledEventObject { + fee: number; + tickSpacing: number; +} +export type FeeAmountEnabledEvent = TypedEvent< + [number, number], + FeeAmountEnabledEventObject +>; + +export type FeeAmountEnabledEventFilter = + TypedEventFilter; + +export interface OwnerChangedEventObject { + oldOwner: string; + newOwner: string; +} +export type OwnerChangedEvent = TypedEvent< + [string, string], + OwnerChangedEventObject +>; + +export type OwnerChangedEventFilter = TypedEventFilter; + +export interface PoolCreatedEventObject { + token0: string; + token1: string; + fee: number; + tickSpacing: number; + pool: string; +} +export type PoolCreatedEvent = TypedEvent< + [string, string, number, number, string], + PoolCreatedEventObject +>; + +export type PoolCreatedEventFilter = TypedEventFilter; + +export interface IUniswapV3Factory extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: IUniswapV3FactoryInterface; + + 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: { + createPool( + tokenA: PromiseOrValue, + tokenB: PromiseOrValue, + fee: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + enableFeeAmount( + fee: PromiseOrValue, + tickSpacing: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + feeAmountTickSpacing( + fee: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[number]>; + + getPool( + tokenA: PromiseOrValue, + tokenB: PromiseOrValue, + fee: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string] & { pool: string }>; + + owner(overrides?: CallOverrides): Promise<[string]>; + + setOwner( + _owner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + createPool( + tokenA: PromiseOrValue, + tokenB: PromiseOrValue, + fee: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + enableFeeAmount( + fee: PromiseOrValue, + tickSpacing: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + feeAmountTickSpacing( + fee: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getPool( + tokenA: PromiseOrValue, + tokenB: PromiseOrValue, + fee: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + setOwner( + _owner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + createPool( + tokenA: PromiseOrValue, + tokenB: PromiseOrValue, + fee: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + enableFeeAmount( + fee: PromiseOrValue, + tickSpacing: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + feeAmountTickSpacing( + fee: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getPool( + tokenA: PromiseOrValue, + tokenB: PromiseOrValue, + fee: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + setOwner( + _owner: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "FeeAmountEnabled(uint24,int24)"( + fee?: PromiseOrValue | null, + tickSpacing?: PromiseOrValue | null + ): FeeAmountEnabledEventFilter; + FeeAmountEnabled( + fee?: PromiseOrValue | null, + tickSpacing?: PromiseOrValue | null + ): FeeAmountEnabledEventFilter; + + "OwnerChanged(address,address)"( + oldOwner?: PromiseOrValue | null, + newOwner?: PromiseOrValue | null + ): OwnerChangedEventFilter; + OwnerChanged( + oldOwner?: PromiseOrValue | null, + newOwner?: PromiseOrValue | null + ): OwnerChangedEventFilter; + + "PoolCreated(address,address,uint24,int24,address)"( + token0?: PromiseOrValue | null, + token1?: PromiseOrValue | null, + fee?: PromiseOrValue | null, + tickSpacing?: null, + pool?: null + ): PoolCreatedEventFilter; + PoolCreated( + token0?: PromiseOrValue | null, + token1?: PromiseOrValue | null, + fee?: PromiseOrValue | null, + tickSpacing?: null, + pool?: null + ): PoolCreatedEventFilter; + }; + + estimateGas: { + createPool( + tokenA: PromiseOrValue, + tokenB: PromiseOrValue, + fee: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + enableFeeAmount( + fee: PromiseOrValue, + tickSpacing: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + feeAmountTickSpacing( + fee: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getPool( + tokenA: PromiseOrValue, + tokenB: PromiseOrValue, + fee: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + setOwner( + _owner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + createPool( + tokenA: PromiseOrValue, + tokenB: PromiseOrValue, + fee: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + enableFeeAmount( + fee: PromiseOrValue, + tickSpacing: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + feeAmountTickSpacing( + fee: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getPool( + tokenA: PromiseOrValue, + tokenB: PromiseOrValue, + fee: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + setOwner( + _owner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/typechain-types/@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.ts b/typechain-types/@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.ts new file mode 100644 index 00000000..c2e8107e --- /dev/null +++ b/typechain-types/@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.ts @@ -0,0 +1,1371 @@ +/* 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 IUniswapV3PoolInterface extends utils.Interface { + functions: { + "burn(int24,int24,uint128)": FunctionFragment; + "collect(address,int24,int24,uint128,uint128)": FunctionFragment; + "collectProtocol(address,uint128,uint128)": FunctionFragment; + "factory()": FunctionFragment; + "fee()": FunctionFragment; + "feeGrowthGlobal0X128()": FunctionFragment; + "feeGrowthGlobal1X128()": FunctionFragment; + "flash(address,uint256,uint256,bytes)": FunctionFragment; + "increaseObservationCardinalityNext(uint16)": FunctionFragment; + "initialize(uint160)": FunctionFragment; + "liquidity()": FunctionFragment; + "maxLiquidityPerTick()": FunctionFragment; + "mint(address,int24,int24,uint128,bytes)": FunctionFragment; + "observations(uint256)": FunctionFragment; + "observe(uint32[])": FunctionFragment; + "positions(bytes32)": FunctionFragment; + "protocolFees()": FunctionFragment; + "setFeeProtocol(uint8,uint8)": FunctionFragment; + "slot0()": FunctionFragment; + "snapshotCumulativesInside(int24,int24)": FunctionFragment; + "swap(address,bool,int256,uint160,bytes)": FunctionFragment; + "tickBitmap(int16)": FunctionFragment; + "tickSpacing()": FunctionFragment; + "ticks(int24)": FunctionFragment; + "token0()": FunctionFragment; + "token1()": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "burn" + | "collect" + | "collectProtocol" + | "factory" + | "fee" + | "feeGrowthGlobal0X128" + | "feeGrowthGlobal1X128" + | "flash" + | "increaseObservationCardinalityNext" + | "initialize" + | "liquidity" + | "maxLiquidityPerTick" + | "mint" + | "observations" + | "observe" + | "positions" + | "protocolFees" + | "setFeeProtocol" + | "slot0" + | "snapshotCumulativesInside" + | "swap" + | "tickBitmap" + | "tickSpacing" + | "ticks" + | "token0" + | "token1" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "burn", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "collect", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "collectProtocol", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData(functionFragment: "factory", values?: undefined): string; + encodeFunctionData(functionFragment: "fee", values?: undefined): string; + encodeFunctionData( + functionFragment: "feeGrowthGlobal0X128", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "feeGrowthGlobal1X128", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "flash", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "increaseObservationCardinalityNext", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "initialize", + values: [PromiseOrValue] + ): string; + encodeFunctionData(functionFragment: "liquidity", values?: undefined): string; + encodeFunctionData( + functionFragment: "maxLiquidityPerTick", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "mint", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "observations", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "observe", + values: [PromiseOrValue[]] + ): string; + encodeFunctionData( + functionFragment: "positions", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "protocolFees", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "setFeeProtocol", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData(functionFragment: "slot0", values?: undefined): string; + encodeFunctionData( + functionFragment: "snapshotCumulativesInside", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "swap", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "tickBitmap", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "tickSpacing", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "ticks", + values: [PromiseOrValue] + ): string; + encodeFunctionData(functionFragment: "token0", values?: undefined): string; + encodeFunctionData(functionFragment: "token1", values?: undefined): string; + + decodeFunctionResult(functionFragment: "burn", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "collect", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "collectProtocol", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "factory", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "fee", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "feeGrowthGlobal0X128", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "feeGrowthGlobal1X128", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "flash", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "increaseObservationCardinalityNext", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "liquidity", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "maxLiquidityPerTick", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "mint", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "observations", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "observe", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "positions", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "protocolFees", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setFeeProtocol", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "slot0", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "snapshotCumulativesInside", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "swap", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "tickBitmap", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "tickSpacing", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "ticks", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "token0", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "token1", data: BytesLike): Result; + + events: { + "Burn(address,int24,int24,uint128,uint256,uint256)": EventFragment; + "Collect(address,address,int24,int24,uint128,uint128)": EventFragment; + "CollectProtocol(address,address,uint128,uint128)": EventFragment; + "Flash(address,address,uint256,uint256,uint256,uint256)": EventFragment; + "IncreaseObservationCardinalityNext(uint16,uint16)": EventFragment; + "Initialize(uint160,int24)": EventFragment; + "Mint(address,address,int24,int24,uint128,uint256,uint256)": EventFragment; + "SetFeeProtocol(uint8,uint8,uint8,uint8)": EventFragment; + "Swap(address,address,int256,int256,uint160,uint128,int24)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "Burn"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Collect"): EventFragment; + getEvent(nameOrSignatureOrTopic: "CollectProtocol"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Flash"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "IncreaseObservationCardinalityNext" + ): EventFragment; + getEvent(nameOrSignatureOrTopic: "Initialize"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Mint"): EventFragment; + getEvent(nameOrSignatureOrTopic: "SetFeeProtocol"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Swap"): EventFragment; +} + +export interface BurnEventObject { + owner: string; + tickLower: number; + tickUpper: number; + amount: BigNumber; + amount0: BigNumber; + amount1: BigNumber; +} +export type BurnEvent = TypedEvent< + [string, number, number, BigNumber, BigNumber, BigNumber], + BurnEventObject +>; + +export type BurnEventFilter = TypedEventFilter; + +export interface CollectEventObject { + owner: string; + recipient: string; + tickLower: number; + tickUpper: number; + amount0: BigNumber; + amount1: BigNumber; +} +export type CollectEvent = TypedEvent< + [string, string, number, number, BigNumber, BigNumber], + CollectEventObject +>; + +export type CollectEventFilter = TypedEventFilter; + +export interface CollectProtocolEventObject { + sender: string; + recipient: string; + amount0: BigNumber; + amount1: BigNumber; +} +export type CollectProtocolEvent = TypedEvent< + [string, string, BigNumber, BigNumber], + CollectProtocolEventObject +>; + +export type CollectProtocolEventFilter = TypedEventFilter; + +export interface FlashEventObject { + sender: string; + recipient: string; + amount0: BigNumber; + amount1: BigNumber; + paid0: BigNumber; + paid1: BigNumber; +} +export type FlashEvent = TypedEvent< + [string, string, BigNumber, BigNumber, BigNumber, BigNumber], + FlashEventObject +>; + +export type FlashEventFilter = TypedEventFilter; + +export interface IncreaseObservationCardinalityNextEventObject { + observationCardinalityNextOld: number; + observationCardinalityNextNew: number; +} +export type IncreaseObservationCardinalityNextEvent = TypedEvent< + [number, number], + IncreaseObservationCardinalityNextEventObject +>; + +export type IncreaseObservationCardinalityNextEventFilter = + TypedEventFilter; + +export interface InitializeEventObject { + sqrtPriceX96: BigNumber; + tick: number; +} +export type InitializeEvent = TypedEvent< + [BigNumber, number], + InitializeEventObject +>; + +export type InitializeEventFilter = TypedEventFilter; + +export interface MintEventObject { + sender: string; + owner: string; + tickLower: number; + tickUpper: number; + amount: BigNumber; + amount0: BigNumber; + amount1: BigNumber; +} +export type MintEvent = TypedEvent< + [string, string, number, number, BigNumber, BigNumber, BigNumber], + MintEventObject +>; + +export type MintEventFilter = TypedEventFilter; + +export interface SetFeeProtocolEventObject { + feeProtocol0Old: number; + feeProtocol1Old: number; + feeProtocol0New: number; + feeProtocol1New: number; +} +export type SetFeeProtocolEvent = TypedEvent< + [number, number, number, number], + SetFeeProtocolEventObject +>; + +export type SetFeeProtocolEventFilter = TypedEventFilter; + +export interface SwapEventObject { + sender: string; + recipient: string; + amount0: BigNumber; + amount1: BigNumber; + sqrtPriceX96: BigNumber; + liquidity: BigNumber; + tick: number; +} +export type SwapEvent = TypedEvent< + [string, string, BigNumber, BigNumber, BigNumber, BigNumber, number], + SwapEventObject +>; + +export type SwapEventFilter = TypedEventFilter; + +export interface IUniswapV3Pool extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: IUniswapV3PoolInterface; + + 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: { + burn( + tickLower: PromiseOrValue, + tickUpper: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + collect( + recipient: PromiseOrValue, + tickLower: PromiseOrValue, + tickUpper: PromiseOrValue, + amount0Requested: PromiseOrValue, + amount1Requested: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + collectProtocol( + recipient: PromiseOrValue, + amount0Requested: PromiseOrValue, + amount1Requested: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + factory(overrides?: CallOverrides): Promise<[string]>; + + fee(overrides?: CallOverrides): Promise<[number]>; + + feeGrowthGlobal0X128(overrides?: CallOverrides): Promise<[BigNumber]>; + + feeGrowthGlobal1X128(overrides?: CallOverrides): Promise<[BigNumber]>; + + flash( + recipient: PromiseOrValue, + amount0: PromiseOrValue, + amount1: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + increaseObservationCardinalityNext( + observationCardinalityNext: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + initialize( + sqrtPriceX96: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + liquidity(overrides?: CallOverrides): Promise<[BigNumber]>; + + maxLiquidityPerTick(overrides?: CallOverrides): Promise<[BigNumber]>; + + mint( + recipient: PromiseOrValue, + tickLower: PromiseOrValue, + tickUpper: PromiseOrValue, + amount: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + observations( + index: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [number, BigNumber, BigNumber, boolean] & { + blockTimestamp: number; + tickCumulative: BigNumber; + secondsPerLiquidityCumulativeX128: BigNumber; + initialized: boolean; + } + >; + + observe( + secondsAgos: PromiseOrValue[], + overrides?: CallOverrides + ): Promise< + [BigNumber[], BigNumber[]] & { + tickCumulatives: BigNumber[]; + secondsPerLiquidityCumulativeX128s: BigNumber[]; + } + >; + + positions( + key: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber, BigNumber, BigNumber, BigNumber] & { + _liquidity: BigNumber; + feeGrowthInside0LastX128: BigNumber; + feeGrowthInside1LastX128: BigNumber; + tokensOwed0: BigNumber; + tokensOwed1: BigNumber; + } + >; + + protocolFees( + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { token0: BigNumber; token1: BigNumber } + >; + + setFeeProtocol( + feeProtocol0: PromiseOrValue, + feeProtocol1: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + slot0( + overrides?: CallOverrides + ): Promise< + [BigNumber, number, number, number, number, number, boolean] & { + sqrtPriceX96: BigNumber; + tick: number; + observationIndex: number; + observationCardinality: number; + observationCardinalityNext: number; + feeProtocol: number; + unlocked: boolean; + } + >; + + snapshotCumulativesInside( + tickLower: PromiseOrValue, + tickUpper: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber, number] & { + tickCumulativeInside: BigNumber; + secondsPerLiquidityInsideX128: BigNumber; + secondsInside: number; + } + >; + + swap( + recipient: PromiseOrValue, + zeroForOne: PromiseOrValue, + amountSpecified: PromiseOrValue, + sqrtPriceLimitX96: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + tickBitmap( + wordPosition: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + tickSpacing(overrides?: CallOverrides): Promise<[number]>; + + ticks( + tick: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [ + BigNumber, + BigNumber, + BigNumber, + BigNumber, + BigNumber, + BigNumber, + number, + boolean + ] & { + liquidityGross: BigNumber; + liquidityNet: BigNumber; + feeGrowthOutside0X128: BigNumber; + feeGrowthOutside1X128: BigNumber; + tickCumulativeOutside: BigNumber; + secondsPerLiquidityOutsideX128: BigNumber; + secondsOutside: number; + initialized: boolean; + } + >; + + token0(overrides?: CallOverrides): Promise<[string]>; + + token1(overrides?: CallOverrides): Promise<[string]>; + }; + + burn( + tickLower: PromiseOrValue, + tickUpper: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + collect( + recipient: PromiseOrValue, + tickLower: PromiseOrValue, + tickUpper: PromiseOrValue, + amount0Requested: PromiseOrValue, + amount1Requested: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + collectProtocol( + recipient: PromiseOrValue, + amount0Requested: PromiseOrValue, + amount1Requested: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + factory(overrides?: CallOverrides): Promise; + + fee(overrides?: CallOverrides): Promise; + + feeGrowthGlobal0X128(overrides?: CallOverrides): Promise; + + feeGrowthGlobal1X128(overrides?: CallOverrides): Promise; + + flash( + recipient: PromiseOrValue, + amount0: PromiseOrValue, + amount1: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + increaseObservationCardinalityNext( + observationCardinalityNext: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + initialize( + sqrtPriceX96: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + liquidity(overrides?: CallOverrides): Promise; + + maxLiquidityPerTick(overrides?: CallOverrides): Promise; + + mint( + recipient: PromiseOrValue, + tickLower: PromiseOrValue, + tickUpper: PromiseOrValue, + amount: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + observations( + index: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [number, BigNumber, BigNumber, boolean] & { + blockTimestamp: number; + tickCumulative: BigNumber; + secondsPerLiquidityCumulativeX128: BigNumber; + initialized: boolean; + } + >; + + observe( + secondsAgos: PromiseOrValue[], + overrides?: CallOverrides + ): Promise< + [BigNumber[], BigNumber[]] & { + tickCumulatives: BigNumber[]; + secondsPerLiquidityCumulativeX128s: BigNumber[]; + } + >; + + positions( + key: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber, BigNumber, BigNumber, BigNumber] & { + _liquidity: BigNumber; + feeGrowthInside0LastX128: BigNumber; + feeGrowthInside1LastX128: BigNumber; + tokensOwed0: BigNumber; + tokensOwed1: BigNumber; + } + >; + + protocolFees( + overrides?: CallOverrides + ): Promise<[BigNumber, BigNumber] & { token0: BigNumber; token1: BigNumber }>; + + setFeeProtocol( + feeProtocol0: PromiseOrValue, + feeProtocol1: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + slot0( + overrides?: CallOverrides + ): Promise< + [BigNumber, number, number, number, number, number, boolean] & { + sqrtPriceX96: BigNumber; + tick: number; + observationIndex: number; + observationCardinality: number; + observationCardinalityNext: number; + feeProtocol: number; + unlocked: boolean; + } + >; + + snapshotCumulativesInside( + tickLower: PromiseOrValue, + tickUpper: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber, number] & { + tickCumulativeInside: BigNumber; + secondsPerLiquidityInsideX128: BigNumber; + secondsInside: number; + } + >; + + swap( + recipient: PromiseOrValue, + zeroForOne: PromiseOrValue, + amountSpecified: PromiseOrValue, + sqrtPriceLimitX96: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + tickBitmap( + wordPosition: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + tickSpacing(overrides?: CallOverrides): Promise; + + ticks( + tick: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [ + BigNumber, + BigNumber, + BigNumber, + BigNumber, + BigNumber, + BigNumber, + number, + boolean + ] & { + liquidityGross: BigNumber; + liquidityNet: BigNumber; + feeGrowthOutside0X128: BigNumber; + feeGrowthOutside1X128: BigNumber; + tickCumulativeOutside: BigNumber; + secondsPerLiquidityOutsideX128: BigNumber; + secondsOutside: number; + initialized: boolean; + } + >; + + token0(overrides?: CallOverrides): Promise; + + token1(overrides?: CallOverrides): Promise; + + callStatic: { + burn( + tickLower: PromiseOrValue, + tickUpper: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { amount0: BigNumber; amount1: BigNumber } + >; + + collect( + recipient: PromiseOrValue, + tickLower: PromiseOrValue, + tickUpper: PromiseOrValue, + amount0Requested: PromiseOrValue, + amount1Requested: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { amount0: BigNumber; amount1: BigNumber } + >; + + collectProtocol( + recipient: PromiseOrValue, + amount0Requested: PromiseOrValue, + amount1Requested: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { amount0: BigNumber; amount1: BigNumber } + >; + + factory(overrides?: CallOverrides): Promise; + + fee(overrides?: CallOverrides): Promise; + + feeGrowthGlobal0X128(overrides?: CallOverrides): Promise; + + feeGrowthGlobal1X128(overrides?: CallOverrides): Promise; + + flash( + recipient: PromiseOrValue, + amount0: PromiseOrValue, + amount1: PromiseOrValue, + data: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + increaseObservationCardinalityNext( + observationCardinalityNext: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + initialize( + sqrtPriceX96: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + liquidity(overrides?: CallOverrides): Promise; + + maxLiquidityPerTick(overrides?: CallOverrides): Promise; + + mint( + recipient: PromiseOrValue, + tickLower: PromiseOrValue, + tickUpper: PromiseOrValue, + amount: PromiseOrValue, + data: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { amount0: BigNumber; amount1: BigNumber } + >; + + observations( + index: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [number, BigNumber, BigNumber, boolean] & { + blockTimestamp: number; + tickCumulative: BigNumber; + secondsPerLiquidityCumulativeX128: BigNumber; + initialized: boolean; + } + >; + + observe( + secondsAgos: PromiseOrValue[], + overrides?: CallOverrides + ): Promise< + [BigNumber[], BigNumber[]] & { + tickCumulatives: BigNumber[]; + secondsPerLiquidityCumulativeX128s: BigNumber[]; + } + >; + + positions( + key: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber, BigNumber, BigNumber, BigNumber] & { + _liquidity: BigNumber; + feeGrowthInside0LastX128: BigNumber; + feeGrowthInside1LastX128: BigNumber; + tokensOwed0: BigNumber; + tokensOwed1: BigNumber; + } + >; + + protocolFees( + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { token0: BigNumber; token1: BigNumber } + >; + + setFeeProtocol( + feeProtocol0: PromiseOrValue, + feeProtocol1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + slot0( + overrides?: CallOverrides + ): Promise< + [BigNumber, number, number, number, number, number, boolean] & { + sqrtPriceX96: BigNumber; + tick: number; + observationIndex: number; + observationCardinality: number; + observationCardinalityNext: number; + feeProtocol: number; + unlocked: boolean; + } + >; + + snapshotCumulativesInside( + tickLower: PromiseOrValue, + tickUpper: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber, number] & { + tickCumulativeInside: BigNumber; + secondsPerLiquidityInsideX128: BigNumber; + secondsInside: number; + } + >; + + swap( + recipient: PromiseOrValue, + zeroForOne: PromiseOrValue, + amountSpecified: PromiseOrValue, + sqrtPriceLimitX96: PromiseOrValue, + data: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { amount0: BigNumber; amount1: BigNumber } + >; + + tickBitmap( + wordPosition: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + tickSpacing(overrides?: CallOverrides): Promise; + + ticks( + tick: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [ + BigNumber, + BigNumber, + BigNumber, + BigNumber, + BigNumber, + BigNumber, + number, + boolean + ] & { + liquidityGross: BigNumber; + liquidityNet: BigNumber; + feeGrowthOutside0X128: BigNumber; + feeGrowthOutside1X128: BigNumber; + tickCumulativeOutside: BigNumber; + secondsPerLiquidityOutsideX128: BigNumber; + secondsOutside: number; + initialized: boolean; + } + >; + + token0(overrides?: CallOverrides): Promise; + + token1(overrides?: CallOverrides): Promise; + }; + + filters: { + "Burn(address,int24,int24,uint128,uint256,uint256)"( + owner?: PromiseOrValue | null, + tickLower?: PromiseOrValue | null, + tickUpper?: PromiseOrValue | null, + amount?: null, + amount0?: null, + amount1?: null + ): BurnEventFilter; + Burn( + owner?: PromiseOrValue | null, + tickLower?: PromiseOrValue | null, + tickUpper?: PromiseOrValue | null, + amount?: null, + amount0?: null, + amount1?: null + ): BurnEventFilter; + + "Collect(address,address,int24,int24,uint128,uint128)"( + owner?: PromiseOrValue | null, + recipient?: null, + tickLower?: PromiseOrValue | null, + tickUpper?: PromiseOrValue | null, + amount0?: null, + amount1?: null + ): CollectEventFilter; + Collect( + owner?: PromiseOrValue | null, + recipient?: null, + tickLower?: PromiseOrValue | null, + tickUpper?: PromiseOrValue | null, + amount0?: null, + amount1?: null + ): CollectEventFilter; + + "CollectProtocol(address,address,uint128,uint128)"( + sender?: PromiseOrValue | null, + recipient?: PromiseOrValue | null, + amount0?: null, + amount1?: null + ): CollectProtocolEventFilter; + CollectProtocol( + sender?: PromiseOrValue | null, + recipient?: PromiseOrValue | null, + amount0?: null, + amount1?: null + ): CollectProtocolEventFilter; + + "Flash(address,address,uint256,uint256,uint256,uint256)"( + sender?: PromiseOrValue | null, + recipient?: PromiseOrValue | null, + amount0?: null, + amount1?: null, + paid0?: null, + paid1?: null + ): FlashEventFilter; + Flash( + sender?: PromiseOrValue | null, + recipient?: PromiseOrValue | null, + amount0?: null, + amount1?: null, + paid0?: null, + paid1?: null + ): FlashEventFilter; + + "IncreaseObservationCardinalityNext(uint16,uint16)"( + observationCardinalityNextOld?: null, + observationCardinalityNextNew?: null + ): IncreaseObservationCardinalityNextEventFilter; + IncreaseObservationCardinalityNext( + observationCardinalityNextOld?: null, + observationCardinalityNextNew?: null + ): IncreaseObservationCardinalityNextEventFilter; + + "Initialize(uint160,int24)"( + sqrtPriceX96?: null, + tick?: null + ): InitializeEventFilter; + Initialize(sqrtPriceX96?: null, tick?: null): InitializeEventFilter; + + "Mint(address,address,int24,int24,uint128,uint256,uint256)"( + sender?: null, + owner?: PromiseOrValue | null, + tickLower?: PromiseOrValue | null, + tickUpper?: PromiseOrValue | null, + amount?: null, + amount0?: null, + amount1?: null + ): MintEventFilter; + Mint( + sender?: null, + owner?: PromiseOrValue | null, + tickLower?: PromiseOrValue | null, + tickUpper?: PromiseOrValue | null, + amount?: null, + amount0?: null, + amount1?: null + ): MintEventFilter; + + "SetFeeProtocol(uint8,uint8,uint8,uint8)"( + feeProtocol0Old?: null, + feeProtocol1Old?: null, + feeProtocol0New?: null, + feeProtocol1New?: null + ): SetFeeProtocolEventFilter; + SetFeeProtocol( + feeProtocol0Old?: null, + feeProtocol1Old?: null, + feeProtocol0New?: null, + feeProtocol1New?: null + ): SetFeeProtocolEventFilter; + + "Swap(address,address,int256,int256,uint160,uint128,int24)"( + sender?: PromiseOrValue | null, + recipient?: PromiseOrValue | null, + amount0?: null, + amount1?: null, + sqrtPriceX96?: null, + liquidity?: null, + tick?: null + ): SwapEventFilter; + Swap( + sender?: PromiseOrValue | null, + recipient?: PromiseOrValue | null, + amount0?: null, + amount1?: null, + sqrtPriceX96?: null, + liquidity?: null, + tick?: null + ): SwapEventFilter; + }; + + estimateGas: { + burn( + tickLower: PromiseOrValue, + tickUpper: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + collect( + recipient: PromiseOrValue, + tickLower: PromiseOrValue, + tickUpper: PromiseOrValue, + amount0Requested: PromiseOrValue, + amount1Requested: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + collectProtocol( + recipient: PromiseOrValue, + amount0Requested: PromiseOrValue, + amount1Requested: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + factory(overrides?: CallOverrides): Promise; + + fee(overrides?: CallOverrides): Promise; + + feeGrowthGlobal0X128(overrides?: CallOverrides): Promise; + + feeGrowthGlobal1X128(overrides?: CallOverrides): Promise; + + flash( + recipient: PromiseOrValue, + amount0: PromiseOrValue, + amount1: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + increaseObservationCardinalityNext( + observationCardinalityNext: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + initialize( + sqrtPriceX96: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + liquidity(overrides?: CallOverrides): Promise; + + maxLiquidityPerTick(overrides?: CallOverrides): Promise; + + mint( + recipient: PromiseOrValue, + tickLower: PromiseOrValue, + tickUpper: PromiseOrValue, + amount: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + observations( + index: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + observe( + secondsAgos: PromiseOrValue[], + overrides?: CallOverrides + ): Promise; + + positions( + key: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + protocolFees(overrides?: CallOverrides): Promise; + + setFeeProtocol( + feeProtocol0: PromiseOrValue, + feeProtocol1: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + slot0(overrides?: CallOverrides): Promise; + + snapshotCumulativesInside( + tickLower: PromiseOrValue, + tickUpper: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + swap( + recipient: PromiseOrValue, + zeroForOne: PromiseOrValue, + amountSpecified: PromiseOrValue, + sqrtPriceLimitX96: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + tickBitmap( + wordPosition: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + tickSpacing(overrides?: CallOverrides): Promise; + + ticks( + tick: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + token0(overrides?: CallOverrides): Promise; + + token1(overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + burn( + tickLower: PromiseOrValue, + tickUpper: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + collect( + recipient: PromiseOrValue, + tickLower: PromiseOrValue, + tickUpper: PromiseOrValue, + amount0Requested: PromiseOrValue, + amount1Requested: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + collectProtocol( + recipient: PromiseOrValue, + amount0Requested: PromiseOrValue, + amount1Requested: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + factory(overrides?: CallOverrides): Promise; + + fee(overrides?: CallOverrides): Promise; + + feeGrowthGlobal0X128( + overrides?: CallOverrides + ): Promise; + + feeGrowthGlobal1X128( + overrides?: CallOverrides + ): Promise; + + flash( + recipient: PromiseOrValue, + amount0: PromiseOrValue, + amount1: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + increaseObservationCardinalityNext( + observationCardinalityNext: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + initialize( + sqrtPriceX96: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + liquidity(overrides?: CallOverrides): Promise; + + maxLiquidityPerTick( + overrides?: CallOverrides + ): Promise; + + mint( + recipient: PromiseOrValue, + tickLower: PromiseOrValue, + tickUpper: PromiseOrValue, + amount: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + observations( + index: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + observe( + secondsAgos: PromiseOrValue[], + overrides?: CallOverrides + ): Promise; + + positions( + key: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + protocolFees(overrides?: CallOverrides): Promise; + + setFeeProtocol( + feeProtocol0: PromiseOrValue, + feeProtocol1: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + slot0(overrides?: CallOverrides): Promise; + + snapshotCumulativesInside( + tickLower: PromiseOrValue, + tickUpper: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + swap( + recipient: PromiseOrValue, + zeroForOne: PromiseOrValue, + amountSpecified: PromiseOrValue, + sqrtPriceLimitX96: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + tickBitmap( + wordPosition: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + tickSpacing(overrides?: CallOverrides): Promise; + + ticks( + tick: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + token0(overrides?: CallOverrides): Promise; + + token1(overrides?: CallOverrides): Promise; + }; +} diff --git a/typechain-types/@uniswap/v3-core/contracts/interfaces/index.ts b/typechain-types/@uniswap/v3-core/contracts/interfaces/index.ts index 3b69c538..fc5354ca 100644 --- a/typechain-types/@uniswap/v3-core/contracts/interfaces/index.ts +++ b/typechain-types/@uniswap/v3-core/contracts/interfaces/index.ts @@ -3,3 +3,7 @@ /* eslint-disable */ import type * as callback from "./callback"; export type { callback }; +import type * as pool from "./pool"; +export type { pool }; +export type { IUniswapV3Factory } from "./IUniswapV3Factory"; +export type { IUniswapV3Pool } from "./IUniswapV3Pool"; diff --git a/typechain-types/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.ts b/typechain-types/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.ts new file mode 100644 index 00000000..766a57b8 --- /dev/null +++ b/typechain-types/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.ts @@ -0,0 +1,421 @@ +/* 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 IUniswapV3PoolActionsInterface extends utils.Interface { + functions: { + "burn(int24,int24,uint128)": FunctionFragment; + "collect(address,int24,int24,uint128,uint128)": FunctionFragment; + "flash(address,uint256,uint256,bytes)": FunctionFragment; + "increaseObservationCardinalityNext(uint16)": FunctionFragment; + "initialize(uint160)": FunctionFragment; + "mint(address,int24,int24,uint128,bytes)": FunctionFragment; + "swap(address,bool,int256,uint160,bytes)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "burn" + | "collect" + | "flash" + | "increaseObservationCardinalityNext" + | "initialize" + | "mint" + | "swap" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "burn", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "collect", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "flash", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "increaseObservationCardinalityNext", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "initialize", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "mint", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "swap", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + + decodeFunctionResult(functionFragment: "burn", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "collect", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "flash", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "increaseObservationCardinalityNext", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "mint", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "swap", data: BytesLike): Result; + + events: {}; +} + +export interface IUniswapV3PoolActions extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: IUniswapV3PoolActionsInterface; + + 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: { + burn( + tickLower: PromiseOrValue, + tickUpper: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + collect( + recipient: PromiseOrValue, + tickLower: PromiseOrValue, + tickUpper: PromiseOrValue, + amount0Requested: PromiseOrValue, + amount1Requested: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + flash( + recipient: PromiseOrValue, + amount0: PromiseOrValue, + amount1: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + increaseObservationCardinalityNext( + observationCardinalityNext: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + initialize( + sqrtPriceX96: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mint( + recipient: PromiseOrValue, + tickLower: PromiseOrValue, + tickUpper: PromiseOrValue, + amount: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + swap( + recipient: PromiseOrValue, + zeroForOne: PromiseOrValue, + amountSpecified: PromiseOrValue, + sqrtPriceLimitX96: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + burn( + tickLower: PromiseOrValue, + tickUpper: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + collect( + recipient: PromiseOrValue, + tickLower: PromiseOrValue, + tickUpper: PromiseOrValue, + amount0Requested: PromiseOrValue, + amount1Requested: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + flash( + recipient: PromiseOrValue, + amount0: PromiseOrValue, + amount1: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + increaseObservationCardinalityNext( + observationCardinalityNext: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + initialize( + sqrtPriceX96: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mint( + recipient: PromiseOrValue, + tickLower: PromiseOrValue, + tickUpper: PromiseOrValue, + amount: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + swap( + recipient: PromiseOrValue, + zeroForOne: PromiseOrValue, + amountSpecified: PromiseOrValue, + sqrtPriceLimitX96: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + burn( + tickLower: PromiseOrValue, + tickUpper: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { amount0: BigNumber; amount1: BigNumber } + >; + + collect( + recipient: PromiseOrValue, + tickLower: PromiseOrValue, + tickUpper: PromiseOrValue, + amount0Requested: PromiseOrValue, + amount1Requested: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { amount0: BigNumber; amount1: BigNumber } + >; + + flash( + recipient: PromiseOrValue, + amount0: PromiseOrValue, + amount1: PromiseOrValue, + data: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + increaseObservationCardinalityNext( + observationCardinalityNext: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + initialize( + sqrtPriceX96: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + mint( + recipient: PromiseOrValue, + tickLower: PromiseOrValue, + tickUpper: PromiseOrValue, + amount: PromiseOrValue, + data: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { amount0: BigNumber; amount1: BigNumber } + >; + + swap( + recipient: PromiseOrValue, + zeroForOne: PromiseOrValue, + amountSpecified: PromiseOrValue, + sqrtPriceLimitX96: PromiseOrValue, + data: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { amount0: BigNumber; amount1: BigNumber } + >; + }; + + filters: {}; + + estimateGas: { + burn( + tickLower: PromiseOrValue, + tickUpper: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + collect( + recipient: PromiseOrValue, + tickLower: PromiseOrValue, + tickUpper: PromiseOrValue, + amount0Requested: PromiseOrValue, + amount1Requested: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + flash( + recipient: PromiseOrValue, + amount0: PromiseOrValue, + amount1: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + increaseObservationCardinalityNext( + observationCardinalityNext: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + initialize( + sqrtPriceX96: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mint( + recipient: PromiseOrValue, + tickLower: PromiseOrValue, + tickUpper: PromiseOrValue, + amount: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + swap( + recipient: PromiseOrValue, + zeroForOne: PromiseOrValue, + amountSpecified: PromiseOrValue, + sqrtPriceLimitX96: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + burn( + tickLower: PromiseOrValue, + tickUpper: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + collect( + recipient: PromiseOrValue, + tickLower: PromiseOrValue, + tickUpper: PromiseOrValue, + amount0Requested: PromiseOrValue, + amount1Requested: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + flash( + recipient: PromiseOrValue, + amount0: PromiseOrValue, + amount1: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + increaseObservationCardinalityNext( + observationCardinalityNext: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + initialize( + sqrtPriceX96: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mint( + recipient: PromiseOrValue, + tickLower: PromiseOrValue, + tickUpper: PromiseOrValue, + amount: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + swap( + recipient: PromiseOrValue, + zeroForOne: PromiseOrValue, + amountSpecified: PromiseOrValue, + sqrtPriceLimitX96: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/typechain-types/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.ts b/typechain-types/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.ts new file mode 100644 index 00000000..654cea43 --- /dev/null +++ b/typechain-types/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.ts @@ -0,0 +1,175 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + 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 IUniswapV3PoolDerivedStateInterface extends utils.Interface { + functions: { + "observe(uint32[])": FunctionFragment; + "snapshotCumulativesInside(int24,int24)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: "observe" | "snapshotCumulativesInside" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "observe", + values: [PromiseOrValue[]] + ): string; + encodeFunctionData( + functionFragment: "snapshotCumulativesInside", + values: [PromiseOrValue, PromiseOrValue] + ): string; + + decodeFunctionResult(functionFragment: "observe", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "snapshotCumulativesInside", + data: BytesLike + ): Result; + + events: {}; +} + +export interface IUniswapV3PoolDerivedState extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: IUniswapV3PoolDerivedStateInterface; + + 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: { + observe( + secondsAgos: PromiseOrValue[], + overrides?: CallOverrides + ): Promise< + [BigNumber[], BigNumber[]] & { + tickCumulatives: BigNumber[]; + secondsPerLiquidityCumulativeX128s: BigNumber[]; + } + >; + + snapshotCumulativesInside( + tickLower: PromiseOrValue, + tickUpper: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber, number] & { + tickCumulativeInside: BigNumber; + secondsPerLiquidityInsideX128: BigNumber; + secondsInside: number; + } + >; + }; + + observe( + secondsAgos: PromiseOrValue[], + overrides?: CallOverrides + ): Promise< + [BigNumber[], BigNumber[]] & { + tickCumulatives: BigNumber[]; + secondsPerLiquidityCumulativeX128s: BigNumber[]; + } + >; + + snapshotCumulativesInside( + tickLower: PromiseOrValue, + tickUpper: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber, number] & { + tickCumulativeInside: BigNumber; + secondsPerLiquidityInsideX128: BigNumber; + secondsInside: number; + } + >; + + callStatic: { + observe( + secondsAgos: PromiseOrValue[], + overrides?: CallOverrides + ): Promise< + [BigNumber[], BigNumber[]] & { + tickCumulatives: BigNumber[]; + secondsPerLiquidityCumulativeX128s: BigNumber[]; + } + >; + + snapshotCumulativesInside( + tickLower: PromiseOrValue, + tickUpper: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber, number] & { + tickCumulativeInside: BigNumber; + secondsPerLiquidityInsideX128: BigNumber; + secondsInside: number; + } + >; + }; + + filters: {}; + + estimateGas: { + observe( + secondsAgos: PromiseOrValue[], + overrides?: CallOverrides + ): Promise; + + snapshotCumulativesInside( + tickLower: PromiseOrValue, + tickUpper: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + populateTransaction: { + observe( + secondsAgos: PromiseOrValue[], + overrides?: CallOverrides + ): Promise; + + snapshotCumulativesInside( + tickLower: PromiseOrValue, + tickUpper: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; +} diff --git a/typechain-types/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.ts b/typechain-types/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.ts new file mode 100644 index 00000000..65eff863 --- /dev/null +++ b/typechain-types/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.ts @@ -0,0 +1,340 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + Signer, + utils, +} from "ethers"; +import type { EventFragment } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../../../common"; + +export interface IUniswapV3PoolEventsInterface extends utils.Interface { + functions: {}; + + events: { + "Burn(address,int24,int24,uint128,uint256,uint256)": EventFragment; + "Collect(address,address,int24,int24,uint128,uint128)": EventFragment; + "CollectProtocol(address,address,uint128,uint128)": EventFragment; + "Flash(address,address,uint256,uint256,uint256,uint256)": EventFragment; + "IncreaseObservationCardinalityNext(uint16,uint16)": EventFragment; + "Initialize(uint160,int24)": EventFragment; + "Mint(address,address,int24,int24,uint128,uint256,uint256)": EventFragment; + "SetFeeProtocol(uint8,uint8,uint8,uint8)": EventFragment; + "Swap(address,address,int256,int256,uint160,uint128,int24)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "Burn"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Collect"): EventFragment; + getEvent(nameOrSignatureOrTopic: "CollectProtocol"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Flash"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "IncreaseObservationCardinalityNext" + ): EventFragment; + getEvent(nameOrSignatureOrTopic: "Initialize"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Mint"): EventFragment; + getEvent(nameOrSignatureOrTopic: "SetFeeProtocol"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Swap"): EventFragment; +} + +export interface BurnEventObject { + owner: string; + tickLower: number; + tickUpper: number; + amount: BigNumber; + amount0: BigNumber; + amount1: BigNumber; +} +export type BurnEvent = TypedEvent< + [string, number, number, BigNumber, BigNumber, BigNumber], + BurnEventObject +>; + +export type BurnEventFilter = TypedEventFilter; + +export interface CollectEventObject { + owner: string; + recipient: string; + tickLower: number; + tickUpper: number; + amount0: BigNumber; + amount1: BigNumber; +} +export type CollectEvent = TypedEvent< + [string, string, number, number, BigNumber, BigNumber], + CollectEventObject +>; + +export type CollectEventFilter = TypedEventFilter; + +export interface CollectProtocolEventObject { + sender: string; + recipient: string; + amount0: BigNumber; + amount1: BigNumber; +} +export type CollectProtocolEvent = TypedEvent< + [string, string, BigNumber, BigNumber], + CollectProtocolEventObject +>; + +export type CollectProtocolEventFilter = TypedEventFilter; + +export interface FlashEventObject { + sender: string; + recipient: string; + amount0: BigNumber; + amount1: BigNumber; + paid0: BigNumber; + paid1: BigNumber; +} +export type FlashEvent = TypedEvent< + [string, string, BigNumber, BigNumber, BigNumber, BigNumber], + FlashEventObject +>; + +export type FlashEventFilter = TypedEventFilter; + +export interface IncreaseObservationCardinalityNextEventObject { + observationCardinalityNextOld: number; + observationCardinalityNextNew: number; +} +export type IncreaseObservationCardinalityNextEvent = TypedEvent< + [number, number], + IncreaseObservationCardinalityNextEventObject +>; + +export type IncreaseObservationCardinalityNextEventFilter = + TypedEventFilter; + +export interface InitializeEventObject { + sqrtPriceX96: BigNumber; + tick: number; +} +export type InitializeEvent = TypedEvent< + [BigNumber, number], + InitializeEventObject +>; + +export type InitializeEventFilter = TypedEventFilter; + +export interface MintEventObject { + sender: string; + owner: string; + tickLower: number; + tickUpper: number; + amount: BigNumber; + amount0: BigNumber; + amount1: BigNumber; +} +export type MintEvent = TypedEvent< + [string, string, number, number, BigNumber, BigNumber, BigNumber], + MintEventObject +>; + +export type MintEventFilter = TypedEventFilter; + +export interface SetFeeProtocolEventObject { + feeProtocol0Old: number; + feeProtocol1Old: number; + feeProtocol0New: number; + feeProtocol1New: number; +} +export type SetFeeProtocolEvent = TypedEvent< + [number, number, number, number], + SetFeeProtocolEventObject +>; + +export type SetFeeProtocolEventFilter = TypedEventFilter; + +export interface SwapEventObject { + sender: string; + recipient: string; + amount0: BigNumber; + amount1: BigNumber; + sqrtPriceX96: BigNumber; + liquidity: BigNumber; + tick: number; +} +export type SwapEvent = TypedEvent< + [string, string, BigNumber, BigNumber, BigNumber, BigNumber, number], + SwapEventObject +>; + +export type SwapEventFilter = TypedEventFilter; + +export interface IUniswapV3PoolEvents extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: IUniswapV3PoolEventsInterface; + + 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: { + "Burn(address,int24,int24,uint128,uint256,uint256)"( + owner?: PromiseOrValue | null, + tickLower?: PromiseOrValue | null, + tickUpper?: PromiseOrValue | null, + amount?: null, + amount0?: null, + amount1?: null + ): BurnEventFilter; + Burn( + owner?: PromiseOrValue | null, + tickLower?: PromiseOrValue | null, + tickUpper?: PromiseOrValue | null, + amount?: null, + amount0?: null, + amount1?: null + ): BurnEventFilter; + + "Collect(address,address,int24,int24,uint128,uint128)"( + owner?: PromiseOrValue | null, + recipient?: null, + tickLower?: PromiseOrValue | null, + tickUpper?: PromiseOrValue | null, + amount0?: null, + amount1?: null + ): CollectEventFilter; + Collect( + owner?: PromiseOrValue | null, + recipient?: null, + tickLower?: PromiseOrValue | null, + tickUpper?: PromiseOrValue | null, + amount0?: null, + amount1?: null + ): CollectEventFilter; + + "CollectProtocol(address,address,uint128,uint128)"( + sender?: PromiseOrValue | null, + recipient?: PromiseOrValue | null, + amount0?: null, + amount1?: null + ): CollectProtocolEventFilter; + CollectProtocol( + sender?: PromiseOrValue | null, + recipient?: PromiseOrValue | null, + amount0?: null, + amount1?: null + ): CollectProtocolEventFilter; + + "Flash(address,address,uint256,uint256,uint256,uint256)"( + sender?: PromiseOrValue | null, + recipient?: PromiseOrValue | null, + amount0?: null, + amount1?: null, + paid0?: null, + paid1?: null + ): FlashEventFilter; + Flash( + sender?: PromiseOrValue | null, + recipient?: PromiseOrValue | null, + amount0?: null, + amount1?: null, + paid0?: null, + paid1?: null + ): FlashEventFilter; + + "IncreaseObservationCardinalityNext(uint16,uint16)"( + observationCardinalityNextOld?: null, + observationCardinalityNextNew?: null + ): IncreaseObservationCardinalityNextEventFilter; + IncreaseObservationCardinalityNext( + observationCardinalityNextOld?: null, + observationCardinalityNextNew?: null + ): IncreaseObservationCardinalityNextEventFilter; + + "Initialize(uint160,int24)"( + sqrtPriceX96?: null, + tick?: null + ): InitializeEventFilter; + Initialize(sqrtPriceX96?: null, tick?: null): InitializeEventFilter; + + "Mint(address,address,int24,int24,uint128,uint256,uint256)"( + sender?: null, + owner?: PromiseOrValue | null, + tickLower?: PromiseOrValue | null, + tickUpper?: PromiseOrValue | null, + amount?: null, + amount0?: null, + amount1?: null + ): MintEventFilter; + Mint( + sender?: null, + owner?: PromiseOrValue | null, + tickLower?: PromiseOrValue | null, + tickUpper?: PromiseOrValue | null, + amount?: null, + amount0?: null, + amount1?: null + ): MintEventFilter; + + "SetFeeProtocol(uint8,uint8,uint8,uint8)"( + feeProtocol0Old?: null, + feeProtocol1Old?: null, + feeProtocol0New?: null, + feeProtocol1New?: null + ): SetFeeProtocolEventFilter; + SetFeeProtocol( + feeProtocol0Old?: null, + feeProtocol1Old?: null, + feeProtocol0New?: null, + feeProtocol1New?: null + ): SetFeeProtocolEventFilter; + + "Swap(address,address,int256,int256,uint160,uint128,int24)"( + sender?: PromiseOrValue | null, + recipient?: PromiseOrValue | null, + amount0?: null, + amount1?: null, + sqrtPriceX96?: null, + liquidity?: null, + tick?: null + ): SwapEventFilter; + Swap( + sender?: PromiseOrValue | null, + recipient?: PromiseOrValue | null, + amount0?: null, + amount1?: null, + sqrtPriceX96?: null, + liquidity?: null, + tick?: null + ): SwapEventFilter; + }; + + estimateGas: {}; + + populateTransaction: {}; +} diff --git a/typechain-types/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.ts b/typechain-types/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.ts new file mode 100644 index 00000000..828e2a51 --- /dev/null +++ b/typechain-types/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.ts @@ -0,0 +1,169 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BytesLike, + CallOverrides, + 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 IUniswapV3PoolImmutablesInterface extends utils.Interface { + functions: { + "factory()": FunctionFragment; + "fee()": FunctionFragment; + "maxLiquidityPerTick()": FunctionFragment; + "tickSpacing()": FunctionFragment; + "token0()": FunctionFragment; + "token1()": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "factory" + | "fee" + | "maxLiquidityPerTick" + | "tickSpacing" + | "token0" + | "token1" + ): FunctionFragment; + + encodeFunctionData(functionFragment: "factory", values?: undefined): string; + encodeFunctionData(functionFragment: "fee", values?: undefined): string; + encodeFunctionData( + functionFragment: "maxLiquidityPerTick", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "tickSpacing", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "token0", values?: undefined): string; + encodeFunctionData(functionFragment: "token1", values?: undefined): string; + + decodeFunctionResult(functionFragment: "factory", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "fee", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "maxLiquidityPerTick", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "tickSpacing", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "token0", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "token1", data: BytesLike): Result; + + events: {}; +} + +export interface IUniswapV3PoolImmutables extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: IUniswapV3PoolImmutablesInterface; + + 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: { + factory(overrides?: CallOverrides): Promise<[string]>; + + fee(overrides?: CallOverrides): Promise<[number]>; + + maxLiquidityPerTick(overrides?: CallOverrides): Promise<[BigNumber]>; + + tickSpacing(overrides?: CallOverrides): Promise<[number]>; + + token0(overrides?: CallOverrides): Promise<[string]>; + + token1(overrides?: CallOverrides): Promise<[string]>; + }; + + factory(overrides?: CallOverrides): Promise; + + fee(overrides?: CallOverrides): Promise; + + maxLiquidityPerTick(overrides?: CallOverrides): Promise; + + tickSpacing(overrides?: CallOverrides): Promise; + + token0(overrides?: CallOverrides): Promise; + + token1(overrides?: CallOverrides): Promise; + + callStatic: { + factory(overrides?: CallOverrides): Promise; + + fee(overrides?: CallOverrides): Promise; + + maxLiquidityPerTick(overrides?: CallOverrides): Promise; + + tickSpacing(overrides?: CallOverrides): Promise; + + token0(overrides?: CallOverrides): Promise; + + token1(overrides?: CallOverrides): Promise; + }; + + filters: {}; + + estimateGas: { + factory(overrides?: CallOverrides): Promise; + + fee(overrides?: CallOverrides): Promise; + + maxLiquidityPerTick(overrides?: CallOverrides): Promise; + + tickSpacing(overrides?: CallOverrides): Promise; + + token0(overrides?: CallOverrides): Promise; + + token1(overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + factory(overrides?: CallOverrides): Promise; + + fee(overrides?: CallOverrides): Promise; + + maxLiquidityPerTick( + overrides?: CallOverrides + ): Promise; + + tickSpacing(overrides?: CallOverrides): Promise; + + token0(overrides?: CallOverrides): Promise; + + token1(overrides?: CallOverrides): Promise; + }; +} diff --git a/typechain-types/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.ts b/typechain-types/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.ts new file mode 100644 index 00000000..3e96185e --- /dev/null +++ b/typechain-types/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.ts @@ -0,0 +1,163 @@ +/* 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 IUniswapV3PoolOwnerActionsInterface extends utils.Interface { + functions: { + "collectProtocol(address,uint128,uint128)": FunctionFragment; + "setFeeProtocol(uint8,uint8)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: "collectProtocol" | "setFeeProtocol" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "collectProtocol", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "setFeeProtocol", + values: [PromiseOrValue, PromiseOrValue] + ): string; + + decodeFunctionResult( + functionFragment: "collectProtocol", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setFeeProtocol", + data: BytesLike + ): Result; + + events: {}; +} + +export interface IUniswapV3PoolOwnerActions extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: IUniswapV3PoolOwnerActionsInterface; + + 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: { + collectProtocol( + recipient: PromiseOrValue, + amount0Requested: PromiseOrValue, + amount1Requested: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setFeeProtocol( + feeProtocol0: PromiseOrValue, + feeProtocol1: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + collectProtocol( + recipient: PromiseOrValue, + amount0Requested: PromiseOrValue, + amount1Requested: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setFeeProtocol( + feeProtocol0: PromiseOrValue, + feeProtocol1: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + collectProtocol( + recipient: PromiseOrValue, + amount0Requested: PromiseOrValue, + amount1Requested: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { amount0: BigNumber; amount1: BigNumber } + >; + + setFeeProtocol( + feeProtocol0: PromiseOrValue, + feeProtocol1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + collectProtocol( + recipient: PromiseOrValue, + amount0Requested: PromiseOrValue, + amount1Requested: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setFeeProtocol( + feeProtocol0: PromiseOrValue, + feeProtocol1: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + collectProtocol( + recipient: PromiseOrValue, + amount0Requested: PromiseOrValue, + amount1Requested: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setFeeProtocol( + feeProtocol0: PromiseOrValue, + feeProtocol1: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/typechain-types/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.ts b/typechain-types/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.ts new file mode 100644 index 00000000..9796869c --- /dev/null +++ b/typechain-types/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.ts @@ -0,0 +1,446 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + 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 IUniswapV3PoolStateInterface extends utils.Interface { + functions: { + "feeGrowthGlobal0X128()": FunctionFragment; + "feeGrowthGlobal1X128()": FunctionFragment; + "liquidity()": FunctionFragment; + "observations(uint256)": FunctionFragment; + "positions(bytes32)": FunctionFragment; + "protocolFees()": FunctionFragment; + "slot0()": FunctionFragment; + "tickBitmap(int16)": FunctionFragment; + "ticks(int24)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "feeGrowthGlobal0X128" + | "feeGrowthGlobal1X128" + | "liquidity" + | "observations" + | "positions" + | "protocolFees" + | "slot0" + | "tickBitmap" + | "ticks" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "feeGrowthGlobal0X128", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "feeGrowthGlobal1X128", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "liquidity", values?: undefined): string; + encodeFunctionData( + functionFragment: "observations", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "positions", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "protocolFees", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "slot0", values?: undefined): string; + encodeFunctionData( + functionFragment: "tickBitmap", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "ticks", + values: [PromiseOrValue] + ): string; + + decodeFunctionResult( + functionFragment: "feeGrowthGlobal0X128", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "feeGrowthGlobal1X128", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "liquidity", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "observations", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "positions", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "protocolFees", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "slot0", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "tickBitmap", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "ticks", data: BytesLike): Result; + + events: {}; +} + +export interface IUniswapV3PoolState extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: IUniswapV3PoolStateInterface; + + 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: { + feeGrowthGlobal0X128(overrides?: CallOverrides): Promise<[BigNumber]>; + + feeGrowthGlobal1X128(overrides?: CallOverrides): Promise<[BigNumber]>; + + liquidity(overrides?: CallOverrides): Promise<[BigNumber]>; + + observations( + index: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [number, BigNumber, BigNumber, boolean] & { + blockTimestamp: number; + tickCumulative: BigNumber; + secondsPerLiquidityCumulativeX128: BigNumber; + initialized: boolean; + } + >; + + positions( + key: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber, BigNumber, BigNumber, BigNumber] & { + _liquidity: BigNumber; + feeGrowthInside0LastX128: BigNumber; + feeGrowthInside1LastX128: BigNumber; + tokensOwed0: BigNumber; + tokensOwed1: BigNumber; + } + >; + + protocolFees( + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { token0: BigNumber; token1: BigNumber } + >; + + slot0( + overrides?: CallOverrides + ): Promise< + [BigNumber, number, number, number, number, number, boolean] & { + sqrtPriceX96: BigNumber; + tick: number; + observationIndex: number; + observationCardinality: number; + observationCardinalityNext: number; + feeProtocol: number; + unlocked: boolean; + } + >; + + tickBitmap( + wordPosition: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + ticks( + tick: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [ + BigNumber, + BigNumber, + BigNumber, + BigNumber, + BigNumber, + BigNumber, + number, + boolean + ] & { + liquidityGross: BigNumber; + liquidityNet: BigNumber; + feeGrowthOutside0X128: BigNumber; + feeGrowthOutside1X128: BigNumber; + tickCumulativeOutside: BigNumber; + secondsPerLiquidityOutsideX128: BigNumber; + secondsOutside: number; + initialized: boolean; + } + >; + }; + + feeGrowthGlobal0X128(overrides?: CallOverrides): Promise; + + feeGrowthGlobal1X128(overrides?: CallOverrides): Promise; + + liquidity(overrides?: CallOverrides): Promise; + + observations( + index: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [number, BigNumber, BigNumber, boolean] & { + blockTimestamp: number; + tickCumulative: BigNumber; + secondsPerLiquidityCumulativeX128: BigNumber; + initialized: boolean; + } + >; + + positions( + key: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber, BigNumber, BigNumber, BigNumber] & { + _liquidity: BigNumber; + feeGrowthInside0LastX128: BigNumber; + feeGrowthInside1LastX128: BigNumber; + tokensOwed0: BigNumber; + tokensOwed1: BigNumber; + } + >; + + protocolFees( + overrides?: CallOverrides + ): Promise<[BigNumber, BigNumber] & { token0: BigNumber; token1: BigNumber }>; + + slot0( + overrides?: CallOverrides + ): Promise< + [BigNumber, number, number, number, number, number, boolean] & { + sqrtPriceX96: BigNumber; + tick: number; + observationIndex: number; + observationCardinality: number; + observationCardinalityNext: number; + feeProtocol: number; + unlocked: boolean; + } + >; + + tickBitmap( + wordPosition: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + ticks( + tick: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [ + BigNumber, + BigNumber, + BigNumber, + BigNumber, + BigNumber, + BigNumber, + number, + boolean + ] & { + liquidityGross: BigNumber; + liquidityNet: BigNumber; + feeGrowthOutside0X128: BigNumber; + feeGrowthOutside1X128: BigNumber; + tickCumulativeOutside: BigNumber; + secondsPerLiquidityOutsideX128: BigNumber; + secondsOutside: number; + initialized: boolean; + } + >; + + callStatic: { + feeGrowthGlobal0X128(overrides?: CallOverrides): Promise; + + feeGrowthGlobal1X128(overrides?: CallOverrides): Promise; + + liquidity(overrides?: CallOverrides): Promise; + + observations( + index: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [number, BigNumber, BigNumber, boolean] & { + blockTimestamp: number; + tickCumulative: BigNumber; + secondsPerLiquidityCumulativeX128: BigNumber; + initialized: boolean; + } + >; + + positions( + key: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber, BigNumber, BigNumber, BigNumber] & { + _liquidity: BigNumber; + feeGrowthInside0LastX128: BigNumber; + feeGrowthInside1LastX128: BigNumber; + tokensOwed0: BigNumber; + tokensOwed1: BigNumber; + } + >; + + protocolFees( + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { token0: BigNumber; token1: BigNumber } + >; + + slot0( + overrides?: CallOverrides + ): Promise< + [BigNumber, number, number, number, number, number, boolean] & { + sqrtPriceX96: BigNumber; + tick: number; + observationIndex: number; + observationCardinality: number; + observationCardinalityNext: number; + feeProtocol: number; + unlocked: boolean; + } + >; + + tickBitmap( + wordPosition: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + ticks( + tick: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [ + BigNumber, + BigNumber, + BigNumber, + BigNumber, + BigNumber, + BigNumber, + number, + boolean + ] & { + liquidityGross: BigNumber; + liquidityNet: BigNumber; + feeGrowthOutside0X128: BigNumber; + feeGrowthOutside1X128: BigNumber; + tickCumulativeOutside: BigNumber; + secondsPerLiquidityOutsideX128: BigNumber; + secondsOutside: number; + initialized: boolean; + } + >; + }; + + filters: {}; + + estimateGas: { + feeGrowthGlobal0X128(overrides?: CallOverrides): Promise; + + feeGrowthGlobal1X128(overrides?: CallOverrides): Promise; + + liquidity(overrides?: CallOverrides): Promise; + + observations( + index: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + positions( + key: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + protocolFees(overrides?: CallOverrides): Promise; + + slot0(overrides?: CallOverrides): Promise; + + tickBitmap( + wordPosition: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + ticks( + tick: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + populateTransaction: { + feeGrowthGlobal0X128( + overrides?: CallOverrides + ): Promise; + + feeGrowthGlobal1X128( + overrides?: CallOverrides + ): Promise; + + liquidity(overrides?: CallOverrides): Promise; + + observations( + index: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + positions( + key: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + protocolFees(overrides?: CallOverrides): Promise; + + slot0(overrides?: CallOverrides): Promise; + + tickBitmap( + wordPosition: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + ticks( + tick: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; +} diff --git a/typechain-types/@uniswap/v3-core/contracts/interfaces/pool/index.ts b/typechain-types/@uniswap/v3-core/contracts/interfaces/pool/index.ts new file mode 100644 index 00000000..459d8ece --- /dev/null +++ b/typechain-types/@uniswap/v3-core/contracts/interfaces/pool/index.ts @@ -0,0 +1,9 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { IUniswapV3PoolActions } from "./IUniswapV3PoolActions"; +export type { IUniswapV3PoolDerivedState } from "./IUniswapV3PoolDerivedState"; +export type { IUniswapV3PoolEvents } from "./IUniswapV3PoolEvents"; +export type { IUniswapV3PoolImmutables } from "./IUniswapV3PoolImmutables"; +export type { IUniswapV3PoolOwnerActions } from "./IUniswapV3PoolOwnerActions"; +export type { IUniswapV3PoolState } from "./IUniswapV3PoolState"; 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/interfaces/ZetaInterfaces.sol/ZetaTokenConsumer.ts b/typechain-types/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaTokenConsumer.ts index 22029d16..0131c285 100644 --- a/typechain-types/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaTokenConsumer.ts +++ b/typechain-types/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaTokenConsumer.ts @@ -34,6 +34,7 @@ export interface ZetaTokenConsumerInterface extends utils.Interface { "getTokenFromZeta(address,uint256,address,uint256)": FunctionFragment; "getZetaFromEth(address,uint256)": FunctionFragment; "getZetaFromToken(address,uint256,address,uint256)": FunctionFragment; + "hasZetaLiquidity()": FunctionFragment; }; getFunction( @@ -42,6 +43,7 @@ export interface ZetaTokenConsumerInterface extends utils.Interface { | "getTokenFromZeta" | "getZetaFromEth" | "getZetaFromToken" + | "hasZetaLiquidity" ): FunctionFragment; encodeFunctionData( @@ -74,6 +76,10 @@ export interface ZetaTokenConsumerInterface extends utils.Interface { PromiseOrValue ] ): string; + encodeFunctionData( + functionFragment: "hasZetaLiquidity", + values?: undefined + ): string; decodeFunctionResult( functionFragment: "getEthFromZeta", @@ -91,6 +97,10 @@ export interface ZetaTokenConsumerInterface extends utils.Interface { functionFragment: "getZetaFromToken", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "hasZetaLiquidity", + data: BytesLike + ): Result; events: { "EthExchangedForZeta(uint256,uint256)": EventFragment; @@ -210,6 +220,8 @@ export interface ZetaTokenConsumer extends BaseContract { inputTokenAmount: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + + hasZetaLiquidity(overrides?: CallOverrides): Promise<[boolean]>; }; getEthFromZeta( @@ -241,6 +253,8 @@ export interface ZetaTokenConsumer extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + hasZetaLiquidity(overrides?: CallOverrides): Promise; + callStatic: { getEthFromZeta( destinationAddress: PromiseOrValue, @@ -270,6 +284,8 @@ export interface ZetaTokenConsumer extends BaseContract { inputTokenAmount: PromiseOrValue, overrides?: CallOverrides ): Promise; + + hasZetaLiquidity(overrides?: CallOverrides): Promise; }; filters: { @@ -343,6 +359,8 @@ export interface ZetaTokenConsumer extends BaseContract { inputTokenAmount: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + + hasZetaLiquidity(overrides?: CallOverrides): Promise; }; populateTransaction: { @@ -374,5 +392,7 @@ export interface ZetaTokenConsumer extends BaseContract { inputTokenAmount: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + + hasZetaLiquidity(overrides?: CallOverrides): Promise; }; } 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/zevm/Interfaces.sol/ZContract.ts b/typechain-types/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/WETH9.ts similarity index 59% rename from typechain-types/contracts/zevm/Interfaces.sol/ZContract.ts rename to typechain-types/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/WETH9.ts index 6369e5f1..a2d73dde 100644 --- a/typechain-types/contracts/zevm/Interfaces.sol/ZContract.ts +++ b/typechain-types/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/WETH9.ts @@ -21,38 +21,31 @@ import type { TypedListener, OnEvent, PromiseOrValue, -} from "../../../common"; +} from "../../../../common"; -export interface ZContractInterface extends utils.Interface { +export interface WETH9Interface extends utils.Interface { functions: { - "onCrossChainCall(address,uint256,bytes)": FunctionFragment; + "withdraw(uint256)": FunctionFragment; }; - getFunction(nameOrSignatureOrTopic: "onCrossChainCall"): FunctionFragment; + getFunction(nameOrSignatureOrTopic: "withdraw"): FunctionFragment; encodeFunctionData( - functionFragment: "onCrossChainCall", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] + functionFragment: "withdraw", + values: [PromiseOrValue] ): string; - decodeFunctionResult( - functionFragment: "onCrossChainCall", - data: BytesLike - ): Result; + decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result; events: {}; } -export interface ZContract extends BaseContract { +export interface WETH9 extends BaseContract { connect(signerOrProvider: Signer | Provider | string): this; attach(addressOrName: string): this; deployed(): Promise; - interface: ZContractInterface; + interface: WETH9Interface; queryFilter( event: TypedEventFilter, @@ -74,26 +67,20 @@ export interface ZContract extends BaseContract { removeListener: OnEvent; functions: { - onCrossChainCall( - zrc20: PromiseOrValue, - amount: PromiseOrValue, - message: PromiseOrValue, + withdraw( + wad: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; }; - onCrossChainCall( - zrc20: PromiseOrValue, - amount: PromiseOrValue, - message: PromiseOrValue, + withdraw( + wad: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; callStatic: { - onCrossChainCall( - zrc20: PromiseOrValue, - amount: PromiseOrValue, - message: PromiseOrValue, + withdraw( + wad: PromiseOrValue, overrides?: CallOverrides ): Promise; }; @@ -101,19 +88,15 @@ export interface ZContract extends BaseContract { filters: {}; estimateGas: { - onCrossChainCall( - zrc20: PromiseOrValue, - amount: PromiseOrValue, - message: PromiseOrValue, + withdraw( + wad: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; }; populateTransaction: { - onCrossChainCall( - zrc20: PromiseOrValue, - amount: PromiseOrValue, - message: PromiseOrValue, + 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/ZetaTokenConsumerTrident.strategy.sol/ZetaTokenConsumerTrident.ts b/typechain-types/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/ZetaTokenConsumerTrident.ts index cbc0b8d3..0f372803 100644 --- a/typechain-types/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/ZetaTokenConsumerTrident.ts +++ b/typechain-types/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/ZetaTokenConsumerTrident.ts @@ -34,6 +34,7 @@ export interface ZetaTokenConsumerTridentInterface extends utils.Interface { "getTokenFromZeta(address,uint256,address,uint256)": FunctionFragment; "getZetaFromEth(address,uint256)": FunctionFragment; "getZetaFromToken(address,uint256,address,uint256)": FunctionFragment; + "hasZetaLiquidity()": FunctionFragment; "poolFactory()": FunctionFragment; "tridentRouter()": FunctionFragment; "zetaToken()": FunctionFragment; @@ -45,6 +46,7 @@ export interface ZetaTokenConsumerTridentInterface extends utils.Interface { | "getTokenFromZeta" | "getZetaFromEth" | "getZetaFromToken" + | "hasZetaLiquidity" | "poolFactory" | "tridentRouter" | "zetaToken" @@ -80,6 +82,10 @@ export interface ZetaTokenConsumerTridentInterface extends utils.Interface { PromiseOrValue ] ): string; + encodeFunctionData( + functionFragment: "hasZetaLiquidity", + values?: undefined + ): string; encodeFunctionData( functionFragment: "poolFactory", values?: undefined @@ -106,6 +112,10 @@ export interface ZetaTokenConsumerTridentInterface extends utils.Interface { functionFragment: "getZetaFromToken", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "hasZetaLiquidity", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "poolFactory", data: BytesLike @@ -235,6 +245,8 @@ export interface ZetaTokenConsumerTrident extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + hasZetaLiquidity(overrides?: CallOverrides): Promise<[boolean]>; + poolFactory(overrides?: CallOverrides): Promise<[string]>; tridentRouter(overrides?: CallOverrides): Promise<[string]>; @@ -271,6 +283,8 @@ export interface ZetaTokenConsumerTrident extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + hasZetaLiquidity(overrides?: CallOverrides): Promise; + poolFactory(overrides?: CallOverrides): Promise; tridentRouter(overrides?: CallOverrides): Promise; @@ -307,6 +321,8 @@ export interface ZetaTokenConsumerTrident extends BaseContract { overrides?: CallOverrides ): Promise; + hasZetaLiquidity(overrides?: CallOverrides): Promise; + poolFactory(overrides?: CallOverrides): Promise; tridentRouter(overrides?: CallOverrides): Promise; @@ -386,6 +402,8 @@ export interface ZetaTokenConsumerTrident extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + hasZetaLiquidity(overrides?: CallOverrides): Promise; + poolFactory(overrides?: CallOverrides): Promise; tridentRouter(overrides?: CallOverrides): Promise; @@ -423,6 +441,8 @@ export interface ZetaTokenConsumerTrident extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + hasZetaLiquidity(overrides?: CallOverrides): Promise; + poolFactory(overrides?: CallOverrides): Promise; tridentRouter(overrides?: CallOverrides): Promise; diff --git a/typechain-types/contracts/evm/tools/ZetaTokenConsumerUniV2.strategy.sol/ZetaTokenConsumerUniV2.ts b/typechain-types/contracts/evm/tools/ZetaTokenConsumerUniV2.strategy.sol/ZetaTokenConsumerUniV2.ts index 3d4d24ea..2b138eee 100644 --- a/typechain-types/contracts/evm/tools/ZetaTokenConsumerUniV2.strategy.sol/ZetaTokenConsumerUniV2.ts +++ b/typechain-types/contracts/evm/tools/ZetaTokenConsumerUniV2.strategy.sol/ZetaTokenConsumerUniV2.ts @@ -34,6 +34,7 @@ export interface ZetaTokenConsumerUniV2Interface extends utils.Interface { "getTokenFromZeta(address,uint256,address,uint256)": FunctionFragment; "getZetaFromEth(address,uint256)": FunctionFragment; "getZetaFromToken(address,uint256,address,uint256)": FunctionFragment; + "hasZetaLiquidity()": FunctionFragment; "zetaToken()": FunctionFragment; }; @@ -43,6 +44,7 @@ export interface ZetaTokenConsumerUniV2Interface extends utils.Interface { | "getTokenFromZeta" | "getZetaFromEth" | "getZetaFromToken" + | "hasZetaLiquidity" | "zetaToken" ): FunctionFragment; @@ -76,6 +78,10 @@ export interface ZetaTokenConsumerUniV2Interface extends utils.Interface { PromiseOrValue ] ): string; + encodeFunctionData( + functionFragment: "hasZetaLiquidity", + values?: undefined + ): string; encodeFunctionData(functionFragment: "zetaToken", values?: undefined): string; decodeFunctionResult( @@ -94,6 +100,10 @@ export interface ZetaTokenConsumerUniV2Interface extends utils.Interface { functionFragment: "getZetaFromToken", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "hasZetaLiquidity", + data: BytesLike + ): Result; decodeFunctionResult(functionFragment: "zetaToken", data: BytesLike): Result; events: { @@ -215,6 +225,8 @@ export interface ZetaTokenConsumerUniV2 extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + hasZetaLiquidity(overrides?: CallOverrides): Promise<[boolean]>; + zetaToken(overrides?: CallOverrides): Promise<[string]>; }; @@ -247,6 +259,8 @@ export interface ZetaTokenConsumerUniV2 extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + hasZetaLiquidity(overrides?: CallOverrides): Promise; + zetaToken(overrides?: CallOverrides): Promise; callStatic: { @@ -279,6 +293,8 @@ export interface ZetaTokenConsumerUniV2 extends BaseContract { overrides?: CallOverrides ): Promise; + hasZetaLiquidity(overrides?: CallOverrides): Promise; + zetaToken(overrides?: CallOverrides): Promise; }; @@ -354,6 +370,8 @@ export interface ZetaTokenConsumerUniV2 extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + hasZetaLiquidity(overrides?: CallOverrides): Promise; + zetaToken(overrides?: CallOverrides): Promise; }; @@ -387,6 +405,8 @@ export interface ZetaTokenConsumerUniV2 extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + hasZetaLiquidity(overrides?: CallOverrides): Promise; + zetaToken(overrides?: CallOverrides): Promise; }; } diff --git a/typechain-types/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/ZetaTokenConsumerUniV3.ts b/typechain-types/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/ZetaTokenConsumerUniV3.ts index a3c6ed7c..c9c14920 100644 --- a/typechain-types/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/ZetaTokenConsumerUniV3.ts +++ b/typechain-types/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/ZetaTokenConsumerUniV3.ts @@ -30,12 +30,14 @@ import type { export interface ZetaTokenConsumerUniV3Interface 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; - "quoter()": FunctionFragment; + "hasZetaLiquidity()": FunctionFragment; "tokenPoolFee()": FunctionFragment; + "uniswapV3Factory()": FunctionFragment; "uniswapV3Router()": FunctionFragment; "zetaPoolFee()": FunctionFragment; "zetaToken()": FunctionFragment; @@ -43,17 +45,23 @@ export interface ZetaTokenConsumerUniV3Interface extends utils.Interface { getFunction( nameOrSignatureOrTopic: + | "WETH9Address" | "getEthFromZeta" | "getTokenFromZeta" | "getZetaFromEth" | "getZetaFromToken" - | "quoter" + | "hasZetaLiquidity" | "tokenPoolFee" + | "uniswapV3Factory" | "uniswapV3Router" | "zetaPoolFee" | "zetaToken" ): FunctionFragment; + encodeFunctionData( + functionFragment: "WETH9Address", + values?: undefined + ): string; encodeFunctionData( functionFragment: "getEthFromZeta", values: [ @@ -84,11 +92,18 @@ export interface ZetaTokenConsumerUniV3Interface extends utils.Interface { PromiseOrValue ] ): string; - encodeFunctionData(functionFragment: "quoter", values?: undefined): string; + encodeFunctionData( + functionFragment: "hasZetaLiquidity", + values?: undefined + ): string; encodeFunctionData( functionFragment: "tokenPoolFee", values?: undefined ): string; + encodeFunctionData( + functionFragment: "uniswapV3Factory", + values?: undefined + ): string; encodeFunctionData( functionFragment: "uniswapV3Router", values?: undefined @@ -99,6 +114,10 @@ export interface ZetaTokenConsumerUniV3Interface extends utils.Interface { ): string; encodeFunctionData(functionFragment: "zetaToken", values?: undefined): string; + decodeFunctionResult( + functionFragment: "WETH9Address", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "getEthFromZeta", data: BytesLike @@ -115,11 +134,18 @@ export interface ZetaTokenConsumerUniV3Interface extends utils.Interface { functionFragment: "getZetaFromToken", data: BytesLike ): Result; - decodeFunctionResult(functionFragment: "quoter", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "hasZetaLiquidity", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "tokenPoolFee", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "uniswapV3Factory", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "uniswapV3Router", data: BytesLike @@ -220,6 +246,8 @@ export interface ZetaTokenConsumerUniV3 extends BaseContract { removeListener: OnEvent; functions: { + WETH9Address(overrides?: CallOverrides): Promise<[string]>; + getEthFromZeta( destinationAddress: PromiseOrValue, minAmountOut: PromiseOrValue, @@ -249,10 +277,12 @@ export interface ZetaTokenConsumerUniV3 extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - quoter(overrides?: CallOverrides): Promise<[string]>; + hasZetaLiquidity(overrides?: CallOverrides): Promise<[boolean]>; tokenPoolFee(overrides?: CallOverrides): Promise<[number]>; + uniswapV3Factory(overrides?: CallOverrides): Promise<[string]>; + uniswapV3Router(overrides?: CallOverrides): Promise<[string]>; zetaPoolFee(overrides?: CallOverrides): Promise<[number]>; @@ -260,6 +290,8 @@ export interface ZetaTokenConsumerUniV3 extends BaseContract { zetaToken(overrides?: CallOverrides): Promise<[string]>; }; + WETH9Address(overrides?: CallOverrides): Promise; + getEthFromZeta( destinationAddress: PromiseOrValue, minAmountOut: PromiseOrValue, @@ -289,10 +321,12 @@ export interface ZetaTokenConsumerUniV3 extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - quoter(overrides?: CallOverrides): Promise; + hasZetaLiquidity(overrides?: CallOverrides): Promise; tokenPoolFee(overrides?: CallOverrides): Promise; + uniswapV3Factory(overrides?: CallOverrides): Promise; + uniswapV3Router(overrides?: CallOverrides): Promise; zetaPoolFee(overrides?: CallOverrides): Promise; @@ -300,6 +334,8 @@ export interface ZetaTokenConsumerUniV3 extends BaseContract { zetaToken(overrides?: CallOverrides): Promise; callStatic: { + WETH9Address(overrides?: CallOverrides): Promise; + getEthFromZeta( destinationAddress: PromiseOrValue, minAmountOut: PromiseOrValue, @@ -329,10 +365,12 @@ export interface ZetaTokenConsumerUniV3 extends BaseContract { overrides?: CallOverrides ): Promise; - quoter(overrides?: CallOverrides): Promise; + hasZetaLiquidity(overrides?: CallOverrides): Promise; tokenPoolFee(overrides?: CallOverrides): Promise; + uniswapV3Factory(overrides?: CallOverrides): Promise; + uniswapV3Router(overrides?: CallOverrides): Promise; zetaPoolFee(overrides?: CallOverrides): Promise; @@ -383,6 +421,8 @@ export interface ZetaTokenConsumerUniV3 extends BaseContract { }; estimateGas: { + WETH9Address(overrides?: CallOverrides): Promise; + getEthFromZeta( destinationAddress: PromiseOrValue, minAmountOut: PromiseOrValue, @@ -412,10 +452,12 @@ export interface ZetaTokenConsumerUniV3 extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - quoter(overrides?: CallOverrides): Promise; + hasZetaLiquidity(overrides?: CallOverrides): Promise; tokenPoolFee(overrides?: CallOverrides): Promise; + uniswapV3Factory(overrides?: CallOverrides): Promise; + uniswapV3Router(overrides?: CallOverrides): Promise; zetaPoolFee(overrides?: CallOverrides): Promise; @@ -424,6 +466,8 @@ export interface ZetaTokenConsumerUniV3 extends BaseContract { }; populateTransaction: { + WETH9Address(overrides?: CallOverrides): Promise; + getEthFromZeta( destinationAddress: PromiseOrValue, minAmountOut: PromiseOrValue, @@ -453,10 +497,12 @@ export interface ZetaTokenConsumerUniV3 extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - quoter(overrides?: CallOverrides): Promise; + hasZetaLiquidity(overrides?: CallOverrides): Promise; tokenPoolFee(overrides?: CallOverrides): Promise; + uniswapV3Factory(overrides?: CallOverrides): Promise; + uniswapV3Router(overrides?: CallOverrides): Promise; zetaPoolFee(overrides?: CallOverrides): Promise; 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/Interfaces.sol/index.ts b/typechain-types/contracts/zevm/Interfaces.sol/index.ts index 61363ce4..dcf2792a 100644 --- a/typechain-types/contracts/zevm/Interfaces.sol/index.ts +++ b/typechain-types/contracts/zevm/Interfaces.sol/index.ts @@ -4,4 +4,3 @@ export type { ISystem } from "./ISystem"; export type { IZRC20 } from "./IZRC20"; export type { IZRC20Metadata } from "./IZRC20Metadata"; -export type { ZContract } from "./ZContract"; diff --git a/typechain-types/contracts/zevm/SystemContract.sol/SystemContract.ts b/typechain-types/contracts/zevm/SystemContract.sol/SystemContract.ts index 352e51ba..fdba4829 100644 --- a/typechain-types/contracts/zevm/SystemContract.sol/SystemContract.ts +++ b/typechain-types/contracts/zevm/SystemContract.sol/SystemContract.ts @@ -27,10 +27,22 @@ import type { PromiseOrValue, } from "../../../common"; +export type ZContextStruct = { + origin: PromiseOrValue; + sender: PromiseOrValue; + chainID: PromiseOrValue; +}; + +export type ZContextStructOutput = [string, string, BigNumber] & { + origin: string; + sender: string; + chainID: BigNumber; +}; + export interface SystemContractInterface extends utils.Interface { functions: { "FUNGIBLE_MODULE_ADDRESS()": FunctionFragment; - "depositAndCall(address,uint256,address,bytes)": FunctionFragment; + "depositAndCall((bytes,address,uint256),address,uint256,address,bytes)": FunctionFragment; "gasCoinZRC20ByChainId(uint256)": FunctionFragment; "gasPriceByChainId(uint256)": FunctionFragment; "gasZetaPoolByChainId(uint256)": FunctionFragment; @@ -72,6 +84,7 @@ export interface SystemContractInterface extends utils.Interface { encodeFunctionData( functionFragment: "depositAndCall", values: [ + ZContextStruct, PromiseOrValue, PromiseOrValue, PromiseOrValue, @@ -303,6 +316,7 @@ export interface SystemContract extends BaseContract { FUNGIBLE_MODULE_ADDRESS(overrides?: CallOverrides): Promise<[string]>; depositAndCall( + context: ZContextStruct, zrc20: PromiseOrValue, amount: PromiseOrValue, target: PromiseOrValue, @@ -372,6 +386,7 @@ export interface SystemContract extends BaseContract { FUNGIBLE_MODULE_ADDRESS(overrides?: CallOverrides): Promise; depositAndCall( + context: ZContextStruct, zrc20: PromiseOrValue, amount: PromiseOrValue, target: PromiseOrValue, @@ -441,6 +456,7 @@ export interface SystemContract extends BaseContract { FUNGIBLE_MODULE_ADDRESS(overrides?: CallOverrides): Promise; depositAndCall( + context: ZContextStruct, zrc20: PromiseOrValue, amount: PromiseOrValue, target: PromiseOrValue, @@ -540,6 +556,7 @@ export interface SystemContract extends BaseContract { FUNGIBLE_MODULE_ADDRESS(overrides?: CallOverrides): Promise; depositAndCall( + context: ZContextStruct, zrc20: PromiseOrValue, amount: PromiseOrValue, target: PromiseOrValue, @@ -612,6 +629,7 @@ export interface SystemContract extends BaseContract { ): Promise; depositAndCall( + context: ZContextStruct, zrc20: PromiseOrValue, amount: PromiseOrValue, target: PromiseOrValue, diff --git a/typechain-types/contracts/zevm/wzeta.sol/WETH9.ts b/typechain-types/contracts/zevm/WZETA.sol/WETH9.ts similarity index 100% rename from typechain-types/contracts/zevm/wzeta.sol/WETH9.ts rename to typechain-types/contracts/zevm/WZETA.sol/WETH9.ts diff --git a/typechain-types/contracts/zevm/wzeta.sol/index.ts b/typechain-types/contracts/zevm/WZETA.sol/index.ts similarity index 100% rename from typechain-types/contracts/zevm/wzeta.sol/index.ts rename to typechain-types/contracts/zevm/WZETA.sol/index.ts 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 8a2b98c0..c1e5459a 100644 --- a/typechain-types/contracts/zevm/index.ts +++ b/typechain-types/contracts/zevm/index.ts @@ -1,15 +1,17 @@ /* 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"; export type { systemContractSol }; +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 wzetaSol from "./wzeta.sol"; -export type { wzetaSol }; +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/ZContract.ts b/typechain-types/contracts/zevm/interfaces/ZContract.ts index 6369e5f1..f0f94d60 100644 --- a/typechain-types/contracts/zevm/interfaces/ZContract.ts +++ b/typechain-types/contracts/zevm/interfaces/ZContract.ts @@ -23,9 +23,21 @@ import type { PromiseOrValue, } from "../../../common"; +export type ZContextStruct = { + origin: PromiseOrValue; + sender: PromiseOrValue; + chainID: PromiseOrValue; +}; + +export type ZContextStructOutput = [string, string, BigNumber] & { + origin: string; + sender: string; + chainID: BigNumber; +}; + export interface ZContractInterface extends utils.Interface { functions: { - "onCrossChainCall(address,uint256,bytes)": FunctionFragment; + "onCrossChainCall((bytes,address,uint256),address,uint256,bytes)": FunctionFragment; }; getFunction(nameOrSignatureOrTopic: "onCrossChainCall"): FunctionFragment; @@ -33,6 +45,7 @@ export interface ZContractInterface extends utils.Interface { encodeFunctionData( functionFragment: "onCrossChainCall", values: [ + ZContextStruct, PromiseOrValue, PromiseOrValue, PromiseOrValue @@ -75,6 +88,7 @@ export interface ZContract extends BaseContract { functions: { onCrossChainCall( + context: ZContextStruct, zrc20: PromiseOrValue, amount: PromiseOrValue, message: PromiseOrValue, @@ -83,6 +97,7 @@ export interface ZContract extends BaseContract { }; onCrossChainCall( + context: ZContextStruct, zrc20: PromiseOrValue, amount: PromiseOrValue, message: PromiseOrValue, @@ -91,6 +106,7 @@ export interface ZContract extends BaseContract { callStatic: { onCrossChainCall( + context: ZContextStruct, zrc20: PromiseOrValue, amount: PromiseOrValue, message: PromiseOrValue, @@ -102,6 +118,7 @@ export interface ZContract extends BaseContract { estimateGas: { onCrossChainCall( + context: ZContextStruct, zrc20: PromiseOrValue, amount: PromiseOrValue, message: PromiseOrValue, @@ -111,6 +128,7 @@ export interface ZContract extends BaseContract { populateTransaction: { onCrossChainCall( + context: ZContextStruct, zrc20: PromiseOrValue, amount: PromiseOrValue, message: PromiseOrValue, 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/@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory__factory.ts b/typechain-types/factories/@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory__factory.ts new file mode 100644 index 00000000..149e034b --- /dev/null +++ b/typechain-types/factories/@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory__factory.ts @@ -0,0 +1,222 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + IUniswapV3Factory, + IUniswapV3FactoryInterface, +} from "../../../../../@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory"; + +const _abi = [ + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "uint24", + name: "fee", + type: "uint24", + }, + { + indexed: true, + internalType: "int24", + name: "tickSpacing", + type: "int24", + }, + ], + name: "FeeAmountEnabled", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "oldOwner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "OwnerChanged", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "token0", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "token1", + type: "address", + }, + { + indexed: true, + internalType: "uint24", + name: "fee", + type: "uint24", + }, + { + indexed: false, + internalType: "int24", + name: "tickSpacing", + type: "int24", + }, + { + indexed: false, + internalType: "address", + name: "pool", + type: "address", + }, + ], + name: "PoolCreated", + type: "event", + }, + { + inputs: [ + { + internalType: "address", + name: "tokenA", + type: "address", + }, + { + internalType: "address", + name: "tokenB", + type: "address", + }, + { + internalType: "uint24", + name: "fee", + type: "uint24", + }, + ], + name: "createPool", + outputs: [ + { + internalType: "address", + name: "pool", + type: "address", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint24", + name: "fee", + type: "uint24", + }, + { + internalType: "int24", + name: "tickSpacing", + type: "int24", + }, + ], + name: "enableFeeAmount", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint24", + name: "fee", + type: "uint24", + }, + ], + name: "feeAmountTickSpacing", + outputs: [ + { + internalType: "int24", + name: "", + type: "int24", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "tokenA", + type: "address", + }, + { + internalType: "address", + name: "tokenB", + type: "address", + }, + { + internalType: "uint24", + name: "fee", + type: "uint24", + }, + ], + name: "getPool", + outputs: [ + { + internalType: "address", + name: "pool", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "owner", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_owner", + type: "address", + }, + ], + name: "setOwner", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +export class IUniswapV3Factory__factory { + static readonly abi = _abi; + static createInterface(): IUniswapV3FactoryInterface { + return new utils.Interface(_abi) as IUniswapV3FactoryInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): IUniswapV3Factory { + return new Contract(address, _abi, signerOrProvider) as IUniswapV3Factory; + } +} diff --git a/typechain-types/factories/@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool__factory.ts b/typechain-types/factories/@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool__factory.ts new file mode 100644 index 00000000..71683bb2 --- /dev/null +++ b/typechain-types/factories/@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool__factory.ts @@ -0,0 +1,1007 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + IUniswapV3Pool, + IUniswapV3PoolInterface, +} from "../../../../../@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool"; + +const _abi = [ + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "owner", + type: "address", + }, + { + indexed: true, + internalType: "int24", + name: "tickLower", + type: "int24", + }, + { + indexed: true, + internalType: "int24", + name: "tickUpper", + type: "int24", + }, + { + indexed: false, + internalType: "uint128", + name: "amount", + type: "uint128", + }, + { + indexed: false, + internalType: "uint256", + name: "amount0", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "amount1", + type: "uint256", + }, + ], + name: "Burn", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "owner", + type: "address", + }, + { + indexed: false, + internalType: "address", + name: "recipient", + type: "address", + }, + { + indexed: true, + internalType: "int24", + name: "tickLower", + type: "int24", + }, + { + indexed: true, + internalType: "int24", + name: "tickUpper", + type: "int24", + }, + { + indexed: false, + internalType: "uint128", + name: "amount0", + type: "uint128", + }, + { + indexed: false, + internalType: "uint128", + name: "amount1", + type: "uint128", + }, + ], + name: "Collect", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "sender", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "recipient", + type: "address", + }, + { + indexed: false, + internalType: "uint128", + name: "amount0", + type: "uint128", + }, + { + indexed: false, + internalType: "uint128", + name: "amount1", + type: "uint128", + }, + ], + name: "CollectProtocol", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "sender", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "recipient", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "amount0", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "amount1", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "paid0", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "paid1", + type: "uint256", + }, + ], + name: "Flash", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint16", + name: "observationCardinalityNextOld", + type: "uint16", + }, + { + indexed: false, + internalType: "uint16", + name: "observationCardinalityNextNew", + type: "uint16", + }, + ], + name: "IncreaseObservationCardinalityNext", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint160", + name: "sqrtPriceX96", + type: "uint160", + }, + { + indexed: false, + internalType: "int24", + name: "tick", + type: "int24", + }, + ], + name: "Initialize", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "sender", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "owner", + type: "address", + }, + { + indexed: true, + internalType: "int24", + name: "tickLower", + type: "int24", + }, + { + indexed: true, + internalType: "int24", + name: "tickUpper", + type: "int24", + }, + { + indexed: false, + internalType: "uint128", + name: "amount", + type: "uint128", + }, + { + indexed: false, + internalType: "uint256", + name: "amount0", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "amount1", + type: "uint256", + }, + ], + name: "Mint", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint8", + name: "feeProtocol0Old", + type: "uint8", + }, + { + indexed: false, + internalType: "uint8", + name: "feeProtocol1Old", + type: "uint8", + }, + { + indexed: false, + internalType: "uint8", + name: "feeProtocol0New", + type: "uint8", + }, + { + indexed: false, + internalType: "uint8", + name: "feeProtocol1New", + type: "uint8", + }, + ], + name: "SetFeeProtocol", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "sender", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "recipient", + type: "address", + }, + { + indexed: false, + internalType: "int256", + name: "amount0", + type: "int256", + }, + { + indexed: false, + internalType: "int256", + name: "amount1", + type: "int256", + }, + { + indexed: false, + internalType: "uint160", + name: "sqrtPriceX96", + type: "uint160", + }, + { + indexed: false, + internalType: "uint128", + name: "liquidity", + type: "uint128", + }, + { + indexed: false, + internalType: "int24", + name: "tick", + type: "int24", + }, + ], + name: "Swap", + type: "event", + }, + { + inputs: [ + { + internalType: "int24", + name: "tickLower", + type: "int24", + }, + { + internalType: "int24", + name: "tickUpper", + type: "int24", + }, + { + internalType: "uint128", + name: "amount", + type: "uint128", + }, + ], + name: "burn", + outputs: [ + { + internalType: "uint256", + name: "amount0", + type: "uint256", + }, + { + internalType: "uint256", + name: "amount1", + type: "uint256", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "recipient", + type: "address", + }, + { + internalType: "int24", + name: "tickLower", + type: "int24", + }, + { + internalType: "int24", + name: "tickUpper", + type: "int24", + }, + { + internalType: "uint128", + name: "amount0Requested", + type: "uint128", + }, + { + internalType: "uint128", + name: "amount1Requested", + type: "uint128", + }, + ], + name: "collect", + outputs: [ + { + internalType: "uint128", + name: "amount0", + type: "uint128", + }, + { + internalType: "uint128", + name: "amount1", + type: "uint128", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "recipient", + type: "address", + }, + { + internalType: "uint128", + name: "amount0Requested", + type: "uint128", + }, + { + internalType: "uint128", + name: "amount1Requested", + type: "uint128", + }, + ], + name: "collectProtocol", + outputs: [ + { + internalType: "uint128", + name: "amount0", + type: "uint128", + }, + { + internalType: "uint128", + name: "amount1", + type: "uint128", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "factory", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "fee", + outputs: [ + { + internalType: "uint24", + name: "", + type: "uint24", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "feeGrowthGlobal0X128", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "feeGrowthGlobal1X128", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "recipient", + type: "address", + }, + { + internalType: "uint256", + name: "amount0", + type: "uint256", + }, + { + internalType: "uint256", + name: "amount1", + type: "uint256", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + name: "flash", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "observationCardinalityNext", + type: "uint16", + }, + ], + name: "increaseObservationCardinalityNext", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint160", + name: "sqrtPriceX96", + type: "uint160", + }, + ], + name: "initialize", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "liquidity", + outputs: [ + { + internalType: "uint128", + name: "", + type: "uint128", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "maxLiquidityPerTick", + outputs: [ + { + internalType: "uint128", + name: "", + type: "uint128", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "recipient", + type: "address", + }, + { + internalType: "int24", + name: "tickLower", + type: "int24", + }, + { + internalType: "int24", + name: "tickUpper", + type: "int24", + }, + { + internalType: "uint128", + name: "amount", + type: "uint128", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + name: "mint", + outputs: [ + { + internalType: "uint256", + name: "amount0", + type: "uint256", + }, + { + internalType: "uint256", + name: "amount1", + type: "uint256", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "index", + type: "uint256", + }, + ], + name: "observations", + outputs: [ + { + internalType: "uint32", + name: "blockTimestamp", + type: "uint32", + }, + { + internalType: "int56", + name: "tickCumulative", + type: "int56", + }, + { + internalType: "uint160", + name: "secondsPerLiquidityCumulativeX128", + type: "uint160", + }, + { + internalType: "bool", + name: "initialized", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint32[]", + name: "secondsAgos", + type: "uint32[]", + }, + ], + name: "observe", + outputs: [ + { + internalType: "int56[]", + name: "tickCumulatives", + type: "int56[]", + }, + { + internalType: "uint160[]", + name: "secondsPerLiquidityCumulativeX128s", + type: "uint160[]", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "key", + type: "bytes32", + }, + ], + name: "positions", + outputs: [ + { + internalType: "uint128", + name: "_liquidity", + type: "uint128", + }, + { + internalType: "uint256", + name: "feeGrowthInside0LastX128", + type: "uint256", + }, + { + internalType: "uint256", + name: "feeGrowthInside1LastX128", + type: "uint256", + }, + { + internalType: "uint128", + name: "tokensOwed0", + type: "uint128", + }, + { + internalType: "uint128", + name: "tokensOwed1", + type: "uint128", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "protocolFees", + outputs: [ + { + internalType: "uint128", + name: "token0", + type: "uint128", + }, + { + internalType: "uint128", + name: "token1", + type: "uint128", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint8", + name: "feeProtocol0", + type: "uint8", + }, + { + internalType: "uint8", + name: "feeProtocol1", + type: "uint8", + }, + ], + name: "setFeeProtocol", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "slot0", + outputs: [ + { + internalType: "uint160", + name: "sqrtPriceX96", + type: "uint160", + }, + { + internalType: "int24", + name: "tick", + type: "int24", + }, + { + internalType: "uint16", + name: "observationIndex", + type: "uint16", + }, + { + internalType: "uint16", + name: "observationCardinality", + type: "uint16", + }, + { + internalType: "uint16", + name: "observationCardinalityNext", + type: "uint16", + }, + { + internalType: "uint8", + name: "feeProtocol", + type: "uint8", + }, + { + internalType: "bool", + name: "unlocked", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "int24", + name: "tickLower", + type: "int24", + }, + { + internalType: "int24", + name: "tickUpper", + type: "int24", + }, + ], + name: "snapshotCumulativesInside", + outputs: [ + { + internalType: "int56", + name: "tickCumulativeInside", + type: "int56", + }, + { + internalType: "uint160", + name: "secondsPerLiquidityInsideX128", + type: "uint160", + }, + { + internalType: "uint32", + name: "secondsInside", + type: "uint32", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "recipient", + type: "address", + }, + { + internalType: "bool", + name: "zeroForOne", + type: "bool", + }, + { + internalType: "int256", + name: "amountSpecified", + type: "int256", + }, + { + internalType: "uint160", + name: "sqrtPriceLimitX96", + type: "uint160", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + name: "swap", + outputs: [ + { + internalType: "int256", + name: "amount0", + type: "int256", + }, + { + internalType: "int256", + name: "amount1", + type: "int256", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "int16", + name: "wordPosition", + type: "int16", + }, + ], + name: "tickBitmap", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "tickSpacing", + outputs: [ + { + internalType: "int24", + name: "", + type: "int24", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "int24", + name: "tick", + type: "int24", + }, + ], + name: "ticks", + outputs: [ + { + internalType: "uint128", + name: "liquidityGross", + type: "uint128", + }, + { + internalType: "int128", + name: "liquidityNet", + type: "int128", + }, + { + internalType: "uint256", + name: "feeGrowthOutside0X128", + type: "uint256", + }, + { + internalType: "uint256", + name: "feeGrowthOutside1X128", + type: "uint256", + }, + { + internalType: "int56", + name: "tickCumulativeOutside", + type: "int56", + }, + { + internalType: "uint160", + name: "secondsPerLiquidityOutsideX128", + type: "uint160", + }, + { + internalType: "uint32", + name: "secondsOutside", + type: "uint32", + }, + { + internalType: "bool", + name: "initialized", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "token0", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "token1", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, +] as const; + +export class IUniswapV3Pool__factory { + static readonly abi = _abi; + static createInterface(): IUniswapV3PoolInterface { + return new utils.Interface(_abi) as IUniswapV3PoolInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): IUniswapV3Pool { + return new Contract(address, _abi, signerOrProvider) as IUniswapV3Pool; + } +} diff --git a/typechain-types/factories/@uniswap/v3-core/contracts/interfaces/index.ts b/typechain-types/factories/@uniswap/v3-core/contracts/interfaces/index.ts index 01db08ef..a1bdba4c 100644 --- a/typechain-types/factories/@uniswap/v3-core/contracts/interfaces/index.ts +++ b/typechain-types/factories/@uniswap/v3-core/contracts/interfaces/index.ts @@ -2,3 +2,6 @@ /* tslint:disable */ /* eslint-disable */ export * as callback from "./callback"; +export * as pool from "./pool"; +export { IUniswapV3Factory__factory } from "./IUniswapV3Factory__factory"; +export { IUniswapV3Pool__factory } from "./IUniswapV3Pool__factory"; diff --git a/typechain-types/factories/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions__factory.ts b/typechain-types/factories/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions__factory.ts new file mode 100644 index 00000000..678e131f --- /dev/null +++ b/typechain-types/factories/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions__factory.ts @@ -0,0 +1,250 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + IUniswapV3PoolActions, + IUniswapV3PoolActionsInterface, +} from "../../../../../../@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions"; + +const _abi = [ + { + inputs: [ + { + internalType: "int24", + name: "tickLower", + type: "int24", + }, + { + internalType: "int24", + name: "tickUpper", + type: "int24", + }, + { + internalType: "uint128", + name: "amount", + type: "uint128", + }, + ], + name: "burn", + outputs: [ + { + internalType: "uint256", + name: "amount0", + type: "uint256", + }, + { + internalType: "uint256", + name: "amount1", + type: "uint256", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "recipient", + type: "address", + }, + { + internalType: "int24", + name: "tickLower", + type: "int24", + }, + { + internalType: "int24", + name: "tickUpper", + type: "int24", + }, + { + internalType: "uint128", + name: "amount0Requested", + type: "uint128", + }, + { + internalType: "uint128", + name: "amount1Requested", + type: "uint128", + }, + ], + name: "collect", + outputs: [ + { + internalType: "uint128", + name: "amount0", + type: "uint128", + }, + { + internalType: "uint128", + name: "amount1", + type: "uint128", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "recipient", + type: "address", + }, + { + internalType: "uint256", + name: "amount0", + type: "uint256", + }, + { + internalType: "uint256", + name: "amount1", + type: "uint256", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + name: "flash", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "observationCardinalityNext", + type: "uint16", + }, + ], + name: "increaseObservationCardinalityNext", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint160", + name: "sqrtPriceX96", + type: "uint160", + }, + ], + name: "initialize", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "recipient", + type: "address", + }, + { + internalType: "int24", + name: "tickLower", + type: "int24", + }, + { + internalType: "int24", + name: "tickUpper", + type: "int24", + }, + { + internalType: "uint128", + name: "amount", + type: "uint128", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + name: "mint", + outputs: [ + { + internalType: "uint256", + name: "amount0", + type: "uint256", + }, + { + internalType: "uint256", + name: "amount1", + type: "uint256", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "recipient", + type: "address", + }, + { + internalType: "bool", + name: "zeroForOne", + type: "bool", + }, + { + internalType: "int256", + name: "amountSpecified", + type: "int256", + }, + { + internalType: "uint160", + name: "sqrtPriceLimitX96", + type: "uint160", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + name: "swap", + outputs: [ + { + internalType: "int256", + name: "amount0", + type: "int256", + }, + { + internalType: "int256", + name: "amount1", + type: "int256", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +export class IUniswapV3PoolActions__factory { + static readonly abi = _abi; + static createInterface(): IUniswapV3PoolActionsInterface { + return new utils.Interface(_abi) as IUniswapV3PoolActionsInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): IUniswapV3PoolActions { + return new Contract( + address, + _abi, + signerOrProvider + ) as IUniswapV3PoolActions; + } +} diff --git a/typechain-types/factories/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState__factory.ts b/typechain-types/factories/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState__factory.ts new file mode 100644 index 00000000..5676cd32 --- /dev/null +++ b/typechain-types/factories/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState__factory.ts @@ -0,0 +1,88 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + IUniswapV3PoolDerivedState, + IUniswapV3PoolDerivedStateInterface, +} from "../../../../../../@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState"; + +const _abi = [ + { + inputs: [ + { + internalType: "uint32[]", + name: "secondsAgos", + type: "uint32[]", + }, + ], + name: "observe", + outputs: [ + { + internalType: "int56[]", + name: "tickCumulatives", + type: "int56[]", + }, + { + internalType: "uint160[]", + name: "secondsPerLiquidityCumulativeX128s", + type: "uint160[]", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "int24", + name: "tickLower", + type: "int24", + }, + { + internalType: "int24", + name: "tickUpper", + type: "int24", + }, + ], + name: "snapshotCumulativesInside", + outputs: [ + { + internalType: "int56", + name: "tickCumulativeInside", + type: "int56", + }, + { + internalType: "uint160", + name: "secondsPerLiquidityInsideX128", + type: "uint160", + }, + { + internalType: "uint32", + name: "secondsInside", + type: "uint32", + }, + ], + stateMutability: "view", + type: "function", + }, +] as const; + +export class IUniswapV3PoolDerivedState__factory { + static readonly abi = _abi; + static createInterface(): IUniswapV3PoolDerivedStateInterface { + return new utils.Interface(_abi) as IUniswapV3PoolDerivedStateInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): IUniswapV3PoolDerivedState { + return new Contract( + address, + _abi, + signerOrProvider + ) as IUniswapV3PoolDerivedState; + } +} diff --git a/typechain-types/factories/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents__factory.ts b/typechain-types/factories/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents__factory.ts new file mode 100644 index 00000000..47438de5 --- /dev/null +++ b/typechain-types/factories/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents__factory.ts @@ -0,0 +1,357 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + IUniswapV3PoolEvents, + IUniswapV3PoolEventsInterface, +} from "../../../../../../@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents"; + +const _abi = [ + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "owner", + type: "address", + }, + { + indexed: true, + internalType: "int24", + name: "tickLower", + type: "int24", + }, + { + indexed: true, + internalType: "int24", + name: "tickUpper", + type: "int24", + }, + { + indexed: false, + internalType: "uint128", + name: "amount", + type: "uint128", + }, + { + indexed: false, + internalType: "uint256", + name: "amount0", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "amount1", + type: "uint256", + }, + ], + name: "Burn", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "owner", + type: "address", + }, + { + indexed: false, + internalType: "address", + name: "recipient", + type: "address", + }, + { + indexed: true, + internalType: "int24", + name: "tickLower", + type: "int24", + }, + { + indexed: true, + internalType: "int24", + name: "tickUpper", + type: "int24", + }, + { + indexed: false, + internalType: "uint128", + name: "amount0", + type: "uint128", + }, + { + indexed: false, + internalType: "uint128", + name: "amount1", + type: "uint128", + }, + ], + name: "Collect", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "sender", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "recipient", + type: "address", + }, + { + indexed: false, + internalType: "uint128", + name: "amount0", + type: "uint128", + }, + { + indexed: false, + internalType: "uint128", + name: "amount1", + type: "uint128", + }, + ], + name: "CollectProtocol", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "sender", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "recipient", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "amount0", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "amount1", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "paid0", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "paid1", + type: "uint256", + }, + ], + name: "Flash", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint16", + name: "observationCardinalityNextOld", + type: "uint16", + }, + { + indexed: false, + internalType: "uint16", + name: "observationCardinalityNextNew", + type: "uint16", + }, + ], + name: "IncreaseObservationCardinalityNext", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint160", + name: "sqrtPriceX96", + type: "uint160", + }, + { + indexed: false, + internalType: "int24", + name: "tick", + type: "int24", + }, + ], + name: "Initialize", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "sender", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "owner", + type: "address", + }, + { + indexed: true, + internalType: "int24", + name: "tickLower", + type: "int24", + }, + { + indexed: true, + internalType: "int24", + name: "tickUpper", + type: "int24", + }, + { + indexed: false, + internalType: "uint128", + name: "amount", + type: "uint128", + }, + { + indexed: false, + internalType: "uint256", + name: "amount0", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "amount1", + type: "uint256", + }, + ], + name: "Mint", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint8", + name: "feeProtocol0Old", + type: "uint8", + }, + { + indexed: false, + internalType: "uint8", + name: "feeProtocol1Old", + type: "uint8", + }, + { + indexed: false, + internalType: "uint8", + name: "feeProtocol0New", + type: "uint8", + }, + { + indexed: false, + internalType: "uint8", + name: "feeProtocol1New", + type: "uint8", + }, + ], + name: "SetFeeProtocol", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "sender", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "recipient", + type: "address", + }, + { + indexed: false, + internalType: "int256", + name: "amount0", + type: "int256", + }, + { + indexed: false, + internalType: "int256", + name: "amount1", + type: "int256", + }, + { + indexed: false, + internalType: "uint160", + name: "sqrtPriceX96", + type: "uint160", + }, + { + indexed: false, + internalType: "uint128", + name: "liquidity", + type: "uint128", + }, + { + indexed: false, + internalType: "int24", + name: "tick", + type: "int24", + }, + ], + name: "Swap", + type: "event", + }, +] as const; + +export class IUniswapV3PoolEvents__factory { + static readonly abi = _abi; + static createInterface(): IUniswapV3PoolEventsInterface { + return new utils.Interface(_abi) as IUniswapV3PoolEventsInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): IUniswapV3PoolEvents { + return new Contract( + address, + _abi, + signerOrProvider + ) as IUniswapV3PoolEvents; + } +} diff --git a/typechain-types/factories/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables__factory.ts b/typechain-types/factories/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables__factory.ts new file mode 100644 index 00000000..aa602597 --- /dev/null +++ b/typechain-types/factories/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables__factory.ts @@ -0,0 +1,108 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + IUniswapV3PoolImmutables, + IUniswapV3PoolImmutablesInterface, +} from "../../../../../../@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables"; + +const _abi = [ + { + inputs: [], + name: "factory", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "fee", + outputs: [ + { + internalType: "uint24", + name: "", + type: "uint24", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "maxLiquidityPerTick", + outputs: [ + { + internalType: "uint128", + name: "", + type: "uint128", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "tickSpacing", + outputs: [ + { + internalType: "int24", + name: "", + type: "int24", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "token0", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "token1", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, +] as const; + +export class IUniswapV3PoolImmutables__factory { + static readonly abi = _abi; + static createInterface(): IUniswapV3PoolImmutablesInterface { + return new utils.Interface(_abi) as IUniswapV3PoolImmutablesInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): IUniswapV3PoolImmutables { + return new Contract( + address, + _abi, + signerOrProvider + ) as IUniswapV3PoolImmutables; + } +} diff --git a/typechain-types/factories/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions__factory.ts b/typechain-types/factories/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions__factory.ts new file mode 100644 index 00000000..3da8923a --- /dev/null +++ b/typechain-types/factories/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions__factory.ts @@ -0,0 +1,82 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + IUniswapV3PoolOwnerActions, + IUniswapV3PoolOwnerActionsInterface, +} from "../../../../../../@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions"; + +const _abi = [ + { + inputs: [ + { + internalType: "address", + name: "recipient", + type: "address", + }, + { + internalType: "uint128", + name: "amount0Requested", + type: "uint128", + }, + { + internalType: "uint128", + name: "amount1Requested", + type: "uint128", + }, + ], + name: "collectProtocol", + outputs: [ + { + internalType: "uint128", + name: "amount0", + type: "uint128", + }, + { + internalType: "uint128", + name: "amount1", + type: "uint128", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint8", + name: "feeProtocol0", + type: "uint8", + }, + { + internalType: "uint8", + name: "feeProtocol1", + type: "uint8", + }, + ], + name: "setFeeProtocol", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +export class IUniswapV3PoolOwnerActions__factory { + static readonly abi = _abi; + static createInterface(): IUniswapV3PoolOwnerActionsInterface { + return new utils.Interface(_abi) as IUniswapV3PoolOwnerActionsInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): IUniswapV3PoolOwnerActions { + return new Contract( + address, + _abi, + signerOrProvider + ) as IUniswapV3PoolOwnerActions; + } +} diff --git a/typechain-types/factories/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState__factory.ts b/typechain-types/factories/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState__factory.ts new file mode 100644 index 00000000..8d4cc25f --- /dev/null +++ b/typechain-types/factories/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState__factory.ts @@ -0,0 +1,272 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + IUniswapV3PoolState, + IUniswapV3PoolStateInterface, +} from "../../../../../../@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState"; + +const _abi = [ + { + inputs: [], + name: "feeGrowthGlobal0X128", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "feeGrowthGlobal1X128", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "liquidity", + outputs: [ + { + internalType: "uint128", + name: "", + type: "uint128", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "index", + type: "uint256", + }, + ], + name: "observations", + outputs: [ + { + internalType: "uint32", + name: "blockTimestamp", + type: "uint32", + }, + { + internalType: "int56", + name: "tickCumulative", + type: "int56", + }, + { + internalType: "uint160", + name: "secondsPerLiquidityCumulativeX128", + type: "uint160", + }, + { + internalType: "bool", + name: "initialized", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "key", + type: "bytes32", + }, + ], + name: "positions", + outputs: [ + { + internalType: "uint128", + name: "_liquidity", + type: "uint128", + }, + { + internalType: "uint256", + name: "feeGrowthInside0LastX128", + type: "uint256", + }, + { + internalType: "uint256", + name: "feeGrowthInside1LastX128", + type: "uint256", + }, + { + internalType: "uint128", + name: "tokensOwed0", + type: "uint128", + }, + { + internalType: "uint128", + name: "tokensOwed1", + type: "uint128", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "protocolFees", + outputs: [ + { + internalType: "uint128", + name: "token0", + type: "uint128", + }, + { + internalType: "uint128", + name: "token1", + type: "uint128", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "slot0", + outputs: [ + { + internalType: "uint160", + name: "sqrtPriceX96", + type: "uint160", + }, + { + internalType: "int24", + name: "tick", + type: "int24", + }, + { + internalType: "uint16", + name: "observationIndex", + type: "uint16", + }, + { + internalType: "uint16", + name: "observationCardinality", + type: "uint16", + }, + { + internalType: "uint16", + name: "observationCardinalityNext", + type: "uint16", + }, + { + internalType: "uint8", + name: "feeProtocol", + type: "uint8", + }, + { + internalType: "bool", + name: "unlocked", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "int16", + name: "wordPosition", + type: "int16", + }, + ], + name: "tickBitmap", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "int24", + name: "tick", + type: "int24", + }, + ], + name: "ticks", + outputs: [ + { + internalType: "uint128", + name: "liquidityGross", + type: "uint128", + }, + { + internalType: "int128", + name: "liquidityNet", + type: "int128", + }, + { + internalType: "uint256", + name: "feeGrowthOutside0X128", + type: "uint256", + }, + { + internalType: "uint256", + name: "feeGrowthOutside1X128", + type: "uint256", + }, + { + internalType: "int56", + name: "tickCumulativeOutside", + type: "int56", + }, + { + internalType: "uint160", + name: "secondsPerLiquidityOutsideX128", + type: "uint160", + }, + { + internalType: "uint32", + name: "secondsOutside", + type: "uint32", + }, + { + internalType: "bool", + name: "initialized", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, +] as const; + +export class IUniswapV3PoolState__factory { + static readonly abi = _abi; + static createInterface(): IUniswapV3PoolStateInterface { + return new utils.Interface(_abi) as IUniswapV3PoolStateInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): IUniswapV3PoolState { + return new Contract(address, _abi, signerOrProvider) as IUniswapV3PoolState; + } +} diff --git a/typechain-types/factories/@uniswap/v3-core/contracts/interfaces/pool/index.ts b/typechain-types/factories/@uniswap/v3-core/contracts/interfaces/pool/index.ts new file mode 100644 index 00000000..eaf51874 --- /dev/null +++ b/typechain-types/factories/@uniswap/v3-core/contracts/interfaces/pool/index.ts @@ -0,0 +1,9 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { IUniswapV3PoolActions__factory } from "./IUniswapV3PoolActions__factory"; +export { IUniswapV3PoolDerivedState__factory } from "./IUniswapV3PoolDerivedState__factory"; +export { IUniswapV3PoolEvents__factory } from "./IUniswapV3PoolEvents__factory"; +export { IUniswapV3PoolImmutables__factory } from "./IUniswapV3PoolImmutables__factory"; +export { IUniswapV3PoolOwnerActions__factory } from "./IUniswapV3PoolOwnerActions__factory"; +export { IUniswapV3PoolState__factory } from "./IUniswapV3PoolState__factory"; 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 1b86e980..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 = - "0x60a06040523480156200001157600080fd5b50604051620012c3380380620012c383398181016040528101906200003791906200027c565b60008060006101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480620000b95750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80620000f15750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80620001295750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b1562000161576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b8152505082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505062000341565b600081519050620002768162000327565b92915050565b6000806000806080858703121562000299576200029862000322565b5b6000620002a98782880162000265565b9450506020620002bc8782880162000265565b9350506040620002cf8782880162000265565b9250506060620002e28782880162000265565b91505092959194509250565b6000620002fb8262000302565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200033281620002ee565b81146200033e57600080fd5b50565b60805160601c610f636200036060003960006102160152610f636000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636128480f1161008c5780639122c344116100665780639122c344146101a2578063942a5e16146101be578063ec026901146101da578063f7fb869b146101f6576100cf565b80636128480f14610172578063779e3b631461018e5780638456cb5914610198576100cf565b806321e093b1146100d457806329dd214d146100f2578063328a01d01461010e5780633f4ba83a1461012c5780635b112591146101365780635c975abb14610154575b600080fd5b6100dc610214565b6040516100e99190610d76565b60405180910390f35b61010c60048036038101906101079190610bfa565b610238565b005b610116610242565b6040516101239190610d76565b60405180910390f35b610134610268565b005b61013e610304565b60405161014b9190610d76565b60405180910390f35b61015c61032a565b6040516101699190610dba565b60405180910390f35b61018c60048036038101906101879190610aeb565b610340565b005b6101966104b6565b005b6101a0610636565b005b6101bc60048036038101906101b79190610aeb565b6106d2565b005b6101d860048036038101906101d39190610b18565b6108a4565b005b6101f460048036038101906101ef9190610cc9565b6108af565b005b6101fe6108b2565b60405161020b9190610d76565b60405180910390f35b7f000000000000000000000000000000000000000000000000000000000000000081565b5050505050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146102fa57336040517f4677a0d30000000000000000000000000000000000000000000000000000000081526004016102f19190610d76565b60405180910390fd5b6103026108d8565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900460ff16905090565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103d257336040517f4677a0d30000000000000000000000000000000000000000000000000000000081526004016103c99190610d76565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610439576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd41d83655d484bdf299598751c371b2d92088667266fe3774b25a97bdd5d039733826040516104ab929190610d91565b60405180910390a150565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461054857336040517fe700765e00000000000000000000000000000000000000000000000000000000815260040161053f9190610d76565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156105d1576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106c857336040517f4677a0d30000000000000000000000000000000000000000000000000000000081526004016106bf9190610d76565b60405180910390fd5b6106d061093a565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561077e5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b156107c057336040517fcdfcef970000000000000000000000000000000000000000000000000000000081526004016107b79190610d76565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610827576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff3382604051610899929190610d91565b60405180910390a150565b505050505050505050565b50565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6108e061099c565b60008060006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6109236109e5565b6040516109309190610d76565b60405180910390a1565b6109426109ed565b60016000806101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586109856109e5565b6040516109929190610d76565b60405180910390a1565b6109a461032a565b6109e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109da90610dd5565b60405180910390fd5b565b600033905090565b6109f561032a565b15610a35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2c90610df5565b60405180910390fd5b565b600081359050610a4681610ee8565b92915050565b600081359050610a5b81610eff565b92915050565b60008083601f840112610a7757610a76610e7d565b5b8235905067ffffffffffffffff811115610a9457610a93610e78565b5b602083019150836001820283011115610ab057610aaf610e87565b5b9250929050565b600060c08284031215610acd57610acc610e82565b5b81905092915050565b600081359050610ae581610f16565b92915050565b600060208284031215610b0157610b00610e91565b5b6000610b0f84828501610a37565b91505092915050565b600080600080600080600080600060e08a8c031215610b3a57610b39610e91565b5b6000610b488c828d01610a37565b9950506020610b598c828d01610ad6565b98505060408a013567ffffffffffffffff811115610b7a57610b79610e8c565b5b610b868c828d01610a61565b97509750506060610b998c828d01610ad6565b9550506080610baa8c828d01610ad6565b94505060a08a013567ffffffffffffffff811115610bcb57610bca610e8c565b5b610bd78c828d01610a61565b935093505060c0610bea8c828d01610a4c565b9150509295985092959850929598565b60008060008060008060008060c0898b031215610c1a57610c19610e91565b5b600089013567ffffffffffffffff811115610c3857610c37610e8c565b5b610c448b828c01610a61565b98509850506020610c578b828c01610ad6565b9650506040610c688b828c01610a37565b9550506060610c798b828c01610ad6565b945050608089013567ffffffffffffffff811115610c9a57610c99610e8c565b5b610ca68b828c01610a61565b935093505060a0610cb98b828c01610a4c565b9150509295985092959890939650565b600060208284031215610cdf57610cde610e91565b5b600082013567ffffffffffffffff811115610cfd57610cfc610e8c565b5b610d0984828501610ab7565b91505092915050565b610d1b81610e26565b82525050565b610d2a81610e38565b82525050565b6000610d3d601483610e15565b9150610d4882610e96565b602082019050919050565b6000610d60601083610e15565b9150610d6b82610ebf565b602082019050919050565b6000602082019050610d8b6000830184610d12565b92915050565b6000604082019050610da66000830185610d12565b610db36020830184610d12565b9392505050565b6000602082019050610dcf6000830184610d21565b92915050565b60006020820190508181036000830152610dee81610d30565b9050919050565b60006020820190508181036000830152610e0e81610d53565b9050919050565b600082825260208201905092915050565b6000610e3182610e4e565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b610ef181610e26565b8114610efc57600080fd5b50565b610f0881610e44565b8114610f1357600080fd5b50565b610f1f81610e6e565b8114610f2a57600080fd5b5056fea264697066735822122091d42cc99d1647645b48218062c24a645660da47f026e339bb2a22289ce06c2564736f6c63430008070033"; + "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 84b7c928..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 = - "0x60a06040523480156200001157600080fd5b506040516200208b3803806200208b833981810160405281019062000037919062000284565b8383838360008060006101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480620000bd5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80620000f55750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b806200012d5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b1562000165576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b8152505082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050505050505062000349565b6000815190506200027e816200032f565b92915050565b60008060008060808587031215620002a157620002a06200032a565b5b6000620002b1878288016200026d565b9450506020620002c4878288016200026d565b9350506040620002d7878288016200026d565b9250506060620002ea878288016200026d565b91505092959194509250565b600062000303826200030a565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200033a81620002f6565b81146200034657600080fd5b50565b60805160601c611d07620003846000396000818161024f01528181610275015281816103b701528181610d3a0152610fbd0152611d076000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80636128480f1161008c5780639122c344116100665780639122c344146101db578063942a5e16146101f7578063ec02690114610213578063f7fb869b1461022f576100ea565b80636128480f146101ab578063779e3b63146101c75780638456cb59146101d1576100ea565b8063328a01d0116100c8578063328a01d0146101475780633f4ba83a146101655780635b1125911461016f5780635c975abb1461018d576100ea565b806321e093b1146100ef578063252bc8861461010d57806329dd214d1461012b575b600080fd5b6100f761024d565b6040516101049190611828565b60405180910390f35b610115610271565b6040516101229190611a95565b60405180910390f35b610145600480360381019061014091906114df565b610321565b005b61014f61063a565b60405161015c9190611828565b60405180910390f35b61016d610660565b005b6101776106fc565b6040516101849190611828565b60405180910390f35b610195610722565b6040516101a291906119ad565b60405180910390f35b6101c560048036038101906101c091906113a3565b610738565b005b6101cf6108ae565b005b6101d9610a2e565b005b6101f560048036038101906101f091906113a3565b610aca565b005b610211600480360381019061020c91906113d0565b610c9c565b005b61022d600480360381019061022891906115ae565b610fb1565b005b610237611140565b6040516102449190611828565b60405180910390f35b7f000000000000000000000000000000000000000000000000000000000000000081565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016102cc9190611828565b60206040518083038186803b1580156102e457600080fd5b505afa1580156102f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061031c91906115f7565b905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103b357336040517fff70ace20000000000000000000000000000000000000000000000000000000081526004016103aa9190611828565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb87876040518363ffffffff1660e01b815260040161041092919061191f565b602060405180830381600087803b15801561042a57600080fd5b505af115801561043e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046291906114b2565b90508061049b576040517f20878f6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008484905011156105d7578573ffffffffffffffffffffffffffffffffffffffff16633749c51a6040518060a001604052808c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505081526020018a81526020018973ffffffffffffffffffffffffffffffffffffffff16815260200188815260200187878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508152506040518263ffffffff1660e01b81526004016105a49190611a51565b600060405180830381600087803b1580156105be57600080fd5b505af11580156105d2573d6000803e3d6000fd5b505050505b818673ffffffffffffffffffffffffffffffffffffffff16887ff1302855733b40d8acb467ee990b6d56c05c80e28ebcabfa6e6f3f57cb50d6988c8c8a8a8a6040516106279594939291906119c8565b60405180910390a4505050505050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106f257336040517f4677a0d30000000000000000000000000000000000000000000000000000000081526004016106e99190611828565b60405180910390fd5b6106fa611166565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900460ff16905090565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107ca57336040517f4677a0d30000000000000000000000000000000000000000000000000000000081526004016107c19190611828565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610831576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd41d83655d484bdf299598751c371b2d92088667266fe3774b25a97bdd5d039733826040516108a3929190611843565b60405180910390a150565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461094057336040517fe700765e0000000000000000000000000000000000000000000000000000000081526004016109379190611828565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156109c9576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ac057336040517f4677a0d3000000000000000000000000000000000000000000000000000000008152600401610ab79190611828565b60405180910390fd5b610ac86111c8565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610b765750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15610bb857336040517fcdfcef97000000000000000000000000000000000000000000000000000000008152600401610baf9190611828565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610c1f576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff3382604051610c91929190611843565b60405180910390a150565b610ca461122a565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d3657336040517fff70ace2000000000000000000000000000000000000000000000000000000008152600401610d2d9190611828565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8b876040518363ffffffff1660e01b8152600401610d9392919061191f565b602060405180830381600087803b158015610dad57600080fd5b505af1158015610dc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de591906114b2565b905080610e1e576040517f20878f6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000848490501115610f60578973ffffffffffffffffffffffffffffffffffffffff16633ff0693c6040518060c001604052808d73ffffffffffffffffffffffffffffffffffffffff1681526020018c81526020018b8b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050815260200189815260200188815260200187878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508152506040518263ffffffff1660e01b8152600401610f2d9190611a73565b600060405180830381600087803b158015610f4757600080fd5b505af1158015610f5b573d6000803e3d6000fd5b505050505b81867f521fb0b407c2eb9b1375530e9b9a569889992140a688bc076aa72c1712012c888c8c8c8c8b8b8b604051610f9d9796959493929190611948565b60405180910390a350505050505050505050565b610fb961122a565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166323b872dd333085608001356040518463ffffffff1660e01b815260040161101c9392919061186c565b602060405180830381600087803b15801561103657600080fd5b505af115801561104a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106e91906114b2565b9050806110a7576040517f20878f6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600001353373ffffffffffffffffffffffffffffffffffffffff167f7ec1c94701e09b1652f3e1d307e60c4b9ebf99aff8c2079fd1d8c585e031c4e4328580602001906110f59190611ab0565b8760800135886040013589806060019061110f9190611ab0565b8b8060a0019061111f9190611ab0565b604051611134999897969594939291906118a3565b60405180910390a35050565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61116e611274565b60008060006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6111b16112bd565b6040516111be9190611828565b60405180910390a1565b6111d061122a565b60016000806101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586112136112bd565b6040516112209190611828565b60405180910390a1565b611232610722565b15611272576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126990611a31565b60405180910390fd5b565b61127c610722565b6112bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b290611a11565b60405180910390fd5b565b600033905090565b6000813590506112d481611c75565b92915050565b6000815190506112e981611c8c565b92915050565b6000813590506112fe81611ca3565b92915050565b60008083601f84011261131a57611319611bea565b5b8235905067ffffffffffffffff81111561133757611336611be5565b5b60208301915083600182028301111561135357611352611bfe565b5b9250929050565b600060c082840312156113705761136f611bf4565b5b81905092915050565b60008135905061138881611cba565b92915050565b60008151905061139d81611cba565b92915050565b6000602082840312156113b9576113b8611c0d565b5b60006113c7848285016112c5565b91505092915050565b600080600080600080600080600060e08a8c0312156113f2576113f1611c0d565b5b60006114008c828d016112c5565b99505060206114118c828d01611379565b98505060408a013567ffffffffffffffff81111561143257611431611c08565b5b61143e8c828d01611304565b975097505060606114518c828d01611379565b95505060806114628c828d01611379565b94505060a08a013567ffffffffffffffff81111561148357611482611c08565b5b61148f8c828d01611304565b935093505060c06114a28c828d016112ef565b9150509295985092959850929598565b6000602082840312156114c8576114c7611c0d565b5b60006114d6848285016112da565b91505092915050565b60008060008060008060008060c0898b0312156114ff576114fe611c0d565b5b600089013567ffffffffffffffff81111561151d5761151c611c08565b5b6115298b828c01611304565b9850985050602061153c8b828c01611379565b965050604061154d8b828c016112c5565b955050606061155e8b828c01611379565b945050608089013567ffffffffffffffff81111561157f5761157e611c08565b5b61158b8b828c01611304565b935093505060a061159e8b828c016112ef565b9150509295985092959890939650565b6000602082840312156115c4576115c3611c0d565b5b600082013567ffffffffffffffff8111156115e2576115e1611c08565b5b6115ee8482850161135a565b91505092915050565b60006020828403121561160d5761160c611c0d565b5b600061161b8482850161138e565b91505092915050565b61162d81611b51565b82525050565b61163c81611b51565b82525050565b61164b81611b63565b82525050565b600061165d8385611b2f565b935061166a838584611ba3565b61167383611c12565b840190509392505050565b600061168982611b13565b6116938185611b1e565b93506116a3818560208601611bb2565b6116ac81611c12565b840191505092915050565b60006116c4601483611b40565b91506116cf82611c23565b602082019050919050565b60006116e7601083611b40565b91506116f282611c4c565b602082019050919050565b600060a083016000830151848203600086015261171a828261167e565b915050602083015161172f602086018261180a565b5060408301516117426040860182611624565b506060830151611755606086018261180a565b506080830151848203608086015261176d828261167e565b9150508091505092915050565b600060c0830160008301516117926000860182611624565b5060208301516117a5602086018261180a565b50604083015184820360408601526117bd828261167e565b91505060608301516117d2606086018261180a565b5060808301516117e5608086018261180a565b5060a083015184820360a08601526117fd828261167e565b9150508091505092915050565b61181381611b99565b82525050565b61182281611b99565b82525050565b600060208201905061183d6000830184611633565b92915050565b60006040820190506118586000830185611633565b6118656020830184611633565b9392505050565b60006060820190506118816000830186611633565b61188e6020830185611633565b61189b6040830184611819565b949350505050565b600060c0820190506118b8600083018c611633565b81810360208301526118cb818a8c611651565b90506118da6040830189611819565b6118e76060830188611819565b81810360808301526118fa818688611651565b905081810360a083015261190f818486611651565b90509a9950505050505050505050565b60006040820190506119346000830185611633565b6119416020830184611819565b9392505050565b600060a08201905061195d600083018a611633565b61196a6020830189611819565b818103604083015261197d818789611651565b905061198c6060830186611819565b818103608083015261199f818486611651565b905098975050505050505050565b60006020820190506119c26000830184611642565b92915050565b600060608201905081810360008301526119e3818789611651565b90506119f26020830186611819565b8181036040830152611a05818486611651565b90509695505050505050565b60006020820190508181036000830152611a2a816116b7565b9050919050565b60006020820190508181036000830152611a4a816116da565b9050919050565b60006020820190508181036000830152611a6b81846116fd565b905092915050565b60006020820190508181036000830152611a8d818461177a565b905092915050565b6000602082019050611aaa6000830184611819565b92915050565b60008083356001602003843603038112611acd57611acc611bf9565b5b80840192508235915067ffffffffffffffff821115611aef57611aee611bef565b5b602083019250600182023603831315611b0b57611b0a611c03565b5b509250929050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611b5c82611b79565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015611bd0578082015181840152602081019050611bb5565b83811115611bdf576000848401525b50505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b611c7e81611b51565b8114611c8957600080fd5b50565b611c9581611b63565b8114611ca057600080fd5b50565b611cac81611b6f565b8114611cb757600080fd5b50565b611cc381611b99565b8114611cce57600080fd5b5056fea2646970667358221220965ae7a7b3e1b1d7f41e45ff8910dbe81398d6dd01a31cdd2642e77a243a809364736f6c63430008070033"; + "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 0b7414cc..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 = - "0x60a06040527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6003553480156200003557600080fd5b50604051620022e7380380620022e783398181016040528101906200005b9190620002a8565b8383838360008060006101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480620000e15750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80620001195750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80620001515750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b1562000189576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b8152505082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050505050506200036d565b600081519050620002a28162000353565b92915050565b60008060008060808587031215620002c557620002c46200034e565b5b6000620002d58782880162000291565b9450506020620002e88782880162000291565b9350506040620002fb8782880162000291565b92505060606200030e8782880162000291565b91505092959194509250565b600062000327826200032e565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200035e816200031a565b81146200036a57600080fd5b50565b60805160601c611f31620003b66000396000818161029f015281816102c501528181610408015281816104f601528181610ebe01528181610fac01526111db0152611f316000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80636f8b44b011610097578063942a5e1611610066578063942a5e1614610229578063d5abeb0114610245578063ec02690114610263578063f7fb869b1461027f57610100565b80636f8b44b0146101dd578063779e3b63146101f95780638456cb59146102035780639122c3441461020d57610100565b80633f4ba83a116100d35780633f4ba83a1461017b5780635b112591146101855780635c975abb146101a35780636128480f146101c157610100565b806321e093b114610105578063252bc8861461012357806329dd214d14610141578063328a01d01461015d575b600080fd5b61010d61029d565b60405161011a91906119e4565b60405180910390f35b61012b6102c1565b6040516101389190611c51565b60405180910390f35b61015b6004803603810190610156919061165f565b610371565b005b610165610721565b60405161017291906119e4565b60405180910390f35b610183610747565b005b61018d6107e3565b60405161019a91906119e4565b60405180910390f35b6101ab610809565b6040516101b89190611b69565b60405180910390f35b6101db60048036038101906101d69190611550565b61081f565b005b6101f760048036038101906101f29190611777565b610995565b005b610201610a31565b005b61020b610bb1565b005b61022760048036038101906102229190611550565b610c4d565b005b610243600480360381019061023e919061157d565b610e1f565b005b61024d6111cb565b60405161025a9190611c51565b60405180910390f35b61027d6004803603810190610278919061172e565b6111d1565b005b610287611302565b60405161029491906119e4565b60405180910390f35b7f000000000000000000000000000000000000000000000000000000000000000081565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161031c91906119e4565b60206040518083038186803b15801561033457600080fd5b505afa158015610348573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061036c91906117a4565b905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461040357336040517fff70ace20000000000000000000000000000000000000000000000000000000081526004016103fa91906119e4565b60405180910390fd5b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561046c57600080fd5b505afa158015610480573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a491906117a4565b856104af9190611d0d565b11156104f4576003546040517f3d3dbc830000000000000000000000000000000000000000000000000000000081526004016104eb9190611c51565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e458bee8686846040518463ffffffff1660e01b815260040161055193929190611acd565b600060405180830381600087803b15801561056b57600080fd5b505af115801561057f573d6000803e3d6000fd5b5050505060008383905011156106bf578473ffffffffffffffffffffffffffffffffffffffff16633749c51a6040518060a001604052808b8b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505081526020018981526020018873ffffffffffffffffffffffffffffffffffffffff16815260200187815260200186868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508152506040518263ffffffff1660e01b815260040161068c9190611c0d565b600060405180830381600087803b1580156106a657600080fd5b505af11580156106ba573d6000803e3d6000fd5b505050505b808573ffffffffffffffffffffffffffffffffffffffff16877ff1302855733b40d8acb467ee990b6d56c05c80e28ebcabfa6e6f3f57cb50d6988b8b89898960405161070f959493929190611b84565b60405180910390a45050505050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107d957336040517f4677a0d30000000000000000000000000000000000000000000000000000000081526004016107d091906119e4565b60405180910390fd5b6107e1611328565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900460ff16905090565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108b157336040517f4677a0d30000000000000000000000000000000000000000000000000000000081526004016108a891906119e4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610918576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd41d83655d484bdf299598751c371b2d92088667266fe3774b25a97bdd5d0397338260405161098a9291906119ff565b60405180910390a150565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a2757336040517fff70ace2000000000000000000000000000000000000000000000000000000008152600401610a1e91906119e4565b60405180910390fd5b8060038190555050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ac357336040517fe700765e000000000000000000000000000000000000000000000000000000008152600401610aba91906119e4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610b4c576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c4357336040517f4677a0d3000000000000000000000000000000000000000000000000000000008152600401610c3a91906119e4565b60405180910390fd5b610c4b61138a565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610cf95750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15610d3b57336040517fcdfcef97000000000000000000000000000000000000000000000000000000008152600401610d3291906119e4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610da2576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff3382604051610e149291906119ff565b60405180910390a150565b610e276113ec565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610eb957336040517fff70ace2000000000000000000000000000000000000000000000000000000008152600401610eb091906119e4565b60405180910390fd5b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610f2257600080fd5b505afa158015610f36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5a91906117a4565b85610f659190611d0d565b1115610faa576003546040517f3d3dbc83000000000000000000000000000000000000000000000000000000008152600401610fa19190611c51565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e458bee8a86846040518463ffffffff1660e01b815260040161100793929190611acd565b600060405180830381600087803b15801561102157600080fd5b505af1158015611035573d6000803e3d6000fd5b50505050600083839050111561117b578873ffffffffffffffffffffffffffffffffffffffff16633ff0693c6040518060c001604052808c73ffffffffffffffffffffffffffffffffffffffff1681526020018b81526020018a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050815260200188815260200187815260200186868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508152506040518263ffffffff1660e01b81526004016111489190611c2f565b600060405180830381600087803b15801561116257600080fd5b505af1158015611176573d6000803e3d6000fd5b505050505b80857f521fb0b407c2eb9b1375530e9b9a569889992140a688bc076aa72c1712012c888b8b8b8b8a8a8a6040516111b89796959493929190611b04565b60405180910390a3505050505050505050565b60035481565b6111d96113ec565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166379cc67903383608001356040518363ffffffff1660e01b8152600401611238929190611aa4565b600060405180830381600087803b15801561125257600080fd5b505af1158015611266573d6000803e3d6000fd5b5050505080600001353373ffffffffffffffffffffffffffffffffffffffff167f7ec1c94701e09b1652f3e1d307e60c4b9ebf99aff8c2079fd1d8c585e031c4e4328480602001906112b89190611c6c565b866080013587604001358880606001906112d29190611c6c565b8a8060a001906112e29190611c6c565b6040516112f799989796959493929190611a28565b60405180910390a350565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611330611436565b60008060006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa61137361147f565b60405161138091906119e4565b60405180910390a1565b6113926113ec565b60016000806101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586113d561147f565b6040516113e291906119e4565b60405180910390a1565b6113f4610809565b15611434576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142b90611bed565b60405180910390fd5b565b61143e610809565b61147d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147490611bcd565b60405180910390fd5b565b600033905090565b60008135905061149681611eb6565b92915050565b6000813590506114ab81611ecd565b92915050565b60008083601f8401126114c7576114c6611e2b565b5b8235905067ffffffffffffffff8111156114e4576114e3611e26565b5b602083019150836001820283011115611500576114ff611e3f565b5b9250929050565b600060c0828403121561151d5761151c611e35565b5b81905092915050565b60008135905061153581611ee4565b92915050565b60008151905061154a81611ee4565b92915050565b60006020828403121561156657611565611e4e565b5b600061157484828501611487565b91505092915050565b600080600080600080600080600060e08a8c03121561159f5761159e611e4e565b5b60006115ad8c828d01611487565b99505060206115be8c828d01611526565b98505060408a013567ffffffffffffffff8111156115df576115de611e49565b5b6115eb8c828d016114b1565b975097505060606115fe8c828d01611526565b955050608061160f8c828d01611526565b94505060a08a013567ffffffffffffffff8111156116305761162f611e49565b5b61163c8c828d016114b1565b935093505060c061164f8c828d0161149c565b9150509295985092959850929598565b60008060008060008060008060c0898b03121561167f5761167e611e4e565b5b600089013567ffffffffffffffff81111561169d5761169c611e49565b5b6116a98b828c016114b1565b985098505060206116bc8b828c01611526565b96505060406116cd8b828c01611487565b95505060606116de8b828c01611526565b945050608089013567ffffffffffffffff8111156116ff576116fe611e49565b5b61170b8b828c016114b1565b935093505060a061171e8b828c0161149c565b9150509295985092959890939650565b60006020828403121561174457611743611e4e565b5b600082013567ffffffffffffffff81111561176257611761611e49565b5b61176e84828501611507565b91505092915050565b60006020828403121561178d5761178c611e4e565b5b600061179b84828501611526565b91505092915050565b6000602082840312156117ba576117b9611e4e565b5b60006117c88482850161153b565b91505092915050565b6117da81611d63565b82525050565b6117e981611d63565b82525050565b6117f881611d75565b82525050565b61180781611d81565b82525050565b60006118198385611ceb565b9350611826838584611db5565b61182f83611e53565b840190509392505050565b600061184582611ccf565b61184f8185611cda565b935061185f818560208601611dc4565b61186881611e53565b840191505092915050565b6000611880601483611cfc565b915061188b82611e64565b602082019050919050565b60006118a3601083611cfc565b91506118ae82611e8d565b602082019050919050565b600060a08301600083015184820360008601526118d6828261183a565b91505060208301516118eb60208601826119c6565b5060408301516118fe60408601826117d1565b50606083015161191160608601826119c6565b5060808301518482036080860152611929828261183a565b9150508091505092915050565b600060c08301600083015161194e60008601826117d1565b50602083015161196160208601826119c6565b5060408301518482036040860152611979828261183a565b915050606083015161198e60608601826119c6565b5060808301516119a160808601826119c6565b5060a083015184820360a08601526119b9828261183a565b9150508091505092915050565b6119cf81611dab565b82525050565b6119de81611dab565b82525050565b60006020820190506119f960008301846117e0565b92915050565b6000604082019050611a1460008301856117e0565b611a2160208301846117e0565b9392505050565b600060c082019050611a3d600083018c6117e0565b8181036020830152611a50818a8c61180d565b9050611a5f60408301896119d5565b611a6c60608301886119d5565b8181036080830152611a7f81868861180d565b905081810360a0830152611a9481848661180d565b90509a9950505050505050505050565b6000604082019050611ab960008301856117e0565b611ac660208301846119d5565b9392505050565b6000606082019050611ae260008301866117e0565b611aef60208301856119d5565b611afc60408301846117fe565b949350505050565b600060a082019050611b19600083018a6117e0565b611b2660208301896119d5565b8181036040830152611b3981878961180d565b9050611b4860608301866119d5565b8181036080830152611b5b81848661180d565b905098975050505050505050565b6000602082019050611b7e60008301846117ef565b92915050565b60006060820190508181036000830152611b9f81878961180d565b9050611bae60208301866119d5565b8181036040830152611bc181848661180d565b90509695505050505050565b60006020820190508181036000830152611be681611873565b9050919050565b60006020820190508181036000830152611c0681611896565b9050919050565b60006020820190508181036000830152611c2781846118b9565b905092915050565b60006020820190508181036000830152611c498184611936565b905092915050565b6000602082019050611c6660008301846119d5565b92915050565b60008083356001602003843603038112611c8957611c88611e3a565b5b80840192508235915067ffffffffffffffff821115611cab57611caa611e30565b5b602083019250600182023603831315611cc757611cc6611e44565b5b509250929050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611d1882611dab565b9150611d2383611dab565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611d5857611d57611df7565b5b828201905092915050565b6000611d6e82611d8b565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015611de2578082015181840152602081019050611dc7565b83811115611df1576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b611ebf81611d63565b8114611eca57600080fd5b50565b611ed681611d81565b8114611ee157600080fd5b50565b611eed81611dab565b8114611ef857600080fd5b5056fea2646970667358221220394b14a4b3145b4d15fcca9ea9dbe6283cfa02a8bdf213cd3d4987570ea91ced64736f6c63430008070033"; + "0x60a06040527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6003553480156200003557600080fd5b506040516200237b3803806200237b83398181016040528101906200005b9190620002a8565b8383838360008060006101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480620000e15750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80620001195750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80620001515750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b1562000189576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b8152505082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050505050506200036d565b600081519050620002a28162000353565b92915050565b60008060008060808587031215620002c557620002c46200034e565b5b6000620002d58782880162000291565b9450506020620002e88782880162000291565b9350506040620002fb8782880162000291565b92505060606200030e8782880162000291565b91505092959194509250565b600062000327826200032e565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200035e816200031a565b81146200036a57600080fd5b50565b60805160601c611fc5620003b66000396000818161029f015281816102c501528181610408015281816104f601528181610f5201528181611040015261126f0152611fc56000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80636f8b44b011610097578063942a5e1611610066578063942a5e1614610229578063d5abeb0114610245578063ec02690114610263578063f7fb869b1461027f57610100565b80636f8b44b0146101dd578063779e3b63146101f95780638456cb59146102035780639122c3441461020d57610100565b80633f4ba83a116100d35780633f4ba83a1461017b5780635b112591146101855780635c975abb146101a35780636128480f146101c157610100565b806321e093b114610105578063252bc8861461012357806329dd214d14610141578063328a01d01461015d575b600080fd5b61010d61029d565b60405161011a9190611a78565b60405180910390f35b61012b6102c1565b6040516101389190611ce5565b60405180910390f35b61015b600480360381019061015691906116f3565b610371565b005b610165610721565b6040516101729190611a78565b60405180910390f35b610183610747565b005b61018d6107e3565b60405161019a9190611a78565b60405180910390f35b6101ab610809565b6040516101b89190611bfd565b60405180910390f35b6101db60048036038101906101d691906115e4565b61081f565b005b6101f760048036038101906101f2919061180b565b610995565b005b610201610a6a565b005b61020b610c45565b005b610227600480360381019061022291906115e4565b610ce1565b005b610243600480360381019061023e9190611611565b610eb3565b005b61024d61125f565b60405161025a9190611ce5565b60405180910390f35b61027d600480360381019061027891906117c2565b611265565b005b610287611396565b6040516102949190611a78565b60405180910390f35b7f000000000000000000000000000000000000000000000000000000000000000081565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161031c9190611a78565b60206040518083038186803b15801561033457600080fd5b505afa158015610348573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061036c9190611838565b905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461040357336040517fff70ace20000000000000000000000000000000000000000000000000000000081526004016103fa9190611a78565b60405180910390fd5b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561046c57600080fd5b505afa158015610480573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a49190611838565b856104af9190611da1565b11156104f4576003546040517f3d3dbc830000000000000000000000000000000000000000000000000000000081526004016104eb9190611ce5565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e458bee8686846040518463ffffffff1660e01b815260040161055193929190611b61565b600060405180830381600087803b15801561056b57600080fd5b505af115801561057f573d6000803e3d6000fd5b5050505060008383905011156106bf578473ffffffffffffffffffffffffffffffffffffffff16633749c51a6040518060a001604052808b8b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505081526020018981526020018873ffffffffffffffffffffffffffffffffffffffff16815260200187815260200186868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508152506040518263ffffffff1660e01b815260040161068c9190611ca1565b600060405180830381600087803b1580156106a657600080fd5b505af11580156106ba573d6000803e3d6000fd5b505050505b808573ffffffffffffffffffffffffffffffffffffffff16877ff1302855733b40d8acb467ee990b6d56c05c80e28ebcabfa6e6f3f57cb50d6988b8b89898960405161070f959493929190611c18565b60405180910390a45050505050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107d957336040517f4677a0d30000000000000000000000000000000000000000000000000000000081526004016107d09190611a78565b60405180910390fd5b6107e16113bc565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900460ff16905090565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108b157336040517f4677a0d30000000000000000000000000000000000000000000000000000000081526004016108a89190611a78565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610918576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd41d83655d484bdf299598751c371b2d92088667266fe3774b25a97bdd5d0397338260405161098a929190611a93565b60405180910390a150565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a2757336040517fff70ace2000000000000000000000000000000000000000000000000000000008152600401610a1e9190611a78565b60405180910390fd5b806003819055507f26843c619c87f9021bcc4ec5143177198076d9da3c13ce1bb2e941644c69d42e3382604051610a5f929190611b38565b60405180910390a150565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610afc57336040517fe700765e000000000000000000000000000000000000000000000000000000008152600401610af39190611a78565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610b85576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd033600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051610c3b929190611a93565b60405180910390a1565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610cd757336040517f4677a0d3000000000000000000000000000000000000000000000000000000008152600401610cce9190611a78565b60405180910390fd5b610cdf61141e565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610d8d5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15610dcf57336040517fcdfcef97000000000000000000000000000000000000000000000000000000008152600401610dc69190611a78565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610e36576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff3382604051610ea8929190611a93565b60405180910390a150565b610ebb611480565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f4d57336040517fff70ace2000000000000000000000000000000000000000000000000000000008152600401610f449190611a78565b60405180910390fd5b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610fb657600080fd5b505afa158015610fca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fee9190611838565b85610ff99190611da1565b111561103e576003546040517f3d3dbc830000000000000000000000000000000000000000000000000000000081526004016110359190611ce5565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e458bee8a86846040518463ffffffff1660e01b815260040161109b93929190611b61565b600060405180830381600087803b1580156110b557600080fd5b505af11580156110c9573d6000803e3d6000fd5b50505050600083839050111561120f578873ffffffffffffffffffffffffffffffffffffffff16633ff0693c6040518060c001604052808c73ffffffffffffffffffffffffffffffffffffffff1681526020018b81526020018a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050815260200188815260200187815260200186868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508152506040518263ffffffff1660e01b81526004016111dc9190611cc3565b600060405180830381600087803b1580156111f657600080fd5b505af115801561120a573d6000803e3d6000fd5b505050505b80857f521fb0b407c2eb9b1375530e9b9a569889992140a688bc076aa72c1712012c888b8b8b8b8a8a8a60405161124c9796959493929190611b98565b60405180910390a3505050505050505050565b60035481565b61126d611480565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166379cc67903383608001356040518363ffffffff1660e01b81526004016112cc929190611b38565b600060405180830381600087803b1580156112e657600080fd5b505af11580156112fa573d6000803e3d6000fd5b5050505080600001353373ffffffffffffffffffffffffffffffffffffffff167f7ec1c94701e09b1652f3e1d307e60c4b9ebf99aff8c2079fd1d8c585e031c4e43284806020019061134c9190611d00565b866080013587604001358880606001906113669190611d00565b8a8060a001906113769190611d00565b60405161138b99989796959493929190611abc565b60405180910390a350565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6113c46114ca565b60008060006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa611407611513565b6040516114149190611a78565b60405180910390a1565b611426611480565b60016000806101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611469611513565b6040516114769190611a78565b60405180910390a1565b611488610809565b156114c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bf90611c81565b60405180910390fd5b565b6114d2610809565b611511576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150890611c61565b60405180910390fd5b565b600033905090565b60008135905061152a81611f4a565b92915050565b60008135905061153f81611f61565b92915050565b60008083601f84011261155b5761155a611ebf565b5b8235905067ffffffffffffffff81111561157857611577611eba565b5b60208301915083600182028301111561159457611593611ed3565b5b9250929050565b600060c082840312156115b1576115b0611ec9565b5b81905092915050565b6000813590506115c981611f78565b92915050565b6000815190506115de81611f78565b92915050565b6000602082840312156115fa576115f9611ee2565b5b60006116088482850161151b565b91505092915050565b600080600080600080600080600060e08a8c03121561163357611632611ee2565b5b60006116418c828d0161151b565b99505060206116528c828d016115ba565b98505060408a013567ffffffffffffffff81111561167357611672611edd565b5b61167f8c828d01611545565b975097505060606116928c828d016115ba565b95505060806116a38c828d016115ba565b94505060a08a013567ffffffffffffffff8111156116c4576116c3611edd565b5b6116d08c828d01611545565b935093505060c06116e38c828d01611530565b9150509295985092959850929598565b60008060008060008060008060c0898b03121561171357611712611ee2565b5b600089013567ffffffffffffffff81111561173157611730611edd565b5b61173d8b828c01611545565b985098505060206117508b828c016115ba565b96505060406117618b828c0161151b565b95505060606117728b828c016115ba565b945050608089013567ffffffffffffffff81111561179357611792611edd565b5b61179f8b828c01611545565b935093505060a06117b28b828c01611530565b9150509295985092959890939650565b6000602082840312156117d8576117d7611ee2565b5b600082013567ffffffffffffffff8111156117f6576117f5611edd565b5b6118028482850161159b565b91505092915050565b60006020828403121561182157611820611ee2565b5b600061182f848285016115ba565b91505092915050565b60006020828403121561184e5761184d611ee2565b5b600061185c848285016115cf565b91505092915050565b61186e81611df7565b82525050565b61187d81611df7565b82525050565b61188c81611e09565b82525050565b61189b81611e15565b82525050565b60006118ad8385611d7f565b93506118ba838584611e49565b6118c383611ee7565b840190509392505050565b60006118d982611d63565b6118e38185611d6e565b93506118f3818560208601611e58565b6118fc81611ee7565b840191505092915050565b6000611914601483611d90565b915061191f82611ef8565b602082019050919050565b6000611937601083611d90565b915061194282611f21565b602082019050919050565b600060a083016000830151848203600086015261196a82826118ce565b915050602083015161197f6020860182611a5a565b5060408301516119926040860182611865565b5060608301516119a56060860182611a5a565b50608083015184820360808601526119bd82826118ce565b9150508091505092915050565b600060c0830160008301516119e26000860182611865565b5060208301516119f56020860182611a5a565b5060408301518482036040860152611a0d82826118ce565b9150506060830151611a226060860182611a5a565b506080830151611a356080860182611a5a565b5060a083015184820360a0860152611a4d82826118ce565b9150508091505092915050565b611a6381611e3f565b82525050565b611a7281611e3f565b82525050565b6000602082019050611a8d6000830184611874565b92915050565b6000604082019050611aa86000830185611874565b611ab56020830184611874565b9392505050565b600060c082019050611ad1600083018c611874565b8181036020830152611ae4818a8c6118a1565b9050611af36040830189611a69565b611b006060830188611a69565b8181036080830152611b138186886118a1565b905081810360a0830152611b288184866118a1565b90509a9950505050505050505050565b6000604082019050611b4d6000830185611874565b611b5a6020830184611a69565b9392505050565b6000606082019050611b766000830186611874565b611b836020830185611a69565b611b906040830184611892565b949350505050565b600060a082019050611bad600083018a611874565b611bba6020830189611a69565b8181036040830152611bcd8187896118a1565b9050611bdc6060830186611a69565b8181036080830152611bef8184866118a1565b905098975050505050505050565b6000602082019050611c126000830184611883565b92915050565b60006060820190508181036000830152611c338187896118a1565b9050611c426020830186611a69565b8181036040830152611c558184866118a1565b90509695505050505050565b60006020820190508181036000830152611c7a81611907565b9050919050565b60006020820190508181036000830152611c9a8161192a565b9050919050565b60006020820190508181036000830152611cbb818461194d565b905092915050565b60006020820190508181036000830152611cdd81846119ca565b905092915050565b6000602082019050611cfa6000830184611a69565b92915050565b60008083356001602003843603038112611d1d57611d1c611ece565b5b80840192508235915067ffffffffffffffff821115611d3f57611d3e611ec4565b5b602083019250600182023603831315611d5b57611d5a611ed8565b5b509250929050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611dac82611e3f565b9150611db783611e3f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611dec57611deb611e8b565b5b828201905092915050565b6000611e0282611e1f565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015611e76578082015181840152602081019050611e5b565b83811115611e85576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b611f5381611df7565b8114611f5e57600080fd5b50565b611f6a81611e15565b8114611f7557600080fd5b50565b611f8181611e3f565b8114611f8c57600080fd5b5056fea2646970667358221220af09dec3099b33c22fceeb145766f8056225d0604e40f061de22f5e64b79e8b564736f6c63430008070033"; type ZetaConnectorNonEthConstructorParams = | [signer?: Signer] diff --git a/typechain-types/factories/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaTokenConsumer__factory.ts b/typechain-types/factories/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaTokenConsumer__factory.ts index f52c0376..a097ead5 100644 --- a/typechain-types/factories/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaTokenConsumer__factory.ts +++ b/typechain-types/factories/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaTokenConsumer__factory.ts @@ -219,6 +219,19 @@ const _abi = [ stateMutability: "nonpayable", type: "function", }, + { + inputs: [], + name: "hasZetaLiquidity", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, ] as const; export class ZetaTokenConsumer__factory { 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 f61e9331..fb258d53 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 = - "0x60c06040523480156200001157600080fd5b506040516200123c3803806200123c833981810160405281019062000037919062000228565b80620000586200004c6200010760201b60201c565b6200010f60201b60201c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620000c0576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b46608081815250508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250505050620002ad565b600033905090565b600160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556200014a816200014d60201b620005bd1760201c565b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050620002228162000293565b92915050565b6000602082840312156200024157620002406200028e565b5b6000620002518482850162000211565b91505092915050565b600062000267826200026e565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200029e816200025a565b8114620002aa57600080fd5b50565b60805160a05160601c610f5f620002dd6000396000818161049b0152610683015260006103690152610f5f6000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806379ba50971161006657806379ba50971461013157806383f3084f1461013b5780638da5cb5b14610159578063e30c397814610177578063f2fde38b146101955761009e565b80632618143f146100a35780633749c51a146100d35780633ff0693c146100ef5780634fd3f7d71461010b578063715018a614610127575b600080fd5b6100bd60048036038101906100b891906109ea565b6101b1565b6040516100ca9190610c03565b60405180910390f35b6100ed60048036038101906100e89190610958565b610251565b005b610109600480360381019061010491906109a1565b6102e7565b005b61012560048036038101906101209190610a17565b6103c8565b005b61012f6103f8565b005b61013961040c565b005b610143610499565b6040516101509190610c25565b60405180910390f35b6101616104bd565b60405161016e9190610be8565b60405180910390f35b61017f6104e6565b60405161018c9190610be8565b60405180910390f35b6101af60048036038101906101aa919061092b565b610510565b005b600260205280600052604060002060009150905080546101d090610de4565b80601f01602080910402602001604051908101604052809291908181526020018280546101fc90610de4565b80156102495780601f1061021e57610100808354040283529160200191610249565b820191906000526020600020905b81548152906001019060200180831161022c57829003601f168201915b505050505081565b8061025a610681565b600260008260200135815260200190815260200160002060405161027e9190610bd1565b60405180910390208180600001906102969190610c80565b6040516102a4929190610bb8565b6040518091039020146102e3576040517fb473eb0a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b806102f0610681565b3073ffffffffffffffffffffffffffffffffffffffff1681600001602081019061031a919061092b565b73ffffffffffffffffffffffffffffffffffffffff1614610367576040517fc03e9c3f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000008160200135146103c4576040517fc03e9c3f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6103d0610713565b81816002600086815260200190815260200160002091906103f29291906107ca565b50505050565b610400610713565b61040a6000610791565b565b60006104166107c2565b90508073ffffffffffffffffffffffffffffffffffffffff166104376104e6565b73ffffffffffffffffffffffffffffffffffffffff161461048d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161048490610c40565b60405180910390fd5b61049681610791565b50565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610518610713565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff166105786104bd565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461071157336040517fcbd9d2e00000000000000000000000000000000000000000000000000000000081526004016107089190610be8565b60405180910390fd5b565b61071b6107c2565b73ffffffffffffffffffffffffffffffffffffffff166107396104bd565b73ffffffffffffffffffffffffffffffffffffffff161461078f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690610c60565b60405180910390fd5b565b600160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556107bf816105bd565b50565b600033905090565b8280546107d690610de4565b90600052602060002090601f0160209004810192826107f8576000855561083f565b82601f1061081157803560ff191683800117855561083f565b8280016001018555821561083f579182015b8281111561083e578235825591602001919060010190610823565b5b50905061084c9190610850565b5090565b5b80821115610869576000816000905550600101610851565b5090565b60008135905061087c81610efb565b92915050565b60008083601f84011261089857610897610e4a565b5b8235905067ffffffffffffffff8111156108b5576108b4610e45565b5b6020830191508360018202830111156108d1576108d0610e5e565b5b9250929050565b600060a082840312156108ee576108ed610e54565b5b81905092915050565b600060c0828403121561090d5761090c610e54565b5b81905092915050565b60008135905061092581610f12565b92915050565b60006020828403121561094157610940610e6d565b5b600061094f8482850161086d565b91505092915050565b60006020828403121561096e5761096d610e6d565b5b600082013567ffffffffffffffff81111561098c5761098b610e68565b5b610998848285016108d8565b91505092915050565b6000602082840312156109b7576109b6610e6d565b5b600082013567ffffffffffffffff8111156109d5576109d4610e68565b5b6109e1848285016108f7565b91505092915050565b600060208284031215610a00576109ff610e6d565b5b6000610a0e84828501610916565b91505092915050565b600080600060408486031215610a3057610a2f610e6d565b5b6000610a3e86828701610916565b935050602084013567ffffffffffffffff811115610a5f57610a5e610e68565b5b610a6b86828701610882565b92509250509250925092565b610a8081610d30565b82525050565b6000610a928385610d14565b9350610a9f838584610da2565b82840190509392505050565b6000610ab682610cf8565b610ac08185610d03565b9350610ad0818560208601610db1565b610ad981610e72565b840191505092915050565b60008154610af181610de4565b610afb8186610d14565b94506001821660008114610b165760018114610b2757610b5a565b60ff19831686528186019350610b5a565b610b3085610ce3565b60005b83811015610b5257815481890152600182019150602081019050610b33565b838801955050505b50505092915050565b610b6c81610d6c565b82525050565b6000610b7f602983610d1f565b9150610b8a82610e83565b604082019050919050565b6000610ba2602083610d1f565b9150610bad82610ed2565b602082019050919050565b6000610bc5828486610a86565b91508190509392505050565b6000610bdd8284610ae4565b915081905092915050565b6000602082019050610bfd6000830184610a77565b92915050565b60006020820190508181036000830152610c1d8184610aab565b905092915050565b6000602082019050610c3a6000830184610b63565b92915050565b60006020820190508181036000830152610c5981610b72565b9050919050565b60006020820190508181036000830152610c7981610b95565b9050919050565b60008083356001602003843603038112610c9d57610c9c610e59565b5b80840192508235915067ffffffffffffffff821115610cbf57610cbe610e4f565b5b602083019250600182023603831315610cdb57610cda610e63565b5b509250929050565b60008190508160005260206000209050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000610d3b82610d42565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610d7782610d7e565b9050919050565b6000610d8982610d90565b9050919050565b6000610d9b82610d42565b9050919050565b82818337600083830152505050565b60005b83811015610dcf578082015181840152602081019050610db4565b83811115610dde576000848401525b50505050565b60006002820490506001821680610dfc57607f821691505b60208210811415610e1057610e0f610e16565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060008201527f6e6577206f776e65720000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b610f0481610d30565b8114610f0f57600080fd5b50565b610f1b81610d62565b8114610f2657600080fd5b5056fea26469706673582212201e6c68c6d5697b00e7fdb1aac649344fa800c6f7c297107b02884b2fe156861c64736f6c63430008070033"; + "0x60c06040523480156200001157600080fd5b506040516200123c3803806200123c833981810160405281019062000037919062000228565b80620000586200004c6200010760201b60201c565b6200010f60201b60201c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620000c0576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b46608081815250508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250505050620002ad565b600033905090565b600160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556200014a816200014d60201b620005bd1760201c565b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050620002228162000293565b92915050565b6000602082840312156200024157620002406200028e565b5b6000620002518482850162000211565b91505092915050565b600062000267826200026e565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200029e816200025a565b8114620002aa57600080fd5b50565b60805160a05160601c610f5f620002dd6000396000818161049b0152610683015260006103690152610f5f6000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806379ba50971161006657806379ba50971461013157806383f3084f1461013b5780638da5cb5b14610159578063e30c397814610177578063f2fde38b146101955761009e565b80632618143f146100a35780633749c51a146100d35780633ff0693c146100ef5780634fd3f7d71461010b578063715018a614610127575b600080fd5b6100bd60048036038101906100b891906109ea565b6101b1565b6040516100ca9190610c03565b60405180910390f35b6100ed60048036038101906100e89190610958565b610251565b005b610109600480360381019061010491906109a1565b6102e7565b005b61012560048036038101906101209190610a17565b6103c8565b005b61012f6103f8565b005b61013961040c565b005b610143610499565b6040516101509190610c25565b60405180910390f35b6101616104bd565b60405161016e9190610be8565b60405180910390f35b61017f6104e6565b60405161018c9190610be8565b60405180910390f35b6101af60048036038101906101aa919061092b565b610510565b005b600260205280600052604060002060009150905080546101d090610de4565b80601f01602080910402602001604051908101604052809291908181526020018280546101fc90610de4565b80156102495780601f1061021e57610100808354040283529160200191610249565b820191906000526020600020905b81548152906001019060200180831161022c57829003601f168201915b505050505081565b8061025a610681565b600260008260200135815260200190815260200160002060405161027e9190610bd1565b60405180910390208180600001906102969190610c80565b6040516102a4929190610bb8565b6040518091039020146102e3576040517fb473eb0a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b806102f0610681565b3073ffffffffffffffffffffffffffffffffffffffff1681600001602081019061031a919061092b565b73ffffffffffffffffffffffffffffffffffffffff1614610367576040517fc03e9c3f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000008160200135146103c4576040517fc03e9c3f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6103d0610713565b81816002600086815260200190815260200160002091906103f29291906107ca565b50505050565b610400610713565b61040a6000610791565b565b60006104166107c2565b90508073ffffffffffffffffffffffffffffffffffffffff166104376104e6565b73ffffffffffffffffffffffffffffffffffffffff161461048d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161048490610c40565b60405180910390fd5b61049681610791565b50565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610518610713565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff166105786104bd565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461071157336040517fcbd9d2e00000000000000000000000000000000000000000000000000000000081526004016107089190610be8565b60405180910390fd5b565b61071b6107c2565b73ffffffffffffffffffffffffffffffffffffffff166107396104bd565b73ffffffffffffffffffffffffffffffffffffffff161461078f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690610c60565b60405180910390fd5b565b600160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556107bf816105bd565b50565b600033905090565b8280546107d690610de4565b90600052602060002090601f0160209004810192826107f8576000855561083f565b82601f1061081157803560ff191683800117855561083f565b8280016001018555821561083f579182015b8281111561083e578235825591602001919060010190610823565b5b50905061084c9190610850565b5090565b5b80821115610869576000816000905550600101610851565b5090565b60008135905061087c81610efb565b92915050565b60008083601f84011261089857610897610e4a565b5b8235905067ffffffffffffffff8111156108b5576108b4610e45565b5b6020830191508360018202830111156108d1576108d0610e5e565b5b9250929050565b600060a082840312156108ee576108ed610e54565b5b81905092915050565b600060c0828403121561090d5761090c610e54565b5b81905092915050565b60008135905061092581610f12565b92915050565b60006020828403121561094157610940610e6d565b5b600061094f8482850161086d565b91505092915050565b60006020828403121561096e5761096d610e6d565b5b600082013567ffffffffffffffff81111561098c5761098b610e68565b5b610998848285016108d8565b91505092915050565b6000602082840312156109b7576109b6610e6d565b5b600082013567ffffffffffffffff8111156109d5576109d4610e68565b5b6109e1848285016108f7565b91505092915050565b600060208284031215610a00576109ff610e6d565b5b6000610a0e84828501610916565b91505092915050565b600080600060408486031215610a3057610a2f610e6d565b5b6000610a3e86828701610916565b935050602084013567ffffffffffffffff811115610a5f57610a5e610e68565b5b610a6b86828701610882565b92509250509250925092565b610a8081610d30565b82525050565b6000610a928385610d14565b9350610a9f838584610da2565b82840190509392505050565b6000610ab682610cf8565b610ac08185610d03565b9350610ad0818560208601610db1565b610ad981610e72565b840191505092915050565b60008154610af181610de4565b610afb8186610d14565b94506001821660008114610b165760018114610b2757610b5a565b60ff19831686528186019350610b5a565b610b3085610ce3565b60005b83811015610b5257815481890152600182019150602081019050610b33565b838801955050505b50505092915050565b610b6c81610d6c565b82525050565b6000610b7f602983610d1f565b9150610b8a82610e83565b604082019050919050565b6000610ba2602083610d1f565b9150610bad82610ed2565b602082019050919050565b6000610bc5828486610a86565b91508190509392505050565b6000610bdd8284610ae4565b915081905092915050565b6000602082019050610bfd6000830184610a77565b92915050565b60006020820190508181036000830152610c1d8184610aab565b905092915050565b6000602082019050610c3a6000830184610b63565b92915050565b60006020820190508181036000830152610c5981610b72565b9050919050565b60006020820190508181036000830152610c7981610b95565b9050919050565b60008083356001602003843603038112610c9d57610c9c610e59565b5b80840192508235915067ffffffffffffffff821115610cbf57610cbe610e4f565b5b602083019250600182023603831315610cdb57610cda610e63565b5b509250929050565b60008190508160005260206000209050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000610d3b82610d42565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610d7782610d7e565b9050919050565b6000610d8982610d90565b9050919050565b6000610d9b82610d42565b9050919050565b82818337600083830152505050565b60005b83811015610dcf578082015181840152602081019050610db4565b83811115610dde576000848401525b50505050565b60006002820490506001821680610dfc57607f821691505b60208210811415610e1057610e0f610e16565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060008201527f6e6577206f776e65720000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b610f0481610d30565b8114610f0f57600080fd5b50565b610f1b81610d62565b8114610f2657600080fd5b5056fea26469706673582212206999e36457fead1d5e7b5a125ef2e0a49dcff212174326676d6fd53cff4e990364736f6c63430008070033"; type ZetaInteractorMockConstructorParams = | [signer?: Signer] diff --git a/typechain-types/factories/contracts/evm/testing/ZetaReceiverMock__factory.ts b/typechain-types/factories/contracts/evm/testing/ZetaReceiverMock__factory.ts index 021f2651..2fa5bcf3 100644 --- a/typechain-types/factories/contracts/evm/testing/ZetaReceiverMock__factory.ts +++ b/typechain-types/factories/contracts/evm/testing/ZetaReceiverMock__factory.ts @@ -124,7 +124,7 @@ const _abi = [ ] as const; const _bytecode = - "0x608060405234801561001057600080fd5b506102d5806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80633749c51a1461003b5780633ff0693c14610057575b600080fd5b6100556004803603810190610050919061018b565b610073565b005b610071600480360381019061006c91906101d4565b6100bf565b005b7f72a301dee3abcbe15615f3e253229bf4b4f508460603d674991c9a777b833c6e8160400160208101906100a7919061015e565b6040516100b4919061022c565b60405180910390a150565b7f53bd04e26f94f13ff43da96839541821041c309c6f624712192cbe3a2d133cc48160000160208101906100f3919061015e565b604051610100919061022c565b60405180910390a150565b60008135905061011a81610288565b92915050565b600060a0828403121561013657610135610279565b5b81905092915050565b600060c0828403121561015557610154610279565b5b81905092915050565b60006020828403121561017457610173610283565b5b60006101828482850161010b565b91505092915050565b6000602082840312156101a1576101a0610283565b5b600082013567ffffffffffffffff8111156101bf576101be61027e565b5b6101cb84828501610120565b91505092915050565b6000602082840312156101ea576101e9610283565b5b600082013567ffffffffffffffff8111156102085761020761027e565b5b6102148482850161013f565b91505092915050565b61022681610247565b82525050565b6000602082019050610241600083018461021d565b92915050565b600061025282610259565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b600080fd5b600080fd5b61029181610247565b811461029c57600080fd5b5056fea26469706673582212204a52544c9f3eb3bb550c22ab3ce4f78bf6d3c2bf72253e74e50e1b607f43267564736f6c63430008070033"; + "0x608060405234801561001057600080fd5b506102d5806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80633749c51a1461003b5780633ff0693c14610057575b600080fd5b6100556004803603810190610050919061018b565b610073565b005b610071600480360381019061006c91906101d4565b6100bf565b005b7f72a301dee3abcbe15615f3e253229bf4b4f508460603d674991c9a777b833c6e8160400160208101906100a7919061015e565b6040516100b4919061022c565b60405180910390a150565b7f53bd04e26f94f13ff43da96839541821041c309c6f624712192cbe3a2d133cc48160000160208101906100f3919061015e565b604051610100919061022c565b60405180910390a150565b60008135905061011a81610288565b92915050565b600060a0828403121561013657610135610279565b5b81905092915050565b600060c0828403121561015557610154610279565b5b81905092915050565b60006020828403121561017457610173610283565b5b60006101828482850161010b565b91505092915050565b6000602082840312156101a1576101a0610283565b5b600082013567ffffffffffffffff8111156101bf576101be61027e565b5b6101cb84828501610120565b91505092915050565b6000602082840312156101ea576101e9610283565b5b600082013567ffffffffffffffff8111156102085761020761027e565b5b6102148482850161013f565b91505092915050565b61022681610247565b82525050565b6000602082019050610241600083018461021d565b92915050565b600061025282610259565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b600080fd5b600080fd5b61029181610247565b811461029c57600080fd5b5056fea264697066735822122008485e037d9a20d8e9f8d1e9456b89006367d84f7e0966e1d820fe73c0d706ea64736f6c63430008070033"; type ZetaReceiverMockConstructorParams = | [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/ZetaTokenConsumerTrident.strategy.sol/ZetaTokenConsumerTrident__factory.ts b/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/ZetaTokenConsumerTrident__factory.ts index 56d915c4..b9edd6ce 100644 --- a/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/ZetaTokenConsumerTrident__factory.ts +++ b/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/ZetaTokenConsumerTrident__factory.ts @@ -265,6 +265,19 @@ const _abi = [ stateMutability: "nonpayable", type: "function", }, + { + inputs: [], + name: "hasZetaLiquidity", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [], name: "poolFactory", @@ -311,7 +324,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6101006040523480156200001257600080fd5b5060405162002af538038062002af5833981810160405281019062000038919062000245565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480620000a05750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80620000d85750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80620001105750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b1562000148576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508273ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660e08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b81525050505050506200030a565b6000815190506200023f81620002f0565b92915050565b60008060008060808587031215620002625762000261620002eb565b5b600062000272878288016200022e565b945050602062000285878288016200022e565b935050604062000298878288016200022e565b9250506060620002ab878288016200022e565b91505092959194509250565b6000620002c482620002cb565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b620002fb81620002b7565b81146200030757600080fd5b50565b60805160601c60a05160601c60c05160601c60e05160601c6126e162000414600039600081816102e0015281816106ca015281816107d601528181610b0c01528181610cde015281816111a8015261129401526000818161042c0152818161064f01528181610a1201528181610c2301528181610e4901528181610f3e015281816110ed01526114f00152600081816102b401528181610521015281816107a601528181610bd901528181610c4501528181610c9101528181610da3015281816110a30152818161110f0152818161115b015261147b0152600081816102930152818161069e0152818161078501528181610cb20152818161117c015261126301526126e16000f3fe6080604052600436106100745760003560e01c80634219dc401161004e5780634219dc401461011857806354c49a2a1461014357806364b5528a14610180578063a53fb10b146101ab5761007b565b8063013b2ff81461008057806321e093b1146100b05780632405620a146100db5761007b565b3661007b57005b600080fd5b61009a60048036038101906100959190611bd5565b6101e8565b6040516100a791906122b5565b60405180910390f35b3480156100bc57600080fd5b506100c561051f565b6040516100d29190612080565b60405180910390f35b3480156100e757600080fd5b5061010260048036038101906100fd9190611c15565b610543565b60405161010f91906122b5565b60405180910390f35b34801561012457600080fd5b5061012d610b0a565b60405161013a91906121a0565b60405180910390f35b34801561014f57600080fd5b5061016a60048036038101906101659190611c7c565b610b2e565b60405161017791906122b5565b60405180910390f35b34801561018c57600080fd5b50610195610f3c565b6040516101a291906121bb565b60405180910390f35b3480156101b757600080fd5b506101d260048036038101906101cd9190611c15565b610f60565b6040516101df91906122b5565b60405180910390f35b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610250576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600034141561028b576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000806102d87f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000611602565b9150915060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166371a258128484600060016040518563ffffffff1660e01b815260040161033f94939291906120c4565b60006040518083038186803b15801561035757600080fd5b505afa15801561036b573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906103949190611ccf565b905060006040518060c00160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001348152602001878152602001836000815181106103e0576103df6124cd565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff16815260200160001515815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c07f5c3234846040518363ffffffff1660e01b8152600401610484919061229a565b6020604051808303818588803b15801561049d57600080fd5b505af11580156104b1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906104d69190611d45565b90507f87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da1134826040516105099291906122d0565b60405180910390a1809550505050505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806105ab5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156105e2576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082141561061d576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61064a3330848673ffffffffffffffffffffffffffffffffffffffff16611652909392919063ffffffff16565b6106957f0000000000000000000000000000000000000000000000000000000000000000838573ffffffffffffffffffffffffffffffffffffffff166116db9092919063ffffffff16565b6000806106c2857f0000000000000000000000000000000000000000000000000000000000000000611602565b9150915060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166371a258128484600060016040518563ffffffff1660e01b815260040161072994939291906120c4565b60006040518083038186803b15801561074157600080fd5b505afa158015610755573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061077e9190611ccf565b90506107ca7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000611602565b809350819450505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166371a258128585600060016040518563ffffffff1660e01b815260040161083594939291906120c4565b60006040518083038186803b15801561084d57600080fd5b505afa158015610861573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061088a9190611ccf565b90506000600267ffffffffffffffff8111156108a9576108a86124fc565b5b6040519080825280602002602001820160405280156108d75781602001602082028036833780820191505090505b509050826000815181106108ee576108ed6124cd565b5b60200260200101518160008151811061090a576109096124cd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505081600081518110610958576109576124cd565b5b602002602001015181600181518110610974576109736124cd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060006040518060c001604052808a73ffffffffffffffffffffffffffffffffffffffff1681526020018981526020018b81526020018381526020018c73ffffffffffffffffffffffffffffffffffffffff16815260200160001515815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663363a9dba836040518263ffffffff1660e01b8152600401610a699190612278565b602060405180830381600087803b158015610a8357600080fd5b505af1158015610a97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610abb9190611d45565b90507f017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f8a8a83604051610af093929190612169565b60405180910390a180975050505050505050949350505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610b96576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000821415610bd1576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c1e3330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16611652909392919063ffffffff16565b610c897f0000000000000000000000000000000000000000000000000000000000000000837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166116db9092919063ffffffff16565b600080610cd67f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000611602565b9150915060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166371a258128484600060016040518563ffffffff1660e01b8152600401610d3d94939291906120c4565b60006040518083038186803b158015610d5557600080fd5b505afa158015610d69573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610d929190611ccf565b905060006040518060c001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16815260200187815260200188815260200183600081518110610dfd57610dfc6124cd565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1681526020018973ffffffffffffffffffffffffffffffffffffffff16815260200160011515815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c07f5c32836040518263ffffffff1660e01b8152600401610ea0919061229a565b602060405180830381600087803b158015610eba57600080fd5b505af1158015610ece573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef29190611d45565b90507f74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae8782604051610f259291906122d0565b60405180910390a180955050505050509392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008060009054906101000a900460ff1615610fa8576040517f29f745a700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60016000806101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806110295750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15611060576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082141561109b576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110e83330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16611652909392919063ffffffff16565b6111537f0000000000000000000000000000000000000000000000000000000000000000837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166116db9092919063ffffffff16565b6000806111a07f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000611602565b9150915060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166371a258128484600060016040518563ffffffff1660e01b815260040161120794939291906120c4565b60006040518083038186803b15801561121f57600080fd5b505afa158015611233573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061125c9190611ccf565b90506112887f000000000000000000000000000000000000000000000000000000000000000087611602565b809350819450505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166371a258128585600060016040518563ffffffff1660e01b81526004016112f394939291906120c4565b60006040518083038186803b15801561130b57600080fd5b505afa15801561131f573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906113489190611ccf565b90506000600267ffffffffffffffff811115611367576113666124fc565b5b6040519080825280602002602001820160405280156113955781602001602082028036833780820191505090505b509050826000815181106113ac576113ab6124cd565b5b6020026020010151816000815181106113c8576113c76124cd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505081600081518110611416576114156124cd565b5b602002602001015181600181518110611432576114316124cd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060006040518060c001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020018981526020018b81526020018381526020018c73ffffffffffffffffffffffffffffffffffffffff16815260200160001515815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663363a9dba836040518263ffffffff1660e01b81526004016115479190612278565b602060405180830381600087803b15801561156157600080fd5b505af1158015611575573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115999190611d45565b90507f0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b8a8a836040516115ce93929190612169565b60405180910390a18097505050505050505060008060006101000a81548160ff021916908315150217905550949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610156116445783839150915061164b565b8284915091505b9250929050565b6116d5846323b872dd60e01b85858560405160240161167393929190612109565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611839565b50505050565b6000811480611774575060008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b815260040161172292919061209b565b60206040518083038186803b15801561173a57600080fd5b505afa15801561174e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117729190611d45565b145b6117b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117aa90612258565b60405180910390fd5b6118348363095ea7b360e01b84846040516024016117d2929190612140565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611839565b505050565b600061189b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166119009092919063ffffffff16565b90506000815111156118fb57808060200190518101906118bb9190611d18565b6118fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f190612238565b60405180910390fd5b5b505050565b606061190f8484600085611918565b90509392505050565b60608247101561195d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611954906121f8565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516119869190612069565b60006040518083038185875af1925050503d80600081146119c3576040519150601f19603f3d011682016040523d82523d6000602084013e6119c8565b606091505b50915091506119d9878383876119e5565b92505050949350505050565b60608315611a4857600083511415611a4057611a0085611a5b565b611a3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3690612218565b60405180910390fd5b5b829050611a53565b611a528383611a7e565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600082511115611a915781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac591906121d6565b60405180910390fd5b6000611ae1611adc8461231e565b6122f9565b90508083825260208201905082856020860282011115611b0457611b03612530565b5b60005b85811015611b345781611b1a8882611b53565b845260208401935060208301925050600181019050611b07565b5050509392505050565b600081359050611b4d81612666565b92915050565b600081519050611b6281612666565b92915050565b600082601f830112611b7d57611b7c61252b565b5b8151611b8d848260208601611ace565b91505092915050565b600081519050611ba58161267d565b92915050565b600081359050611bba81612694565b92915050565b600081519050611bcf81612694565b92915050565b60008060408385031215611bec57611beb61253a565b5b6000611bfa85828601611b3e565b9250506020611c0b85828601611bab565b9150509250929050565b60008060008060808587031215611c2f57611c2e61253a565b5b6000611c3d87828801611b3e565b9450506020611c4e87828801611bab565b9350506040611c5f87828801611b3e565b9250506060611c7087828801611bab565b91505092959194509250565b600080600060608486031215611c9557611c9461253a565b5b6000611ca386828701611b3e565b9350506020611cb486828701611bab565b9250506040611cc586828701611bab565b9150509250925092565b600060208284031215611ce557611ce461253a565b5b600082015167ffffffffffffffff811115611d0357611d02612535565b5b611d0f84828501611b68565b91505092915050565b600060208284031215611d2e57611d2d61253a565b5b6000611d3c84828501611b96565b91505092915050565b600060208284031215611d5b57611d5a61253a565b5b6000611d6984828501611bc0565b91505092915050565b6000611d7e8383611d8a565b60208301905092915050565b611d93816123b5565b82525050565b611da2816123b5565b82525050565b6000611db38261235a565b611dbd8185612388565b9350611dc88361234a565b8060005b83811015611df9578151611de08882611d72565b9750611deb8361237b565b925050600181019050611dcc565b5085935050505092915050565b611e0f816123c7565b82525050565b6000611e2082612365565b611e2a8185612399565b9350611e3a818560208601612469565b80840191505092915050565b611e4f816123fd565b82525050565b611e5e8161240f565b82525050565b611e6d81612421565b82525050565b611e7c81612433565b82525050565b6000611e8d82612370565b611e9781856123a4565b9350611ea7818560208601612469565b611eb08161253f565b840191505092915050565b6000611ec86026836123a4565b9150611ed382612550565b604082019050919050565b6000611eeb601d836123a4565b9150611ef68261259f565b602082019050919050565b6000611f0e602a836123a4565b9150611f19826125c8565b604082019050919050565b6000611f316036836123a4565b9150611f3c82612617565b604082019050919050565b600060c083016000830151611f5f6000860182611d8a565b506020830151611f72602086018261204b565b506040830151611f85604086018261204b565b5060608301518482036060860152611f9d8282611da8565b9150506080830151611fb26080860182611d8a565b5060a0830151611fc560a0860182611e06565b508091505092915050565b60c082016000820151611fe66000850182611d8a565b506020820151611ff9602085018261204b565b50604082015161200c604085018261204b565b50606082015161201f6060850182611d8a565b5060808201516120326080850182611d8a565b5060a082015161204560a0850182611e06565b50505050565b612054816123f3565b82525050565b612063816123f3565b82525050565b60006120758284611e15565b915081905092915050565b60006020820190506120956000830184611d99565b92915050565b60006040820190506120b06000830185611d99565b6120bd6020830184611d99565b9392505050565b60006080820190506120d96000830187611d99565b6120e66020830186611d99565b6120f36040830185611e64565b6121006060830184611e73565b95945050505050565b600060608201905061211e6000830186611d99565b61212b6020830185611d99565b612138604083018461205a565b949350505050565b60006040820190506121556000830185611d99565b612162602083018461205a565b9392505050565b600060608201905061217e6000830186611d99565b61218b602083018561205a565b612198604083018461205a565b949350505050565b60006020820190506121b56000830184611e46565b92915050565b60006020820190506121d06000830184611e55565b92915050565b600060208201905081810360008301526121f08184611e82565b905092915050565b6000602082019050818103600083015261221181611ebb565b9050919050565b6000602082019050818103600083015261223181611ede565b9050919050565b6000602082019050818103600083015261225181611f01565b9050919050565b6000602082019050818103600083015261227181611f24565b9050919050565b600060208201905081810360008301526122928184611f47565b905092915050565b600060c0820190506122af6000830184611fd0565b92915050565b60006020820190506122ca600083018461205a565b92915050565b60006040820190506122e5600083018561205a565b6122f2602083018461205a565b9392505050565b6000612303612314565b905061230f828261249c565b919050565b6000604051905090565b600067ffffffffffffffff821115612339576123386124fc565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006123c0826123d3565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061240882612445565b9050919050565b600061241a82612445565b9050919050565b600061242c826123f3565b9050919050565b600061243e826123f3565b9050919050565b600061245082612457565b9050919050565b6000612462826123d3565b9050919050565b60005b8381101561248757808201518184015260208101905061246c565b83811115612496576000848401525b50505050565b6124a58261253f565b810181811067ffffffffffffffff821117156124c4576124c36124fc565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60008201527f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000602082015250565b61266f816123b5565b811461267a57600080fd5b50565b612686816123c7565b811461269157600080fd5b50565b61269d816123f3565b81146126a857600080fd5b5056fea26469706673582212204468ddc2d97337c8f733ef254edb6c213627014c4fa5f7dea76ca62adde499e064736f6c63430008070033"; + "0x6101006040523480156200001257600080fd5b5060405162002b5a38038062002b5a833981810160405281019062000038919062000245565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480620000a05750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80620000d85750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80620001105750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b1562000148576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508273ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660e08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b81525050505050506200030a565b6000815190506200023f81620002f0565b92915050565b60008060008060808587031215620002625762000261620002eb565b5b600062000272878288016200022e565b945050602062000285878288016200022e565b935050604062000298878288016200022e565b9250506060620002ab878288016200022e565b91505092959194509250565b6000620002c482620002cb565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b620002fb81620002b7565b81146200030757600080fd5b50565b60805160601c60a05160601c60c05160601c60e05160601c6127466200041460003960008181610316015281816107000152818161080c01528181610b4201528181610d14015281816111e301526112cf0152600081816104620152818161068501528181610a4801528181610c5901528181610e7f01528181610f7401528181611128015261152b0152600081816102ea01528181610557015281816107dc01528181610c0f01528181610c7b01528181610cc701528181610dd9015281816110de0152818161114a0152818161119601526114b60152600081816102c9015281816106d4015281816107bb01528181610ce8015281816111b7015261129e01526127466000f3fe60806040526004361061007f5760003560e01c806354c49a2a1161004e57806354c49a2a1461014e57806364b5528a1461018b57806380801f84146101b6578063a53fb10b146101e157610086565b8063013b2ff81461008b57806321e093b1146100bb5780632405620a146100e65780634219dc401461012357610086565b3661008657005b600080fd5b6100a560048036038101906100a09190611c10565b61021e565b6040516100b2919061231a565b60405180910390f35b3480156100c757600080fd5b506100d0610555565b6040516100dd91906120ca565b60405180910390f35b3480156100f257600080fd5b5061010d60048036038101906101089190611c50565b610579565b60405161011a919061231a565b60405180910390f35b34801561012f57600080fd5b50610138610b40565b6040516101459190612205565b60405180910390f35b34801561015a57600080fd5b5061017560048036038101906101709190611cb7565b610b64565b604051610182919061231a565b60405180910390f35b34801561019757600080fd5b506101a0610f72565b6040516101ad9190612220565b60405180910390f35b3480156101c257600080fd5b506101cb610f96565b6040516101d891906121ea565b60405180910390f35b3480156101ed57600080fd5b5061020860048036038101906102039190611c50565b610f9b565b604051610215919061231a565b60405180910390f35b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610286576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60003414156102c1576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008061030e7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061163d565b9150915060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166371a258128484600060016040518563ffffffff1660e01b8152600401610375949392919061210e565b60006040518083038186803b15801561038d57600080fd5b505afa1580156103a1573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906103ca9190611d0a565b905060006040518060c00160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020013481526020018781526020018360008151811061041657610415612532565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff16815260200160001515815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c07f5c3234846040518363ffffffff1660e01b81526004016104ba91906122ff565b6020604051808303818588803b1580156104d357600080fd5b505af11580156104e7573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061050c9190611d80565b90507f87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da11348260405161053f929190612335565b60405180910390a1809550505050505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806105e15750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15610618576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000821415610653576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106803330848673ffffffffffffffffffffffffffffffffffffffff1661168d909392919063ffffffff16565b6106cb7f0000000000000000000000000000000000000000000000000000000000000000838573ffffffffffffffffffffffffffffffffffffffff166117169092919063ffffffff16565b6000806106f8857f000000000000000000000000000000000000000000000000000000000000000061163d565b9150915060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166371a258128484600060016040518563ffffffff1660e01b815260040161075f949392919061210e565b60006040518083038186803b15801561077757600080fd5b505afa15801561078b573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906107b49190611d0a565b90506108007f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061163d565b809350819450505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166371a258128585600060016040518563ffffffff1660e01b815260040161086b949392919061210e565b60006040518083038186803b15801561088357600080fd5b505afa158015610897573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906108c09190611d0a565b90506000600267ffffffffffffffff8111156108df576108de612561565b5b60405190808252806020026020018201604052801561090d5781602001602082028036833780820191505090505b5090508260008151811061092457610923612532565b5b6020026020010151816000815181106109405761093f612532565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508160008151811061098e5761098d612532565b5b6020026020010151816001815181106109aa576109a9612532565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060006040518060c001604052808a73ffffffffffffffffffffffffffffffffffffffff1681526020018981526020018b81526020018381526020018c73ffffffffffffffffffffffffffffffffffffffff16815260200160001515815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663363a9dba836040518263ffffffff1660e01b8152600401610a9f91906122dd565b602060405180830381600087803b158015610ab957600080fd5b505af1158015610acd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af19190611d80565b90507f017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f8a8a83604051610b26939291906121b3565b60405180910390a180975050505050505050949350505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610bcc576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000821415610c07576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c543330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661168d909392919063ffffffff16565b610cbf7f0000000000000000000000000000000000000000000000000000000000000000837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166117169092919063ffffffff16565b600080610d0c7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061163d565b9150915060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166371a258128484600060016040518563ffffffff1660e01b8152600401610d73949392919061210e565b60006040518083038186803b158015610d8b57600080fd5b505afa158015610d9f573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610dc89190611d0a565b905060006040518060c001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16815260200187815260200188815260200183600081518110610e3357610e32612532565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1681526020018973ffffffffffffffffffffffffffffffffffffffff16815260200160011515815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c07f5c32836040518263ffffffff1660e01b8152600401610ed691906122ff565b602060405180830381600087803b158015610ef057600080fd5b505af1158015610f04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f289190611d80565b90507f74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae8782604051610f5b929190612335565b60405180910390a180955050505050509392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600090565b60008060009054906101000a900460ff1615610fe3576040517f29f745a700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60016000806101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806110645750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561109b576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008214156110d6576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111233330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661168d909392919063ffffffff16565b61118e7f0000000000000000000000000000000000000000000000000000000000000000837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166117169092919063ffffffff16565b6000806111db7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061163d565b9150915060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166371a258128484600060016040518563ffffffff1660e01b8152600401611242949392919061210e565b60006040518083038186803b15801561125a57600080fd5b505afa15801561126e573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906112979190611d0a565b90506112c37f00000000000000000000000000000000000000000000000000000000000000008761163d565b809350819450505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166371a258128585600060016040518563ffffffff1660e01b815260040161132e949392919061210e565b60006040518083038186803b15801561134657600080fd5b505afa15801561135a573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906113839190611d0a565b90506000600267ffffffffffffffff8111156113a2576113a1612561565b5b6040519080825280602002602001820160405280156113d05781602001602082028036833780820191505090505b509050826000815181106113e7576113e6612532565b5b60200260200101518160008151811061140357611402612532565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508160008151811061145157611450612532565b5b60200260200101518160018151811061146d5761146c612532565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060006040518060c001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020018981526020018b81526020018381526020018c73ffffffffffffffffffffffffffffffffffffffff16815260200160001515815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663363a9dba836040518263ffffffff1660e01b815260040161158291906122dd565b602060405180830381600087803b15801561159c57600080fd5b505af11580156115b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115d49190611d80565b90507f0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b8a8a83604051611609939291906121b3565b60405180910390a18097505050505050505060008060006101000a81548160ff021916908315150217905550949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16101561167f57838391509150611686565b8284915091505b9250929050565b611710846323b872dd60e01b8585856040516024016116ae93929190612153565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611874565b50505050565b60008114806117af575060008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b815260040161175d9291906120e5565b60206040518083038186803b15801561177557600080fd5b505afa158015611789573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ad9190611d80565b145b6117ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e5906122bd565b60405180910390fd5b61186f8363095ea7b360e01b848460405160240161180d92919061218a565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611874565b505050565b60006118d6826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661193b9092919063ffffffff16565b905060008151111561193657808060200190518101906118f69190611d53565b611935576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192c9061229d565b60405180910390fd5b5b505050565b606061194a8484600085611953565b90509392505050565b606082471015611998576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198f9061225d565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516119c191906120b3565b60006040518083038185875af1925050503d80600081146119fe576040519150601f19603f3d011682016040523d82523d6000602084013e611a03565b606091505b5091509150611a1487838387611a20565b92505050949350505050565b60608315611a8357600083511415611a7b57611a3b85611a96565b611a7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a719061227d565b60405180910390fd5b5b829050611a8e565b611a8d8383611ab9565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600082511115611acc5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b00919061223b565b60405180910390fd5b6000611b1c611b1784612383565b61235e565b90508083825260208201905082856020860282011115611b3f57611b3e612595565b5b60005b85811015611b6f5781611b558882611b8e565b845260208401935060208301925050600181019050611b42565b5050509392505050565b600081359050611b88816126cb565b92915050565b600081519050611b9d816126cb565b92915050565b600082601f830112611bb857611bb7612590565b5b8151611bc8848260208601611b09565b91505092915050565b600081519050611be0816126e2565b92915050565b600081359050611bf5816126f9565b92915050565b600081519050611c0a816126f9565b92915050565b60008060408385031215611c2757611c2661259f565b5b6000611c3585828601611b79565b9250506020611c4685828601611be6565b9150509250929050565b60008060008060808587031215611c6a57611c6961259f565b5b6000611c7887828801611b79565b9450506020611c8987828801611be6565b9350506040611c9a87828801611b79565b9250506060611cab87828801611be6565b91505092959194509250565b600080600060608486031215611cd057611ccf61259f565b5b6000611cde86828701611b79565b9350506020611cef86828701611be6565b9250506040611d0086828701611be6565b9150509250925092565b600060208284031215611d2057611d1f61259f565b5b600082015167ffffffffffffffff811115611d3e57611d3d61259a565b5b611d4a84828501611ba3565b91505092915050565b600060208284031215611d6957611d6861259f565b5b6000611d7784828501611bd1565b91505092915050565b600060208284031215611d9657611d9561259f565b5b6000611da484828501611bfb565b91505092915050565b6000611db98383611dc5565b60208301905092915050565b611dce8161241a565b82525050565b611ddd8161241a565b82525050565b6000611dee826123bf565b611df881856123ed565b9350611e03836123af565b8060005b83811015611e34578151611e1b8882611dad565b9750611e26836123e0565b925050600181019050611e07565b5085935050505092915050565b611e4a8161242c565b82525050565b611e598161242c565b82525050565b6000611e6a826123ca565b611e7481856123fe565b9350611e848185602086016124ce565b80840191505092915050565b611e9981612462565b82525050565b611ea881612474565b82525050565b611eb781612486565b82525050565b611ec681612498565b82525050565b6000611ed7826123d5565b611ee18185612409565b9350611ef18185602086016124ce565b611efa816125a4565b840191505092915050565b6000611f12602683612409565b9150611f1d826125b5565b604082019050919050565b6000611f35601d83612409565b9150611f4082612604565b602082019050919050565b6000611f58602a83612409565b9150611f638261262d565b604082019050919050565b6000611f7b603683612409565b9150611f868261267c565b604082019050919050565b600060c083016000830151611fa96000860182611dc5565b506020830151611fbc6020860182612095565b506040830151611fcf6040860182612095565b5060608301518482036060860152611fe78282611de3565b9150506080830151611ffc6080860182611dc5565b5060a083015161200f60a0860182611e41565b508091505092915050565b60c0820160008201516120306000850182611dc5565b5060208201516120436020850182612095565b5060408201516120566040850182612095565b5060608201516120696060850182611dc5565b50608082015161207c6080850182611dc5565b5060a082015161208f60a0850182611e41565b50505050565b61209e81612458565b82525050565b6120ad81612458565b82525050565b60006120bf8284611e5f565b915081905092915050565b60006020820190506120df6000830184611dd4565b92915050565b60006040820190506120fa6000830185611dd4565b6121076020830184611dd4565b9392505050565b60006080820190506121236000830187611dd4565b6121306020830186611dd4565b61213d6040830185611eae565b61214a6060830184611ebd565b95945050505050565b60006060820190506121686000830186611dd4565b6121756020830185611dd4565b61218260408301846120a4565b949350505050565b600060408201905061219f6000830185611dd4565b6121ac60208301846120a4565b9392505050565b60006060820190506121c86000830186611dd4565b6121d560208301856120a4565b6121e260408301846120a4565b949350505050565b60006020820190506121ff6000830184611e50565b92915050565b600060208201905061221a6000830184611e90565b92915050565b60006020820190506122356000830184611e9f565b92915050565b600060208201905081810360008301526122558184611ecc565b905092915050565b6000602082019050818103600083015261227681611f05565b9050919050565b6000602082019050818103600083015261229681611f28565b9050919050565b600060208201905081810360008301526122b681611f4b565b9050919050565b600060208201905081810360008301526122d681611f6e565b9050919050565b600060208201905081810360008301526122f78184611f91565b905092915050565b600060c082019050612314600083018461201a565b92915050565b600060208201905061232f60008301846120a4565b92915050565b600060408201905061234a60008301856120a4565b61235760208301846120a4565b9392505050565b6000612368612379565b90506123748282612501565b919050565b6000604051905090565b600067ffffffffffffffff82111561239e5761239d612561565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061242582612438565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061246d826124aa565b9050919050565b600061247f826124aa565b9050919050565b600061249182612458565b9050919050565b60006124a382612458565b9050919050565b60006124b5826124bc565b9050919050565b60006124c782612438565b9050919050565b60005b838110156124ec5780820151818401526020810190506124d1565b838111156124fb576000848401525b50505050565b61250a826125a4565b810181811067ffffffffffffffff8211171561252957612528612561565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60008201527f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000602082015250565b6126d48161241a565b81146126df57600080fd5b50565b6126eb8161242c565b81146126f657600080fd5b50565b61270281612458565b811461270d57600080fd5b5056fea26469706673582212207db2a1e3db417b41f7491218078aed9cfec4ce5d3704cc0cd4a870ca5e85a28864736f6c63430008070033"; type ZetaTokenConsumerTridentConstructorParams = | [signer?: Signer] diff --git a/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerUniV2.strategy.sol/ZetaTokenConsumerUniV2__factory.ts b/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerUniV2.strategy.sol/ZetaTokenConsumerUniV2__factory.ts index 4071b187..6b02f8d5 100644 --- a/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerUniV2.strategy.sol/ZetaTokenConsumerUniV2__factory.ts +++ b/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerUniV2.strategy.sol/ZetaTokenConsumerUniV2__factory.ts @@ -245,6 +245,19 @@ const _abi = [ stateMutability: "nonpayable", type: "function", }, + { + inputs: [], + name: "hasZetaLiquidity", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [], name: "zetaToken", @@ -261,7 +274,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60e06040523480156200001157600080fd5b50604051620026c2380380620026c283398181016040528101906200003791906200024e565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806200009f5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15620000d7576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200018c57600080fd5b505afa158015620001a1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c791906200021c565b73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250505050620002e8565b6000815190506200021681620002ce565b92915050565b600060208284031215620002355762000234620002c9565b5b6000620002458482850162000205565b91505092915050565b60008060408385031215620002685762000267620002c9565b5b6000620002788582860162000205565b92505060206200028b8582860162000205565b9150509250929050565b6000620002a282620002a9565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b620002d98162000295565b8114620002e557600080fd5b50565b60805160601c60a05160601c60c05160601c612300620003c26000396000818161033401528181610598015281816108e101528181610b0f01528181610ca501528181610f0701526112700152600081816102c30152818161046a015281816106f10152818161086f01528181610ac501528181610b3101528181610bc501528181610ebd01528181610f29015281816110110152611140015260008181610254015281816105e2015281816106820152818161080001528181610c3401528181610f710152818161108001526111af01526123006000f3fe60806040526004361061004a5760003560e01c8063013b2ff81461004f57806321e093b11461007f5780632405620a146100aa57806354c49a2a146100e7578063a53fb10b14610124575b600080fd5b61006960048036038101906100649190611917565b610161565b6040516100769190611de1565b60405180910390f35b34801561008b57600080fd5b50610094610468565b6040516100a19190611c64565b60405180910390f35b3480156100b657600080fd5b506100d160048036038101906100cc9190611957565b61048c565b6040516100de9190611de1565b60405180910390f35b3480156100f357600080fd5b5061010e600480360381019061010991906119be565b610a1a565b60405161011b9190611de1565b60405180910390f35b34801561013057600080fd5b5061014b60048036038101906101469190611957565b610ddb565b6040516101589190611de1565b60405180910390f35b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156101c9576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000341415610204576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600267ffffffffffffffff8111156102215761022061211b565b5b60405190808252806020026020018201604052801561024f5781602001602082028036833780820191505090505b5090507f000000000000000000000000000000000000000000000000000000000000000081600081518110610287576102866120ec565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816001815181106102f6576102f56120ec565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16637ff36ab53486858960c84261037f9190611f87565b6040518663ffffffff1660e01b815260040161039e9493929190611dfc565b6000604051808303818588803b1580156103b757600080fd5b505af11580156103cb573d6000803e3d6000fd5b50505050506040513d6000823e3d601f19601f820116820180604052508101906103f59190611a11565b9050600081600184516104089190611fdd565b81518110610419576104186120ec565b5b602002602001015190507f87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da113482604051610454929190611e48565b60405180910390a180935050505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806104f45750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561052b576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000821415610566576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105933330848673ffffffffffffffffffffffffffffffffffffffff166113a9909392919063ffffffff16565b6105de7f0000000000000000000000000000000000000000000000000000000000000000838573ffffffffffffffffffffffffffffffffffffffff166114329092919063ffffffff16565b60607f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561076357600267ffffffffffffffff81111561064f5761064e61211b565b5b60405190808252806020026020018201604052801561067d5781602001602082028036833780820191505090505b5090507f0000000000000000000000000000000000000000000000000000000000000000816000815181106106b5576106b46120ec565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110610724576107236120ec565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506108dd565b600367ffffffffffffffff81111561077e5761077d61211b565b5b6040519080825280602002602001820160405280156107ac5781602001602082028036833780820191505090505b50905083816000815181106107c4576107c36120ec565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110610833576108326120ec565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816002815181106108a2576108a16120ec565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166338ed17398588858b60c84261092c9190611f87565b6040518663ffffffff1660e01b815260040161094c959493929190611e71565b600060405180830381600087803b15801561096657600080fd5b505af115801561097a573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906109a39190611a11565b9050600081600184516109b69190611fdd565b815181106109c7576109c66120ec565b5b602002602001015190507f017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f868683604051610a0493929190611d08565b60405180910390a1809350505050949350505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610a82576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000821415610abd576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b0a3330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166113a9909392919063ffffffff16565b610b757f0000000000000000000000000000000000000000000000000000000000000000837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166114329092919063ffffffff16565b6000600267ffffffffffffffff811115610b9257610b9161211b565b5b604051908082528060200260200182016040528015610bc05781602001602082028036833780820191505090505b5090507f000000000000000000000000000000000000000000000000000000000000000081600081518110610bf857610bf76120ec565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110610c6757610c666120ec565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318cbafe58587858a60c842610cf09190611f87565b6040518663ffffffff1660e01b8152600401610d10959493929190611e71565b600060405180830381600087803b158015610d2a57600080fd5b505af1158015610d3e573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610d679190611a11565b905060008160018451610d7a9190611fdd565b81518110610d8b57610d8a6120ec565b5b602002602001015190507f74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae8582604051610dc6929190611e48565b60405180910390a18093505050509392505050565b60008073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610e435750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15610e7a576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000821415610eb5576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f023330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166113a9909392919063ffffffff16565b610f6d7f0000000000000000000000000000000000000000000000000000000000000000837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166114329092919063ffffffff16565b60607f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156110f257600267ffffffffffffffff811115610fde57610fdd61211b565b5b60405190808252806020026020018201604052801561100c5781602001602082028036833780820191505090505b5090507f000000000000000000000000000000000000000000000000000000000000000081600081518110611044576110436120ec565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816001815181106110b3576110b26120ec565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061126c565b600367ffffffffffffffff81111561110d5761110c61211b565b5b60405190808252806020026020018201604052801561113b5781602001602082028036833780820191505090505b5090507f000000000000000000000000000000000000000000000000000000000000000081600081518110611173576111726120ec565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816001815181106111e2576111e16120ec565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508381600281518110611231576112306120ec565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166338ed17398588858b60c8426112bb9190611f87565b6040518663ffffffff1660e01b81526004016112db959493929190611e71565b600060405180830381600087803b1580156112f557600080fd5b505af1158015611309573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906113329190611a11565b9050600081600184516113459190611fdd565b81518110611356576113556120ec565b5b602002602001015190507f0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b86868360405161139393929190611d08565b60405180910390a1809350505050949350505050565b61142c846323b872dd60e01b8585856040516024016113ca93929190611ca8565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611590565b50505050565b60008114806114cb575060008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b8152600401611479929190611c7f565b60206040518083038186803b15801561149157600080fd5b505afa1580156114a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c99190611a87565b145b61150a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150190611dc1565b60405180910390fd5b61158b8363095ea7b360e01b8484604051602401611529929190611cdf565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611590565b505050565b60006115f2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166116579092919063ffffffff16565b905060008151111561165257808060200190518101906116129190611a5a565b611651576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164890611da1565b60405180910390fd5b5b505050565b6060611666848460008561166f565b90509392505050565b6060824710156116b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ab90611d61565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516116dd9190611c4d565b60006040518083038185875af1925050503d806000811461171a576040519150601f19603f3d011682016040523d82523d6000602084013e61171f565b606091505b50915091506117308783838761173c565b92505050949350505050565b6060831561179f5760008351141561179757611757856117b2565b611796576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178d90611d81565b60405180910390fd5b5b8290506117aa565b6117a983836117d5565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000825111156117e85781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181c9190611d3f565b60405180910390fd5b600061183861183384611ef0565b611ecb565b9050808382526020820190508285602086028201111561185b5761185a61214f565b5b60005b8581101561188b57816118718882611902565b84526020840193506020830192505060018101905061185e565b5050509392505050565b6000813590506118a481612285565b92915050565b600082601f8301126118bf576118be61214a565b5b81516118cf848260208601611825565b91505092915050565b6000815190506118e78161229c565b92915050565b6000813590506118fc816122b3565b92915050565b600081519050611911816122b3565b92915050565b6000806040838503121561192e5761192d612159565b5b600061193c85828601611895565b925050602061194d858286016118ed565b9150509250929050565b6000806000806080858703121561197157611970612159565b5b600061197f87828801611895565b9450506020611990878288016118ed565b93505060406119a187828801611895565b92505060606119b2878288016118ed565b91505092959194509250565b6000806000606084860312156119d7576119d6612159565b5b60006119e586828701611895565b93505060206119f6868287016118ed565b9250506040611a07868287016118ed565b9150509250925092565b600060208284031215611a2757611a26612159565b5b600082015167ffffffffffffffff811115611a4557611a44612154565b5b611a51848285016118aa565b91505092915050565b600060208284031215611a7057611a6f612159565b5b6000611a7e848285016118d8565b91505092915050565b600060208284031215611a9d57611a9c612159565b5b6000611aab84828501611902565b91505092915050565b6000611ac08383611acc565b60208301905092915050565b611ad581612011565b82525050565b611ae481612011565b82525050565b6000611af582611f2c565b611aff8185611f5a565b9350611b0a83611f1c565b8060005b83811015611b3b578151611b228882611ab4565b9750611b2d83611f4d565b925050600181019050611b0e565b5085935050505092915050565b6000611b5382611f37565b611b5d8185611f6b565b9350611b6d818560208601612059565b80840191505092915050565b6000611b8482611f42565b611b8e8185611f76565b9350611b9e818560208601612059565b611ba78161215e565b840191505092915050565b6000611bbf602683611f76565b9150611bca8261216f565b604082019050919050565b6000611be2601d83611f76565b9150611bed826121be565b602082019050919050565b6000611c05602a83611f76565b9150611c10826121e7565b604082019050919050565b6000611c28603683611f76565b9150611c3382612236565b604082019050919050565b611c478161204f565b82525050565b6000611c598284611b48565b915081905092915050565b6000602082019050611c796000830184611adb565b92915050565b6000604082019050611c946000830185611adb565b611ca16020830184611adb565b9392505050565b6000606082019050611cbd6000830186611adb565b611cca6020830185611adb565b611cd76040830184611c3e565b949350505050565b6000604082019050611cf46000830185611adb565b611d016020830184611c3e565b9392505050565b6000606082019050611d1d6000830186611adb565b611d2a6020830185611c3e565b611d376040830184611c3e565b949350505050565b60006020820190508181036000830152611d598184611b79565b905092915050565b60006020820190508181036000830152611d7a81611bb2565b9050919050565b60006020820190508181036000830152611d9a81611bd5565b9050919050565b60006020820190508181036000830152611dba81611bf8565b9050919050565b60006020820190508181036000830152611dda81611c1b565b9050919050565b6000602082019050611df66000830184611c3e565b92915050565b6000608082019050611e116000830187611c3e565b8181036020830152611e238186611aea565b9050611e326040830185611adb565b611e3f6060830184611c3e565b95945050505050565b6000604082019050611e5d6000830185611c3e565b611e6a6020830184611c3e565b9392505050565b600060a082019050611e866000830188611c3e565b611e936020830187611c3e565b8181036040830152611ea58186611aea565b9050611eb46060830185611adb565b611ec16080830184611c3e565b9695505050505050565b6000611ed5611ee6565b9050611ee1828261208c565b919050565b6000604051905090565b600067ffffffffffffffff821115611f0b57611f0a61211b565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000611f928261204f565b9150611f9d8361204f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611fd257611fd16120bd565b5b828201905092915050565b6000611fe88261204f565b9150611ff38361204f565b925082821015612006576120056120bd565b5b828203905092915050565b600061201c8261202f565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101561207757808201518184015260208101905061205c565b83811115612086576000848401525b50505050565b6120958261215e565b810181811067ffffffffffffffff821117156120b4576120b361211b565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60008201527f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000602082015250565b61228e81612011565b811461229957600080fd5b50565b6122a581612023565b81146122b057600080fd5b50565b6122bc8161204f565b81146122c757600080fd5b5056fea264697066735822122019df29c139259169e5e854958a8e723d9ace2306bf0a782f32d4dfca1f62240864736f6c63430008070033"; + "0x60e06040523480156200001157600080fd5b50604051620029a0380380620029a083398181016040528101906200003791906200024e565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806200009f5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15620000d7576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200018c57600080fd5b505afa158015620001a1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c791906200021c565b73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250505050620002e8565b6000815190506200021681620002ce565b92915050565b600060208284031215620002355762000234620002c9565b5b6000620002458482850162000205565b91505092915050565b60008060408385031215620002685762000267620002c9565b5b6000620002788582860162000205565b92505060206200028b8582860162000205565b9150509250929050565b6000620002a282620002a9565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b620002d98162000295565b8114620002e557600080fd5b50565b60805160601c60a05160601c60c05160601c6125c9620003d76000396000818161036a015281816105ce0152818161091701528181610b4501528181610cdb01528181610f400152818161115501526114be0152600081816102f9015281816104a001528181610727015281816108a501528181610afb01528181610b6701528181610bfb01528181610ed10152818161110b015281816111770152818161125f015261138e01526000818161028a01528181610618015281816106b80152818161083601528181610c6a01528181610e62015281816111bf015281816112ce01526113fd01526125c96000f3fe6080604052600436106100555760003560e01c8063013b2ff81461005a57806321e093b11461008a5780632405620a146100b557806354c49a2a146100f257806380801f841461012f578063a53fb10b1461015a575b600080fd5b610074600480360381019061006f9190611b65565b610197565b6040516100819190612098565b60405180910390f35b34801561009657600080fd5b5061009f61049e565b6040516100ac9190611ed0565b60405180910390f35b3480156100c157600080fd5b506100dc60048036038101906100d79190611ba5565b6104c2565b6040516100e99190612098565b60405180910390f35b3480156100fe57600080fd5b5061011960048036038101906101149190611c0c565b610a50565b6040516101269190612098565b60405180910390f35b34801561013b57600080fd5b50610144610e11565b6040516101519190611fab565b60405180910390f35b34801561016657600080fd5b50610181600480360381019061017c9190611ba5565b611029565b60405161018e9190612098565b60405180910390f35b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156101ff576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600034141561023a576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600267ffffffffffffffff811115610257576102566123e4565b5b6040519080825280602002602001820160405280156102855781602001602082028036833780820191505090505b5090507f0000000000000000000000000000000000000000000000000000000000000000816000815181106102bd576102bc6123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061032c5761032b6123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16637ff36ab53486858960c8426103b5919061223e565b6040518663ffffffff1660e01b81526004016103d494939291906120b3565b6000604051808303818588803b1580156103ed57600080fd5b505af1158015610401573d6000803e3d6000fd5b50505050506040513d6000823e3d601f19601f8201168201806040525081019061042b9190611c5f565b90506000816001845161043e9190612294565b8151811061044f5761044e6123b5565b5b602002602001015190507f87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da11348260405161048a9291906120ff565b60405180910390a180935050505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148061052a5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15610561576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082141561059c576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105c93330848673ffffffffffffffffffffffffffffffffffffffff166115f7909392919063ffffffff16565b6106147f0000000000000000000000000000000000000000000000000000000000000000838573ffffffffffffffffffffffffffffffffffffffff166116809092919063ffffffff16565b60607f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561079957600267ffffffffffffffff811115610685576106846123e4565b5b6040519080825280602002602001820160405280156106b35781602001602082028036833780820191505090505b5090507f0000000000000000000000000000000000000000000000000000000000000000816000815181106106eb576106ea6123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061075a576107596123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050610913565b600367ffffffffffffffff8111156107b4576107b36123e4565b5b6040519080825280602002602001820160405280156107e25781602001602082028036833780820191505090505b50905083816000815181106107fa576107f96123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110610869576108686123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816002815181106108d8576108d76123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166338ed17398588858b60c842610962919061223e565b6040518663ffffffff1660e01b8152600401610982959493929190612128565b600060405180830381600087803b15801561099c57600080fd5b505af11580156109b0573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906109d99190611c5f565b9050600081600184516109ec9190612294565b815181106109fd576109fc6123b5565b5b602002602001015190507f017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f868683604051610a3a93929190611f74565b60405180910390a1809350505050949350505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610ab8576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000821415610af3576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b403330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166115f7909392919063ffffffff16565b610bab7f0000000000000000000000000000000000000000000000000000000000000000837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166116809092919063ffffffff16565b6000600267ffffffffffffffff811115610bc857610bc76123e4565b5b604051908082528060200260200182016040528015610bf65781602001602082028036833780820191505090505b5090507f000000000000000000000000000000000000000000000000000000000000000081600081518110610c2e57610c2d6123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110610c9d57610c9c6123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318cbafe58587858a60c842610d26919061223e565b6040518663ffffffff1660e01b8152600401610d46959493929190612128565b600060405180830381600087803b158015610d6057600080fd5b505af1158015610d74573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610d9d9190611c5f565b905060008160018451610db09190612294565b81518110610dc157610dc06123b5565b5b602002602001015190507f74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae8582604051610dfc9291906120ff565b60405180910390a18093505050509392505050565b600080600267ffffffffffffffff811115610e2f57610e2e6123e4565b5b604051908082528060200260200182016040528015610e5d5781602001602082028036833780820191505090505b5090507f000000000000000000000000000000000000000000000000000000000000000081600081518110610e9557610e946123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110610f0457610f036123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d06ca61f6001836040518363ffffffff1660e01b8152600401610f9a929190611fc6565b60006040518083038186803b158015610fb257600080fd5b505afa925050508015610fe857506040513d6000823e3d601f19601f82011682018060405250810190610fe59190611c5f565b60015b610ff6576000915050611026565b600081600184516110079190612294565b81518110611018576110176123b5565b5b602002602001015111925050505b90565b60008073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806110915750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156110c8576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000821415611103576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111503330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166115f7909392919063ffffffff16565b6111bb7f0000000000000000000000000000000000000000000000000000000000000000837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166116809092919063ffffffff16565b60607f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561134057600267ffffffffffffffff81111561122c5761122b6123e4565b5b60405190808252806020026020018201604052801561125a5781602001602082028036833780820191505090505b5090507f000000000000000000000000000000000000000000000000000000000000000081600081518110611292576112916123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110611301576113006123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506114ba565b600367ffffffffffffffff81111561135b5761135a6123e4565b5b6040519080825280602002602001820160405280156113895781602001602082028036833780820191505090505b5090507f0000000000000000000000000000000000000000000000000000000000000000816000815181106113c1576113c06123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816001815181106114305761142f6123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050838160028151811061147f5761147e6123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166338ed17398588858b60c842611509919061223e565b6040518663ffffffff1660e01b8152600401611529959493929190612128565b600060405180830381600087803b15801561154357600080fd5b505af1158015611557573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906115809190611c5f565b9050600081600184516115939190612294565b815181106115a4576115a36123b5565b5b602002602001015190507f0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b8686836040516115e193929190611f74565b60405180910390a1809350505050949350505050565b61167a846323b872dd60e01b85858560405160240161161893929190611f14565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506117de565b50505050565b6000811480611719575060008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b81526004016116c7929190611eeb565b60206040518083038186803b1580156116df57600080fd5b505afa1580156116f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117179190611cd5565b145b611758576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174f90612078565b60405180910390fd5b6117d98363095ea7b360e01b8484604051602401611777929190611f4b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506117de565b505050565b6000611840826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166118a59092919063ffffffff16565b90506000815111156118a057808060200190518101906118609190611ca8565b61189f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189690612058565b60405180910390fd5b5b505050565b60606118b484846000856118bd565b90509392505050565b606082471015611902576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f990612018565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161192b9190611eb9565b60006040518083038185875af1925050503d8060008114611968576040519150601f19603f3d011682016040523d82523d6000602084013e61196d565b606091505b509150915061197e8783838761198a565b92505050949350505050565b606083156119ed576000835114156119e5576119a585611a00565b6119e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119db90612038565b60405180910390fd5b5b8290506119f8565b6119f78383611a23565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600082511115611a365781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6a9190611ff6565b60405180910390fd5b6000611a86611a81846121a7565b612182565b90508083825260208201905082856020860282011115611aa957611aa8612418565b5b60005b85811015611ad95781611abf8882611b50565b845260208401935060208301925050600181019050611aac565b5050509392505050565b600081359050611af28161254e565b92915050565b600082601f830112611b0d57611b0c612413565b5b8151611b1d848260208601611a73565b91505092915050565b600081519050611b3581612565565b92915050565b600081359050611b4a8161257c565b92915050565b600081519050611b5f8161257c565b92915050565b60008060408385031215611b7c57611b7b612422565b5b6000611b8a85828601611ae3565b9250506020611b9b85828601611b3b565b9150509250929050565b60008060008060808587031215611bbf57611bbe612422565b5b6000611bcd87828801611ae3565b9450506020611bde87828801611b3b565b9350506040611bef87828801611ae3565b9250506060611c0087828801611b3b565b91505092959194509250565b600080600060608486031215611c2557611c24612422565b5b6000611c3386828701611ae3565b9350506020611c4486828701611b3b565b9250506040611c5586828701611b3b565b9150509250925092565b600060208284031215611c7557611c74612422565b5b600082015167ffffffffffffffff811115611c9357611c9261241d565b5b611c9f84828501611af8565b91505092915050565b600060208284031215611cbe57611cbd612422565b5b6000611ccc84828501611b26565b91505092915050565b600060208284031215611ceb57611cea612422565b5b6000611cf984828501611b50565b91505092915050565b6000611d0e8383611d1a565b60208301905092915050565b611d23816122c8565b82525050565b611d32816122c8565b82525050565b6000611d43826121e3565b611d4d8185612211565b9350611d58836121d3565b8060005b83811015611d89578151611d708882611d02565b9750611d7b83612204565b925050600181019050611d5c565b5085935050505092915050565b611d9f816122da565b82525050565b6000611db0826121ee565b611dba8185612222565b9350611dca818560208601612322565b80840191505092915050565b611ddf81612310565b82525050565b6000611df0826121f9565b611dfa818561222d565b9350611e0a818560208601612322565b611e1381612427565b840191505092915050565b6000611e2b60268361222d565b9150611e3682612438565b604082019050919050565b6000611e4e601d8361222d565b9150611e5982612487565b602082019050919050565b6000611e71602a8361222d565b9150611e7c826124b0565b604082019050919050565b6000611e9460368361222d565b9150611e9f826124ff565b604082019050919050565b611eb381612306565b82525050565b6000611ec58284611da5565b915081905092915050565b6000602082019050611ee56000830184611d29565b92915050565b6000604082019050611f006000830185611d29565b611f0d6020830184611d29565b9392505050565b6000606082019050611f296000830186611d29565b611f366020830185611d29565b611f436040830184611eaa565b949350505050565b6000604082019050611f606000830185611d29565b611f6d6020830184611eaa565b9392505050565b6000606082019050611f896000830186611d29565b611f966020830185611eaa565b611fa36040830184611eaa565b949350505050565b6000602082019050611fc06000830184611d96565b92915050565b6000604082019050611fdb6000830185611dd6565b8181036020830152611fed8184611d38565b90509392505050565b600060208201905081810360008301526120108184611de5565b905092915050565b6000602082019050818103600083015261203181611e1e565b9050919050565b6000602082019050818103600083015261205181611e41565b9050919050565b6000602082019050818103600083015261207181611e64565b9050919050565b6000602082019050818103600083015261209181611e87565b9050919050565b60006020820190506120ad6000830184611eaa565b92915050565b60006080820190506120c86000830187611eaa565b81810360208301526120da8186611d38565b90506120e96040830185611d29565b6120f66060830184611eaa565b95945050505050565b60006040820190506121146000830185611eaa565b6121216020830184611eaa565b9392505050565b600060a08201905061213d6000830188611eaa565b61214a6020830187611eaa565b818103604083015261215c8186611d38565b905061216b6060830185611d29565b6121786080830184611eaa565b9695505050505050565b600061218c61219d565b90506121988282612355565b919050565b6000604051905090565b600067ffffffffffffffff8211156121c2576121c16123e4565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061224982612306565b915061225483612306565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561228957612288612386565b5b828201905092915050565b600061229f82612306565b91506122aa83612306565b9250828210156122bd576122bc612386565b5b828203905092915050565b60006122d3826122e6565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061231b82612306565b9050919050565b60005b83811015612340578082015181840152602081019050612325565b8381111561234f576000848401525b50505050565b61235e82612427565b810181811067ffffffffffffffff8211171561237d5761237c6123e4565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60008201527f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000602082015250565b612557816122c8565b811461256257600080fd5b50565b61256e816122da565b811461257957600080fd5b50565b61258581612306565b811461259057600080fd5b5056fea26469706673582212203b367a485c1c8365253eb443a67a0af9e708d5f18be04ddce696d86f9d990a5364736f6c63430008070033"; type ZetaTokenConsumerUniV2ConstructorParams = | [signer?: Signer] diff --git a/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/ZetaTokenConsumerUniV3__factory.ts b/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/ZetaTokenConsumerUniV3__factory.ts index e4976985..7d5147b1 100644 --- a/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/ZetaTokenConsumerUniV3__factory.ts +++ b/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/ZetaTokenConsumerUniV3__factory.ts @@ -31,7 +31,7 @@ const _abi = [ }, { internalType: "address", - name: "quoter_", + name: "uniswapV3Factory_", type: "address", }, { @@ -161,6 +161,19 @@ const _abi = [ name: "ZetaExchangedForToken", type: "event", }, + { + inputs: [], + name: "WETH9Address", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [ { @@ -284,12 +297,12 @@ const _abi = [ }, { inputs: [], - name: "quoter", + name: "hasZetaLiquidity", outputs: [ { - internalType: "contract IQuoter", + internalType: "bool", name: "", - type: "address", + type: "bool", }, ], stateMutability: "view", @@ -308,6 +321,19 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [], + name: "uniswapV3Factory", + outputs: [ + { + internalType: "contract IUniswapV3Factory", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [], name: "uniswapV3Router", @@ -354,7 +380,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6101406040523480156200001257600080fd5b50604051620025c7380380620025c783398181016040528101906200003891906200028a565b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161480620000a05750600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b80620000d85750600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80620001105750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1562000148576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff1660e08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508473ffffffffffffffffffffffffffffffffffffffff166101008173ffffffffffffffffffffffffffffffffffffffff1660601b815250508373ffffffffffffffffffffffffffffffffffffffff166101208173ffffffffffffffffffffffffffffffffffffffff1660601b815250508273ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508162ffffff1660808162ffffff1660e81b815250508062ffffff1660a08162ffffff1660e81b81525050505050505050620003a2565b6000815190506200026d816200036e565b92915050565b600081519050620002848162000388565b92915050565b60008060008060008060c08789031215620002aa57620002a962000369565b5b6000620002ba89828a016200025c565b9650506020620002cd89828a016200025c565b9550506040620002e089828a016200025c565b9450506060620002f389828a016200025c565b93505060806200030689828a0162000273565b92505060a06200031989828a0162000273565b9150509295509295509295565b600062000333826200033a565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062ffffff82169050919050565b600080fd5b620003798162000326565b81146200038557600080fd5b50565b62000393816200035a565b81146200039f57600080fd5b50565b60805160e81c60a05160e81c60c05160601c60e05160601c6101005160601c6101205160601c612114620004b360003960006111400152600081816104030152818161062301528181610761015281816108560152818161099101528181610b0301528181610ed30152611031015260008181610343015281816104f5015281816106dc01528181610947015281816109b301528181610a0701528181610e8901528181610ef50152610f480152600081816103070152818161069a01528181610a4301528181610bb00152610f8a01526000818161067901528181610d240152610fab01526000818161037f015281816106bb0152818161087a01528181610a7f0152610f6901526121146000f3fe60806040526004361061008a5760003560e01c80633cbd7005116100595780633cbd70051461015957806354c49a2a146101845780635d9dfdde146101c1578063a53fb10b146101ec578063c6bbd5a71461022957610091565b8063013b2ff81461009657806321e093b1146100c65780632405620a146100f15780632c76d7a61461012e57610091565b3661009157005b600080fd5b6100b060048036038101906100ab9190611632565b610254565b6040516100bd9190611d3c565b60405180910390f35b3480156100d257600080fd5b506100db6104f3565b6040516100e89190611b30565b60405180910390f35b3480156100fd57600080fd5b5061011860048036038101906101139190611672565b610517565b6040516101259190611d3c565b60405180910390f35b34801561013a57600080fd5b50610143610854565b6040516101509190611c26565b60405180910390f35b34801561016557600080fd5b5061016e610878565b60405161017b9190611d21565b60405180910390f35b34801561019057600080fd5b506101ab60048036038101906101a691906116d9565b61089c565b6040516101b89190611d3c565b60405180910390f35b3480156101cd57600080fd5b506101d6610d22565b6040516101e39190611d21565b60405180910390f35b3480156101f857600080fd5b50610213600480360381019061020e9190611672565b610d46565b6040516102209190611d3c565b60405180910390f35b34801561023557600080fd5b5061023e61113e565b60405161024b9190611c0b565b60405180910390f35b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156102bc576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60003414156102f7576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518061010001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000062ffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200160c8426103d19190611dc3565b8152602001348152602001848152602001600073ffffffffffffffffffffffffffffffffffffffff16815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663414bf38934846040518363ffffffff1660e01b815260040161045b9190611d05565b6020604051808303818588803b15801561047457600080fd5b505af1158015610488573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906104ad9190611759565b90507f87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da1134826040516104e0929190611d57565b60405180910390a1809250505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148061057f5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156105b6576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008214156105f1576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61061e3330848673ffffffffffffffffffffffffffffffffffffffff16611162909392919063ffffffff16565b6106697f0000000000000000000000000000000000000000000000000000000000000000838573ffffffffffffffffffffffffffffffffffffffff166111eb9092919063ffffffff16565b60006040518060a00160405280857f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000060405160200161070f959493929190611aa5565b60405160208183030381529060405281526020018773ffffffffffffffffffffffffffffffffffffffff16815260200160c84261074c9190611dc3565b815260200184815260200186815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c04b8d59836040518263ffffffff1660e01b81526004016107b89190611ce3565b602060405180830381600087803b1580156107d257600080fd5b505af11580156107e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080a9190611759565b90507f017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f85858360405161083f93929190611bd4565b60405180910390a18092505050949350505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610904576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082141561093f576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61098c3330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16611162909392919063ffffffff16565b6109f77f0000000000000000000000000000000000000000000000000000000000000000837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166111eb9092919063ffffffff16565b60006040518061010001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000062ffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff16815260200160c842610ad19190611dc3565b8152602001848152602001858152602001600073ffffffffffffffffffffffffffffffffffffffff16815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663414bf389836040518263ffffffff1660e01b8152600401610b5a9190611d05565b602060405180830381600087803b158015610b7457600080fd5b505af1158015610b88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bac9190611759565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b8152600401610c079190611d3c565b600060405180830381600087803b158015610c2157600080fd5b505af1158015610c35573d6000803e3d6000fd5b505050507f74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae8482604051610c6a929190611d57565b60405180910390a160008673ffffffffffffffffffffffffffffffffffffffff1682604051610c9890611b1b565b60006040518083038185875af1925050503d8060008114610cd5576040519150601f19603f3d011682016040523d82523d6000602084013e610cda565b606091505b5050905080610d15576040517f3794aeaf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8193505050509392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008060009054906101000a900460ff1615610d8e576040517f29f745a700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60016000806101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610e0f5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15610e46576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000821415610e81576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ece3330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16611162909392919063ffffffff16565b610f397f0000000000000000000000000000000000000000000000000000000000000000837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166111eb9092919063ffffffff16565b60006040518060a001604052807f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000089604051602001610fdf959493929190611aa5565b60405160208183030381529060405281526020018773ffffffffffffffffffffffffffffffffffffffff16815260200160c84261101c9190611dc3565b815260200184815260200186815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c04b8d59836040518263ffffffff1660e01b81526004016110889190611ce3565b602060405180830381600087803b1580156110a257600080fd5b505af11580156110b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110da9190611759565b90507f0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b85858360405161110f93929190611bd4565b60405180910390a1809250505060008060006101000a81548160ff021916908315150217905550949350505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6111e5846323b872dd60e01b85858560405160240161118393929190611b74565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611349565b50505050565b6000811480611284575060008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b8152600401611232929190611b4b565b60206040518083038186803b15801561124a57600080fd5b505afa15801561125e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112829190611759565b145b6112c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ba90611cc3565b60405180910390fd5b6113448363095ea7b360e01b84846040516024016112e2929190611bab565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611349565b505050565b60006113ab826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166114109092919063ffffffff16565b905060008151111561140b57808060200190518101906113cb919061172c565b61140a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140190611ca3565b60405180910390fd5b5b505050565b606061141f8484600085611428565b90509392505050565b60608247101561146d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146490611c63565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516114969190611b04565b60006040518083038185875af1925050503d80600081146114d3576040519150601f19603f3d011682016040523d82523d6000602084013e6114d8565b606091505b50915091506114e9878383876114f5565b92505050949350505050565b6060831561155857600083511415611550576115108561156b565b61154f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154690611c83565b60405180910390fd5b5b829050611563565b611562838361158e565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000825111156115a15781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d59190611c41565b60405180910390fd5b6000813590506115ed81612099565b92915050565b600081519050611602816120b0565b92915050565b600081359050611617816120c7565b92915050565b60008151905061162c816120c7565b92915050565b6000806040838503121561164957611648611f50565b5b6000611657858286016115de565b925050602061166885828601611608565b9150509250929050565b6000806000806080858703121561168c5761168b611f50565b5b600061169a878288016115de565b94505060206116ab87828801611608565b93505060406116bc878288016115de565b92505060606116cd87828801611608565b91505092959194509250565b6000806000606084860312156116f2576116f1611f50565b5b6000611700868287016115de565b935050602061171186828701611608565b925050604061172286828701611608565b9150509250925092565b60006020828403121561174257611741611f50565b5b6000611750848285016115f3565b91505092915050565b60006020828403121561176f5761176e611f50565b5b600061177d8482850161161d565b91505092915050565b61178f81611e19565b82525050565b61179e81611e19565b82525050565b6117b56117b082611e19565b611eeb565b82525050565b60006117c682611d80565b6117d08185611d96565b93506117e0818560208601611eb8565b6117e981611f55565b840191505092915050565b60006117ff82611d80565b6118098185611da7565b9350611819818560208601611eb8565b80840191505092915050565b61182e81611e70565b82525050565b61183d81611e82565b82525050565b600061184e82611d8b565b6118588185611db2565b9350611868818560208601611eb8565b61187181611f55565b840191505092915050565b6000611889602683611db2565b915061189482611f80565b604082019050919050565b60006118ac600083611da7565b91506118b782611fcf565b600082019050919050565b60006118cf601d83611db2565b91506118da82611fd2565b602082019050919050565b60006118f2602a83611db2565b91506118fd82611ffb565b604082019050919050565b6000611915603683611db2565b91506119208261204a565b604082019050919050565b600060a083016000830151848203600086015261194882826117bb565b915050602083015161195d6020860182611786565b5060408301516119706040860182611a87565b5060608301516119836060860182611a87565b5060808301516119966080860182611a87565b508091505092915050565b610100820160008201516119b86000850182611786565b5060208201516119cb6020850182611786565b5060408201516119de6040850182611a52565b5060608201516119f16060850182611786565b506080820151611a046080850182611a87565b5060a0820151611a1760a0850182611a87565b5060c0820151611a2a60c0850182611a87565b5060e0820151611a3d60e0850182611a43565b50505050565b611a4c81611e37565b82525050565b611a5b81611e57565b82525050565b611a6a81611e57565b82525050565b611a81611a7c82611e57565b611f0f565b82525050565b611a9081611e66565b82525050565b611a9f81611e66565b82525050565b6000611ab182886117a4565b601482019150611ac18287611a70565b600382019150611ad182866117a4565b601482019150611ae18285611a70565b600382019150611af182846117a4565b6014820191508190509695505050505050565b6000611b1082846117f4565b915081905092915050565b6000611b268261189f565b9150819050919050565b6000602082019050611b456000830184611795565b92915050565b6000604082019050611b606000830185611795565b611b6d6020830184611795565b9392505050565b6000606082019050611b896000830186611795565b611b966020830185611795565b611ba36040830184611a96565b949350505050565b6000604082019050611bc06000830185611795565b611bcd6020830184611a96565b9392505050565b6000606082019050611be96000830186611795565b611bf66020830185611a96565b611c036040830184611a96565b949350505050565b6000602082019050611c206000830184611825565b92915050565b6000602082019050611c3b6000830184611834565b92915050565b60006020820190508181036000830152611c5b8184611843565b905092915050565b60006020820190508181036000830152611c7c8161187c565b9050919050565b60006020820190508181036000830152611c9c816118c2565b9050919050565b60006020820190508181036000830152611cbc816118e5565b9050919050565b60006020820190508181036000830152611cdc81611908565b9050919050565b60006020820190508181036000830152611cfd818461192b565b905092915050565b600061010082019050611d1b60008301846119a1565b92915050565b6000602082019050611d366000830184611a61565b92915050565b6000602082019050611d516000830184611a96565b92915050565b6000604082019050611d6c6000830185611a96565b611d796020830184611a96565b9392505050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000611dce82611e66565b9150611dd983611e66565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611e0e57611e0d611f21565b5b828201905092915050565b6000611e2482611e37565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062ffffff82169050919050565b6000819050919050565b6000611e7b82611e94565b9050919050565b6000611e8d82611e94565b9050919050565b6000611e9f82611ea6565b9050919050565b6000611eb182611e37565b9050919050565b60005b83811015611ed6578082015181840152602081019050611ebb565b83811115611ee5576000848401525b50505050565b6000611ef682611efd565b9050919050565b6000611f0882611f73565b9050919050565b6000611f1a82611f66565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b60008160e81b9050919050565b60008160601b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60008201527f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000602082015250565b6120a281611e19565b81146120ad57600080fd5b50565b6120b981611e2b565b81146120c457600080fd5b50565b6120d081611e66565b81146120db57600080fd5b5056fea2646970667358221220b86064610cc7341a7ebda7eb469b35d8c06d4a196518062087b0933eb1902a1b64736f6c63430008070033"; + "0x6101406040523480156200001257600080fd5b50604051620029833803806200298383398181016040528101906200003891906200028a565b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161480620000a05750600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b80620000d85750600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80620001105750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1562000148576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff1660e08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508473ffffffffffffffffffffffffffffffffffffffff166101008173ffffffffffffffffffffffffffffffffffffffff1660601b815250508373ffffffffffffffffffffffffffffffffffffffff166101208173ffffffffffffffffffffffffffffffffffffffff1660601b815250508273ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508162ffffff1660808162ffffff1660e81b815250508062ffffff1660a08162ffffff1660e81b81525050505050505050620003a2565b6000815190506200026d816200036e565b92915050565b600081519050620002848162000388565b92915050565b60008060008060008060c08789031215620002aa57620002a962000369565b5b6000620002ba89828a016200025c565b9650506020620002cd89828a016200025c565b9550506040620002e089828a016200025c565b9450506060620002f389828a016200025c565b93505060806200030689828a0162000273565b92505060a06200031989828a0162000273565b9150509295509295509295565b600062000333826200033a565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062ffffff82169050919050565b600080fd5b620003798162000326565b81146200038557600080fd5b50565b62000393816200035a565b81146200039f57600080fd5b50565b60805160e81c60a05160e81c60c05160601c60e05160601c6101005160601c6101205160601c6124ad620004d660003960008181610d900152610ddb01526000818161046f0152818161068f015281816107cd015281816108c2015281816109fd01528181610b6f0152818161115401526112b20152600081816103af0152818161056101528181610748015281816109b301528181610a1f01528181610a7301528181610e380152818161110a0152818161117601526111c90152600081816103730152818161070601528181610aaf01528181610c1c01528181610e170152818161120b01526113c10152600081816106e501528181610db4015261122c0152600081816103eb01528181610727015281816108e601528181610aeb01528181610e5901526111ea01526124ad6000f3fe6080604052600436106100a05760003560e01c806354c49a2a1161006457806354c49a2a1461019a5780635b549182146101d75780635d9dfdde1461020257806380801f841461022d578063a53fb10b14610258578063c469cf1414610295576100a7565b8063013b2ff8146100ac57806321e093b1146100dc5780632405620a146101075780632c76d7a6146101445780633cbd70051461016f576100a7565b366100a757005b600080fd5b6100c660048036038101906100c1919061190a565b6102c0565b6040516100d391906120a2565b60405180910390f35b3480156100e857600080fd5b506100f161055f565b6040516100fe9190611e44565b60405180910390f35b34801561011357600080fd5b5061012e6004803603810190610129919061194a565b610583565b60405161013b91906120a2565b60405180910390f35b34801561015057600080fd5b506101596108c0565b6040516101669190611f71565b60405180910390f35b34801561017b57600080fd5b506101846108e4565b6040516101919190612087565b60405180910390f35b3480156101a657600080fd5b506101c160048036038101906101bc91906119b1565b610908565b6040516101ce91906120a2565b60405180910390f35b3480156101e357600080fd5b506101ec610d8e565b6040516101f99190611f8c565b60405180910390f35b34801561020e57600080fd5b50610217610db2565b6040516102249190612087565b60405180910390f35b34801561023957600080fd5b50610242610dd6565b60405161024f9190611f56565b60405180910390f35b34801561026457600080fd5b5061027f600480360381019061027a919061194a565b610fc7565b60405161028c91906120a2565b60405180910390f35b3480156102a157600080fd5b506102aa6113bf565b6040516102b79190611e44565b60405180910390f35b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610328576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000341415610363576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518061010001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000062ffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200160c84261043d9190612129565b8152602001348152602001848152602001600073ffffffffffffffffffffffffffffffffffffffff16815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663414bf38934846040518363ffffffff1660e01b81526004016104c7919061206b565b6020604051808303818588803b1580156104e057600080fd5b505af11580156104f4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906105199190611a5e565b90507f87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da11348260405161054c9291906120bd565b60405180910390a1809250505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806105eb5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15610622576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082141561065d576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61068a3330848673ffffffffffffffffffffffffffffffffffffffff166113e3909392919063ffffffff16565b6106d57f0000000000000000000000000000000000000000000000000000000000000000838573ffffffffffffffffffffffffffffffffffffffff1661146c9092919063ffffffff16565b60006040518060a00160405280857f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000060405160200161077b959493929190611db9565b60405160208183030381529060405281526020018773ffffffffffffffffffffffffffffffffffffffff16815260200160c8426107b89190612129565b815260200184815260200186815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c04b8d59836040518263ffffffff1660e01b81526004016108249190612049565b602060405180830381600087803b15801561083e57600080fd5b505af1158015610852573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108769190611a5e565b90507f017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f8585836040516108ab93929190611f1f565b60405180910390a18092505050949350505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610970576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008214156109ab576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109f83330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166113e3909392919063ffffffff16565b610a637f0000000000000000000000000000000000000000000000000000000000000000837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661146c9092919063ffffffff16565b60006040518061010001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000062ffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff16815260200160c842610b3d9190612129565b8152602001848152602001858152602001600073ffffffffffffffffffffffffffffffffffffffff16815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663414bf389836040518263ffffffff1660e01b8152600401610bc6919061206b565b602060405180830381600087803b158015610be057600080fd5b505af1158015610bf4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c189190611a5e565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b8152600401610c7391906120a2565b600060405180830381600087803b158015610c8d57600080fd5b505af1158015610ca1573d6000803e3d6000fd5b505050507f74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae8482604051610cd69291906120bd565b60405180910390a160008673ffffffffffffffffffffffffffffffffffffffff1682604051610d0490611e2f565b60006040518083038185875af1925050503d8060008114610d41576040519150601f19603f3d011682016040523d82523d6000602084013e610d46565b606091505b5050905080610d81576040517f3794aeaf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8193505050509392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631698ee827f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006040518463ffffffff1660e01b8152600401610e9693929190611e88565b60206040518083038186803b158015610eae57600080fd5b505afa158015610ec2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee691906118dd565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610f27576000915050610fc4565b600081905060008173ffffffffffffffffffffffffffffffffffffffff16631a6865026040518163ffffffff1660e01b815260040160206040518083038186803b158015610f7457600080fd5b505afa158015610f88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fac9190611a31565b6fffffffffffffffffffffffffffffffff1611925050505b90565b60008060009054906101000a900460ff161561100f576040517f29f745a700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60016000806101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806110905750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156110c7576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000821415611102576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61114f3330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166113e3909392919063ffffffff16565b6111ba7f0000000000000000000000000000000000000000000000000000000000000000837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661146c9092919063ffffffff16565b60006040518060a001604052807f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000089604051602001611260959493929190611db9565b60405160208183030381529060405281526020018773ffffffffffffffffffffffffffffffffffffffff16815260200160c84261129d9190612129565b815260200184815260200186815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c04b8d59836040518263ffffffff1660e01b81526004016113099190612049565b602060405180830381600087803b15801561132357600080fd5b505af1158015611337573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061135b9190611a5e565b90507f0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b85858360405161139093929190611f1f565b60405180910390a1809250505060008060006101000a81548160ff021916908315150217905550949350505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b611466846323b872dd60e01b85858560405160240161140493929190611ebf565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506115ca565b50505050565b6000811480611505575060008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b81526004016114b3929190611e5f565b60206040518083038186803b1580156114cb57600080fd5b505afa1580156114df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115039190611a5e565b145b611544576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153b90612029565b60405180910390fd5b6115c58363095ea7b360e01b8484604051602401611563929190611ef6565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506115ca565b505050565b600061162c826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166116919092919063ffffffff16565b905060008151111561168c578080602001905181019061164c9190611a04565b61168b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168290612009565b60405180910390fd5b5b505050565b60606116a084846000856116a9565b90509392505050565b6060824710156116ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e590611fc9565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516117179190611e18565b60006040518083038185875af1925050503d8060008114611754576040519150601f19603f3d011682016040523d82523d6000602084013e611759565b606091505b509150915061176a87838387611776565b92505050949350505050565b606083156117d9576000835114156117d157611791856117ec565b6117d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c790611fe9565b60405180910390fd5b5b8290506117e4565b6117e3838361180f565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000825111156118225781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118569190611fa7565b60405180910390fd5b60008135905061186e8161241b565b92915050565b6000815190506118838161241b565b92915050565b60008151905061189881612432565b92915050565b6000815190506118ad81612449565b92915050565b6000813590506118c281612460565b92915050565b6000815190506118d781612460565b92915050565b6000602082840312156118f3576118f26122d2565b5b600061190184828501611874565b91505092915050565b60008060408385031215611921576119206122d2565b5b600061192f8582860161185f565b9250506020611940858286016118b3565b9150509250929050565b60008060008060808587031215611964576119636122d2565b5b60006119728782880161185f565b9450506020611983878288016118b3565b93505060406119948782880161185f565b92505060606119a5878288016118b3565b91505092959194509250565b6000806000606084860312156119ca576119c96122d2565b5b60006119d88682870161185f565b93505060206119e9868287016118b3565b92505060406119fa868287016118b3565b9150509250925092565b600060208284031215611a1a57611a196122d2565b5b6000611a2884828501611889565b91505092915050565b600060208284031215611a4757611a466122d2565b5b6000611a558482850161189e565b91505092915050565b600060208284031215611a7457611a736122d2565b5b6000611a82848285016118c8565b91505092915050565b611a948161217f565b82525050565b611aa38161217f565b82525050565b611aba611ab58261217f565b61226d565b82525050565b611ac981612191565b82525050565b6000611ada826120e6565b611ae481856120fc565b9350611af481856020860161223a565b611afd816122d7565b840191505092915050565b6000611b13826120e6565b611b1d818561210d565b9350611b2d81856020860161223a565b80840191505092915050565b611b42816121f2565b82525050565b611b5181612204565b82525050565b6000611b62826120f1565b611b6c8185612118565b9350611b7c81856020860161223a565b611b85816122d7565b840191505092915050565b6000611b9d602683612118565b9150611ba882612302565b604082019050919050565b6000611bc060008361210d565b9150611bcb82612351565b600082019050919050565b6000611be3601d83612118565b9150611bee82612354565b602082019050919050565b6000611c06602a83612118565b9150611c118261237d565b604082019050919050565b6000611c29603683612118565b9150611c34826123cc565b604082019050919050565b600060a0830160008301518482036000860152611c5c8282611acf565b9150506020830151611c716020860182611a8b565b506040830151611c846040860182611d9b565b506060830151611c976060860182611d9b565b506080830151611caa6080860182611d9b565b508091505092915050565b61010082016000820151611ccc6000850182611a8b565b506020820151611cdf6020850182611a8b565b506040820151611cf26040850182611d66565b506060820151611d056060850182611a8b565b506080820151611d186080850182611d9b565b5060a0820151611d2b60a0850182611d9b565b5060c0820151611d3e60c0850182611d9b565b5060e0820151611d5160e0850182611d57565b50505050565b611d60816121b9565b82525050565b611d6f816121d9565b82525050565b611d7e816121d9565b82525050565b611d95611d90826121d9565b612291565b82525050565b611da4816121e8565b82525050565b611db3816121e8565b82525050565b6000611dc58288611aa9565b601482019150611dd58287611d84565b600382019150611de58286611aa9565b601482019150611df58285611d84565b600382019150611e058284611aa9565b6014820191508190509695505050505050565b6000611e248284611b08565b915081905092915050565b6000611e3a82611bb3565b9150819050919050565b6000602082019050611e596000830184611a9a565b92915050565b6000604082019050611e746000830185611a9a565b611e816020830184611a9a565b9392505050565b6000606082019050611e9d6000830186611a9a565b611eaa6020830185611a9a565b611eb76040830184611d75565b949350505050565b6000606082019050611ed46000830186611a9a565b611ee16020830185611a9a565b611eee6040830184611daa565b949350505050565b6000604082019050611f0b6000830185611a9a565b611f186020830184611daa565b9392505050565b6000606082019050611f346000830186611a9a565b611f416020830185611daa565b611f4e6040830184611daa565b949350505050565b6000602082019050611f6b6000830184611ac0565b92915050565b6000602082019050611f866000830184611b39565b92915050565b6000602082019050611fa16000830184611b48565b92915050565b60006020820190508181036000830152611fc18184611b57565b905092915050565b60006020820190508181036000830152611fe281611b90565b9050919050565b6000602082019050818103600083015261200281611bd6565b9050919050565b6000602082019050818103600083015261202281611bf9565b9050919050565b6000602082019050818103600083015261204281611c1c565b9050919050565b600060208201905081810360008301526120638184611c3f565b905092915050565b6000610100820190506120816000830184611cb5565b92915050565b600060208201905061209c6000830184611d75565b92915050565b60006020820190506120b76000830184611daa565b92915050565b60006040820190506120d26000830185611daa565b6120df6020830184611daa565b9392505050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000612134826121e8565b915061213f836121e8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612174576121736122a3565b5b828201905092915050565b600061218a826121b9565b9050919050565b60008115159050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062ffffff82169050919050565b6000819050919050565b60006121fd82612216565b9050919050565b600061220f82612216565b9050919050565b600061222182612228565b9050919050565b6000612233826121b9565b9050919050565b60005b8381101561225857808201518184015260208101905061223d565b83811115612267576000848401525b50505050565b60006122788261227f565b9050919050565b600061228a826122f5565b9050919050565b600061229c826122e8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b60008160e81b9050919050565b60008160601b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60008201527f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000602082015250565b6124248161217f565b811461242f57600080fd5b50565b61243b81612191565b811461244657600080fd5b50565b6124528161219d565b811461245d57600080fd5b50565b612469816121e8565b811461247457600080fd5b5056fea26469706673582212205b01f0993d1aca09a588ccda9fc1b26d546e37338ba85cdc92932152534aeee064736f6c63430008070033"; type ZetaTokenConsumerUniV3ConstructorParams = | [signer?: Signer] @@ -376,7 +402,7 @@ export class ZetaTokenConsumerUniV3__factory extends ContractFactory { override deploy( zetaToken_: PromiseOrValue, uniswapV3Router_: PromiseOrValue, - quoter_: PromiseOrValue, + uniswapV3Factory_: PromiseOrValue, WETH9Address_: PromiseOrValue, zetaPoolFee_: PromiseOrValue, tokenPoolFee_: PromiseOrValue, @@ -385,7 +411,7 @@ export class ZetaTokenConsumerUniV3__factory extends ContractFactory { return super.deploy( zetaToken_, uniswapV3Router_, - quoter_, + uniswapV3Factory_, WETH9Address_, zetaPoolFee_, tokenPoolFee_, @@ -395,7 +421,7 @@ export class ZetaTokenConsumerUniV3__factory extends ContractFactory { override getDeployTransaction( zetaToken_: PromiseOrValue, uniswapV3Router_: PromiseOrValue, - quoter_: PromiseOrValue, + uniswapV3Factory_: PromiseOrValue, WETH9Address_: PromiseOrValue, zetaPoolFee_: PromiseOrValue, tokenPoolFee_: PromiseOrValue, @@ -404,7 +430,7 @@ export class ZetaTokenConsumerUniV3__factory extends ContractFactory { return super.getDeployTransaction( zetaToken_, uniswapV3Router_, - quoter_, + uniswapV3Factory_, WETH9Address_, zetaPoolFee_, tokenPoolFee_, 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/Interfaces.sol/ZContract__factory.ts b/typechain-types/factories/contracts/zevm/Interfaces.sol/ZContract__factory.ts deleted file mode 100644 index 8ec7907e..00000000 --- a/typechain-types/factories/contracts/zevm/Interfaces.sol/ZContract__factory.ts +++ /dev/null @@ -1,49 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import type { Provider } from "@ethersproject/providers"; -import type { - ZContract, - ZContractInterface, -} from "../../../../contracts/zevm/Interfaces.sol/ZContract"; - -const _abi = [ - { - inputs: [ - { - 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", - }, -] as const; - -export class ZContract__factory { - static readonly abi = _abi; - static createInterface(): ZContractInterface { - return new utils.Interface(_abi) as ZContractInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): ZContract { - return new Contract(address, _abi, signerOrProvider) as ZContract; - } -} diff --git a/typechain-types/factories/contracts/zevm/Interfaces.sol/index.ts b/typechain-types/factories/contracts/zevm/Interfaces.sol/index.ts index 531cbd69..a82a343f 100644 --- a/typechain-types/factories/contracts/zevm/Interfaces.sol/index.ts +++ b/typechain-types/factories/contracts/zevm/Interfaces.sol/index.ts @@ -4,4 +4,3 @@ export { ISystem__factory } from "./ISystem__factory"; export { IZRC20__factory } from "./IZRC20__factory"; export { IZRC20Metadata__factory } from "./IZRC20Metadata__factory"; -export { ZContract__factory } from "./ZContract__factory"; diff --git a/typechain-types/factories/contracts/zevm/SystemContract.sol/SystemContract__factory.ts b/typechain-types/factories/contracts/zevm/SystemContract.sol/SystemContract__factory.ts index 84d008b8..c6481503 100644 --- a/typechain-types/factories/contracts/zevm/SystemContract.sol/SystemContract__factory.ts +++ b/typechain-types/factories/contracts/zevm/SystemContract.sol/SystemContract__factory.ts @@ -160,6 +160,28 @@ const _abi = [ }, { inputs: [ + { + components: [ + { + internalType: "bytes", + name: "origin", + type: "bytes", + }, + { + internalType: "address", + name: "sender", + type: "address", + }, + { + internalType: "uint256", + name: "chainID", + type: "uint256", + }, + ], + internalType: "struct zContext", + name: "context", + type: "tuple", + }, { internalType: "address", name: "zrc20", @@ -407,7 +429,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60c06040523480156200001157600080fd5b50604051620016da380380620016da8339818101604052810190620000379190620001ac565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614620000b1576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250507f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac560405160405180910390a15050506200025b565b600081519050620001a68162000241565b92915050565b600080600060608486031215620001c857620001c76200023c565b5b6000620001d88682870162000195565b9350506020620001eb8682870162000195565b9250506040620001fe8682870162000195565b9150509250925092565b600062000215826200021c565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200024c8162000208565b81146200025857600080fd5b50565b60805160601c60a05160601c61144c6200028e600039600061051b0152600081816107ec0152610bc2015261144c6000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806391dd645f11610097578063c63585cc11610066578063c63585cc1461025e578063d7fd7afb1461028e578063d936a012146102be578063ee2815ba146102dc576100f5565b806391dd645f146101ec57806397770dff14610208578063a7cb050714610224578063c62178ac14610240576100f5565b8063513a9c05116100d3578063513a9c0514610164578063569541b914610194578063842da36d146101b25780638c6f037f146101d0576100f5565b80630be15547146100fa5780631f0e251b1461012a5780633ce4a5bc14610146575b600080fd5b610114600480360381019061010f9190610fd2565b6102f8565b60405161012191906111ac565b60405180910390f35b610144600480360381019061013f9190610e9d565b61032b565b005b61014e6104a8565b60405161015b91906111ac565b60405180910390f35b61017e60048036038101906101799190610fd2565b6104c0565b60405161018b91906111ac565b60405180910390f35b61019c6104f3565b6040516101a991906111ac565b60405180910390f35b6101ba610519565b6040516101c791906111ac565b60405180910390f35b6101ea60048036038101906101e59190610f1d565b61053d565b005b61020660048036038101906102019190610fff565b61076c565b005b610222600480360381019061021d9190610e9d565b6108c6565b005b61023e6004803603810190610239919061103f565b610a43565b005b610248610b10565b60405161025591906111ac565b60405180910390f35b61027860048036038101906102739190610eca565b610b36565b60405161028591906111ac565b60405180910390f35b6102a860048036038101906102a39190610fd2565b610ba8565b6040516102b59190611230565b60405180910390f35b6102c6610bc0565b6040516102d391906111ac565b60405180910390f35b6102f660048036038101906102f19190610fff565b610be4565b005b60016020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103a4576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561040b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405161049d91906111ac565b60405180910390a150565b73735b14bb79463307aacbed86daf3322b1e6226ab81565b60026020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105b6576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061062f57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15610666576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff166347e7ef2484866040518363ffffffff1660e01b81526004016106a19291906111c7565b602060405180830381600087803b1580156106bb57600080fd5b505af11580156106cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f39190610fa5565b508273ffffffffffffffffffffffffffffffffffffffff1663c8522691868685856040518563ffffffff1660e01b815260040161073394939291906111f0565b600060405180830381600087803b15801561074d57600080fd5b505af1158015610761573d6000803e3d6000fd5b505050505050505050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107e5576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006108347f0000000000000000000000000000000000000000000000000000000000000000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610b36565b9050806002600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e83826040516108b992919061124b565b60405180910390a1505050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461093f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156109a6576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051610a3891906111ac565b60405180910390a150565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610abc576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600080848152602001908152602001600020819055507f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d8282604051610b04929190611274565b60405180910390a15050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000610b458585610cec565b91509150858282604051602001610b5d92919061113e565b60405160208183030381529060405280519060200120604051602001610b8492919061116a565b6040516020818303038152906040528051906020012060001c925050509392505050565b60006020528060005260406000206000915090505481565b7f000000000000000000000000000000000000000000000000000000000000000081565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c5d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806001600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d8282604051610ce092919061124b565b60405180910390a15050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610d55576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610d8f578284610d92565b83835b8092508193505050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e01576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600081359050610e17816113d1565b92915050565b600081519050610e2c816113e8565b92915050565b60008083601f840112610e4857610e4761134d565b5b8235905067ffffffffffffffff811115610e6557610e64611348565b5b602083019150836001820283011115610e8157610e80611352565b5b9250929050565b600081359050610e97816113ff565b92915050565b600060208284031215610eb357610eb261135c565b5b6000610ec184828501610e08565b91505092915050565b600080600060608486031215610ee357610ee261135c565b5b6000610ef186828701610e08565b9350506020610f0286828701610e08565b9250506040610f1386828701610e08565b9150509250925092565b600080600080600060808688031215610f3957610f3861135c565b5b6000610f4788828901610e08565b9550506020610f5888828901610e88565b9450506040610f6988828901610e08565b935050606086013567ffffffffffffffff811115610f8a57610f89611357565b5b610f9688828901610e32565b92509250509295509295909350565b600060208284031215610fbb57610fba61135c565b5b6000610fc984828501610e1d565b91505092915050565b600060208284031215610fe857610fe761135c565b5b6000610ff684828501610e88565b91505092915050565b600080604083850312156110165761101561135c565b5b600061102485828601610e88565b925050602061103585828601610e08565b9150509250929050565b600080604083850312156110565761105561135c565b5b600061106485828601610e88565b925050602061107585828601610e88565b9150509250929050565b611088816112b9565b82525050565b61109f61109a826112b9565b61131a565b82525050565b6110b66110b1826112d7565b61132c565b82525050565b60006110c8838561129d565b93506110d583858461130b565b6110de83611361565b840190509392505050565b60006110f66020836112ae565b91506111018261137f565b602082019050919050565b60006111196001836112ae565b9150611124826113a8565b600182019050919050565b61113881611301565b82525050565b600061114a828561108e565b60148201915061115a828461108e565b6014820191508190509392505050565b60006111758261110c565b9150611181828561108e565b60148201915061119182846110a5565b6020820191506111a0826110e9565b91508190509392505050565b60006020820190506111c1600083018461107f565b92915050565b60006040820190506111dc600083018561107f565b6111e9602083018461112f565b9392505050565b6000606082019050611205600083018761107f565b611212602083018661112f565b81810360408301526112258184866110bc565b905095945050505050565b6000602082019050611245600083018461112f565b92915050565b6000604082019050611260600083018561112f565b61126d602083018461107f565b9392505050565b6000604082019050611289600083018561112f565b611296602083018461112f565b9392505050565b600082825260208201905092915050565b600081905092915050565b60006112c4826112e1565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b600061132582611336565b9050919050565b6000819050919050565b600061134182611372565b9050919050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f600082015250565b7fff00000000000000000000000000000000000000000000000000000000000000600082015250565b6113da816112b9565b81146113e557600080fd5b50565b6113f1816112cb565b81146113fc57600080fd5b50565b61140881611301565b811461141357600080fd5b5056fea26469706673582212201301c22af2146d3c8a752401f833e6bfb0b266f20d3fa3d546563c7ca9df07d764736f6c63430008070033"; + "0x60c06040523480156200001157600080fd5b50604051620018aa380380620018aa8339818101604052810190620000379190620001ac565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614620000b1576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250507f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac560405160405180910390a15050506200025b565b600081519050620001a68162000241565b92915050565b600080600060608486031215620001c857620001c76200023c565b5b6000620001d88682870162000195565b9350506020620001eb8682870162000195565b9250506040620001fe8682870162000195565b9150509250925092565b600062000215826200021c565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200024c8162000208565b81146200025857600080fd5b50565b60805160601c60a05160601c61161c6200028e600039600061051b0152600081816105bd0152610bc5015261161c6000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc1461025e578063d7fd7afb1461028e578063d936a012146102be578063ee2815ba146102dc576100f5565b806397770dff146101ec578063a7cb050714610208578063c39aca3714610224578063c62178ac14610240576100f5565b8063513a9c05116100d3578063513a9c0514610164578063569541b914610194578063842da36d146101b257806391dd645f146101d0576100f5565b80630be15547146100fa5780631f0e251b1461012a5780633ce4a5bc14610146575b600080fd5b610114600480360381019061010f9190611022565b6102f8565b60405161012191906112b1565b60405180910390f35b610144600480360381019061013f9190610ebf565b61032b565b005b61014e6104a8565b60405161015b91906112b1565b60405180910390f35b61017e60048036038101906101799190611022565b6104c0565b60405161018b91906112b1565b60405180910390f35b61019c6104f3565b6040516101a991906112b1565b60405180910390f35b6101ba610519565b6040516101c791906112b1565b60405180910390f35b6101ea60048036038101906101e5919061104f565b61053d565b005b61020660048036038101906102019190610ebf565b610697565b005b610222600480360381019061021d919061108f565b610814565b005b61023e60048036038101906102399190610f6c565b6108e1565b005b610248610b13565b60405161025591906112b1565b60405180910390f35b61027860048036038101906102739190610eec565b610b39565b60405161028591906112b1565b60405180910390f35b6102a860048036038101906102a39190611022565b610bab565b6040516102b5919061134a565b60405180910390f35b6102c6610bc3565b6040516102d391906112b1565b60405180910390f35b6102f660048036038101906102f1919061104f565b610be7565b005b60016020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103a4576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561040b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405161049d91906112b1565b60405180910390a150565b73735b14bb79463307aacbed86daf3322b1e6226ab81565b60026020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105b6576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006106057f0000000000000000000000000000000000000000000000000000000000000000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610b39565b9050806002600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e838260405161068a929190611365565b60405180910390a1505050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610710576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610777576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405161080991906112b1565b60405180910390a150565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461088d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600080848152602001908152602001600020819055507f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d82826040516108d592919061138e565b60405180910390a15050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461095a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806109d357503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15610a0a576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff166347e7ef2484866040518363ffffffff1660e01b8152600401610a459291906112cc565b602060405180830381600087803b158015610a5f57600080fd5b505af1158015610a73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a979190610f3f565b508273ffffffffffffffffffffffffffffffffffffffff1663de43156e87878786866040518663ffffffff1660e01b8152600401610ad99594939291906112f5565b600060405180830381600087803b158015610af357600080fd5b505af1158015610b07573d6000803e3d6000fd5b50505050505050505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000610b488585610cef565b91509150858282604051602001610b60929190611243565b60405160208183030381529060405280519060200120604051602001610b8792919061126f565b6040516020818303038152906040528051906020012060001c925050509392505050565b60006020528060005260406000206000915090505481565b7f000000000000000000000000000000000000000000000000000000000000000081565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c60576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806001600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d8282604051610ce3929190611365565b60405180910390a15050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610d58576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610d92578284610d95565b83835b8092508193505050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e04576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600081359050610e1a816115a1565b92915050565b600081519050610e2f816115b8565b92915050565b60008083601f840112610e4b57610e4a61150e565b5b8235905067ffffffffffffffff811115610e6857610e67611509565b5b602083019150836001820283011115610e8457610e8361151d565b5b9250929050565b600060608284031215610ea157610ea0611513565b5b81905092915050565b600081359050610eb9816115cf565b92915050565b600060208284031215610ed557610ed461152c565b5b6000610ee384828501610e0b565b91505092915050565b600080600060608486031215610f0557610f0461152c565b5b6000610f1386828701610e0b565b9350506020610f2486828701610e0b565b9250506040610f3586828701610e0b565b9150509250925092565b600060208284031215610f5557610f5461152c565b5b6000610f6384828501610e20565b91505092915050565b60008060008060008060a08789031215610f8957610f8861152c565b5b600087013567ffffffffffffffff811115610fa757610fa6611522565b5b610fb389828a01610e8b565b9650506020610fc489828a01610e0b565b9550506040610fd589828a01610eaa565b9450506060610fe689828a01610e0b565b935050608087013567ffffffffffffffff81111561100757611006611522565b5b61101389828a01610e35565b92509250509295509295509295565b6000602082840312156110385761103761152c565b5b600061104684828501610eaa565b91505092915050565b600080604083850312156110665761106561152c565b5b600061107485828601610eaa565b925050602061108585828601610e0b565b9150509250929050565b600080604083850312156110a6576110a561152c565b5b60006110b485828601610eaa565b92505060206110c585828601610eaa565b9150509250929050565b6110d881611475565b82525050565b6110e781611475565b82525050565b6110fe6110f982611475565b6114d6565b82525050565b61111561111082611493565b6114e8565b82525050565b600061112783856113b7565b93506111348385846114c7565b61113d83611531565b840190509392505050565b600061115483856113c8565b93506111618385846114c7565b61116a83611531565b840190509392505050565b60006111826020836113d9565b915061118d8261154f565b602082019050919050565b60006111a56001836113d9565b91506111b082611578565b600182019050919050565b6000606083016111ce60008401846113fb565b85830360008701526111e183828461111b565b925050506111f260208401846113e4565b6111ff60208601826110cf565b5061120d604084018461145e565b61121a6040860182611225565b508091505092915050565b61122e816114bd565b82525050565b61123d816114bd565b82525050565b600061124f82856110ed565b60148201915061125f82846110ed565b6014820191508190509392505050565b600061127a82611198565b915061128682856110ed565b6014820191506112968284611104565b6020820191506112a582611175565b91508190509392505050565b60006020820190506112c660008301846110de565b92915050565b60006040820190506112e160008301856110de565b6112ee6020830184611234565b9392505050565b6000608082019050818103600083015261130f81886111bb565b905061131e60208301876110de565b61132b6040830186611234565b818103606083015261133e818486611148565b90509695505050505050565b600060208201905061135f6000830184611234565b92915050565b600060408201905061137a6000830185611234565b61138760208301846110de565b9392505050565b60006040820190506113a36000830185611234565b6113b06020830184611234565b9392505050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006113f36020840184610e0b565b905092915050565b6000808335600160200384360303811261141857611417611527565b5b83810192508235915060208301925067ffffffffffffffff8211156114405761143f611504565b5b60018202360384131561145657611455611518565b5b509250929050565b600061146d6020840184610eaa565b905092915050565b60006114808261149d565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60006114e1826114f2565b9050919050565b6000819050919050565b60006114fd82611542565b9050919050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f600082015250565b7fff00000000000000000000000000000000000000000000000000000000000000600082015250565b6115aa81611475565b81146115b557600080fd5b50565b6115c181611487565b81146115cc57600080fd5b50565b6115d8816114bd565b81146115e357600080fd5b5056fea2646970667358221220d4153f74dccdcf8c4e404c06ec70932b2acc46ffc5784c13399fb6b547739b2064736f6c63430008070033"; type SystemContractConstructorParams = | [signer?: Signer] diff --git a/typechain-types/factories/contracts/zevm/wzeta.sol/WETH9__factory.ts b/typechain-types/factories/contracts/zevm/WZETA.sol/WETH9__factory.ts similarity index 98% rename from typechain-types/factories/contracts/zevm/wzeta.sol/WETH9__factory.ts rename to typechain-types/factories/contracts/zevm/WZETA.sol/WETH9__factory.ts index 0b32aa4a..5f92826c 100644 --- a/typechain-types/factories/contracts/zevm/wzeta.sol/WETH9__factory.ts +++ b/typechain-types/factories/contracts/zevm/WZETA.sol/WETH9__factory.ts @@ -7,7 +7,7 @@ import type { PromiseOrValue } from "../../../../common"; import type { WETH9, WETH9Interface, -} from "../../../../contracts/zevm/wzeta.sol/WETH9"; +} from "../../../../contracts/zevm/WZETA.sol/WETH9"; const _abi = [ { @@ -290,7 +290,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60606040526040805190810160405280600c81526020017f57726170706564205a65746100000000000000000000000000000000000000008152506000908051906020019061004f9291906100c8565b506040805190810160405280600581526020017f575a4554410000000000000000000000000000000000000000000000000000008152506001908051906020019061009b9291906100c8565b506012600260006101000a81548160ff021916908360ff16021790555034156100c357600080fd5b61016d565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061010957805160ff1916838001178555610137565b82800160010185558215610137579182015b8281111561013657825182559160200191906001019061011b565b5b5090506101449190610148565b5090565b61016a91905b8082111561016657600081600090555060010161014e565b5090565b90565b610c348061017c6000396000f3006060604052600436106100af576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100b9578063095ea7b31461014757806318160ddd146101a157806323b872dd146101ca5780632e1a7d4d14610243578063313ce5671461026657806370a082311461029557806395d89b41146102e2578063a9059cbb14610370578063d0e30db0146103ca578063dd62ed3e146103d4575b6100b7610440565b005b34156100c457600080fd5b6100cc6104dd565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561010c5780820151818401526020810190506100f1565b50505050905090810190601f1680156101395780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561015257600080fd5b610187600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061057b565b604051808215151515815260200191505060405180910390f35b34156101ac57600080fd5b6101b461066d565b6040518082815260200191505060405180910390f35b34156101d557600080fd5b610229600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061068c565b604051808215151515815260200191505060405180910390f35b341561024e57600080fd5b61026460048080359060200190919050506109d9565b005b341561027157600080fd5b610279610b05565b604051808260ff1660ff16815260200191505060405180910390f35b34156102a057600080fd5b6102cc600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610b18565b6040518082815260200191505060405180910390f35b34156102ed57600080fd5b6102f5610b30565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561033557808201518184015260208101905061031a565b50505050905090810190601f1680156103625780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561037b57600080fd5b6103b0600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610bce565b604051808215151515815260200191505060405180910390f35b6103d2610440565b005b34156103df57600080fd5b61042a600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610be3565b6040518082815260200191505060405180910390f35b34600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055503373ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c346040518082815260200191505060405180910390a2565b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105735780601f1061054857610100808354040283529160200191610573565b820191906000526020600020905b81548152906001019060200180831161055657829003601f168201915b505050505081565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff1631905090565b600081600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156106dc57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156107b457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b156108cf5781600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561084457600080fd5b81600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151515610a2757600080fd5b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515610ab457600080fd5b3373ffffffffffffffffffffffffffffffffffffffff167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65826040518082815260200191505060405180910390a250565b600260009054906101000a900460ff1681565b60036020528060005260406000206000915090505481565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610bc65780601f10610b9b57610100808354040283529160200191610bc6565b820191906000526020600020905b815481529060010190602001808311610ba957829003601f168201915b505050505081565b6000610bdb33848461068c565b905092915050565b60046020528160005260406000206020528060005260406000206000915091505054815600a165627a7a7230582066e54f9ca95b22c531d211601280be6f3fee6d88d7d0362557ea2b59ca0ef4610029"; + "0x60606040526040805190810160405280600c81526020017f57726170706564205a65746100000000000000000000000000000000000000008152506000908051906020019061004f9291906100c8565b506040805190810160405280600581526020017f575a4554410000000000000000000000000000000000000000000000000000008152506001908051906020019061009b9291906100c8565b506012600260006101000a81548160ff021916908360ff16021790555034156100c357600080fd5b61016d565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061010957805160ff1916838001178555610137565b82800160010185558215610137579182015b8281111561013657825182559160200191906001019061011b565b5b5090506101449190610148565b5090565b61016a91905b8082111561016657600081600090555060010161014e565b5090565b90565b610c348061017c6000396000f3006060604052600436106100af576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100b9578063095ea7b31461014757806318160ddd146101a157806323b872dd146101ca5780632e1a7d4d14610243578063313ce5671461026657806370a082311461029557806395d89b41146102e2578063a9059cbb14610370578063d0e30db0146103ca578063dd62ed3e146103d4575b6100b7610440565b005b34156100c457600080fd5b6100cc6104dd565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561010c5780820151818401526020810190506100f1565b50505050905090810190601f1680156101395780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561015257600080fd5b610187600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061057b565b604051808215151515815260200191505060405180910390f35b34156101ac57600080fd5b6101b461066d565b6040518082815260200191505060405180910390f35b34156101d557600080fd5b610229600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061068c565b604051808215151515815260200191505060405180910390f35b341561024e57600080fd5b61026460048080359060200190919050506109d9565b005b341561027157600080fd5b610279610b05565b604051808260ff1660ff16815260200191505060405180910390f35b34156102a057600080fd5b6102cc600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610b18565b6040518082815260200191505060405180910390f35b34156102ed57600080fd5b6102f5610b30565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561033557808201518184015260208101905061031a565b50505050905090810190601f1680156103625780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561037b57600080fd5b6103b0600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610bce565b604051808215151515815260200191505060405180910390f35b6103d2610440565b005b34156103df57600080fd5b61042a600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610be3565b6040518082815260200191505060405180910390f35b34600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055503373ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c346040518082815260200191505060405180910390a2565b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105735780601f1061054857610100808354040283529160200191610573565b820191906000526020600020905b81548152906001019060200180831161055657829003601f168201915b505050505081565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff1631905090565b600081600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156106dc57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156107b457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b156108cf5781600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561084457600080fd5b81600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151515610a2757600080fd5b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515610ab457600080fd5b3373ffffffffffffffffffffffffffffffffffffffff167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65826040518082815260200191505060405180910390a250565b600260009054906101000a900460ff1681565b60036020528060005260406000206000915090505481565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610bc65780601f10610b9b57610100808354040283529160200191610bc6565b820191906000526020600020905b815481529060010190602001808311610ba957829003601f168201915b505050505081565b6000610bdb33848461068c565b905092915050565b60046020528160005260406000206020528060005260406000206000915091505054815600a165627a7a723058208e8d099f48a4e7a73b2709a09da4e0704fd1cb7ce15b8cdf4a7552b81095bc530029"; type WETH9ConstructorParams = | [signer?: Signer] diff --git a/typechain-types/factories/contracts/zevm/wzeta.sol/index.ts b/typechain-types/factories/contracts/zevm/WZETA.sol/index.ts similarity index 100% rename from typechain-types/factories/contracts/zevm/wzeta.sol/index.ts rename to typechain-types/factories/contracts/zevm/WZETA.sol/index.ts 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 e39336ff..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 = - "0x60c06040523480156200001157600080fd5b50604051620029ab380380620029ab833981810160405281019062000037919062000319565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614620000b1576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8660069080519060200190620000c99291906200018f565b508560079080519060200190620000e29291906200018f565b5084600860006101000a81548160ff021916908360ff16021790555083608081815250508260028111156200011c576200011b62000556565b5b60a081600281111562000134576200013362000556565b5b60f81b8152505081600181905550806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050505062000667565b8280546200019d90620004ea565b90600052602060002090601f016020900481019282620001c157600085556200020d565b82601f10620001dc57805160ff19168380011785556200020d565b828001600101855582156200020d579182015b828111156200020c578251825591602001919060010190620001ef565b5b5090506200021c919062000220565b5090565b5b808211156200023b57600081600090555060010162000221565b5090565b600062000256620002508462000433565b6200040a565b905082815260208101848484011115620002755762000274620005e8565b5b62000282848285620004b4565b509392505050565b6000815190506200029b8162000608565b92915050565b600081519050620002b28162000622565b92915050565b600082601f830112620002d057620002cf620005e3565b5b8151620002e28482602086016200023f565b91505092915050565b600081519050620002fc8162000633565b92915050565b60008151905062000313816200064d565b92915050565b600080600080600080600060e0888a0312156200033b576200033a620005f2565b5b600088015167ffffffffffffffff8111156200035c576200035b620005ed565b5b6200036a8a828b01620002b8565b975050602088015167ffffffffffffffff8111156200038e576200038d620005ed565b5b6200039c8a828b01620002b8565b9650506040620003af8a828b0162000302565b9550506060620003c28a828b01620002eb565b9450506080620003d58a828b01620002a1565b93505060a0620003e88a828b01620002eb565b92505060c0620003fb8a828b016200028a565b91505092959891949750929550565b60006200041662000429565b905062000424828262000520565b919050565b6000604051905090565b600067ffffffffffffffff821115620004515762000450620005b4565b5b6200045c82620005f7565b9050602081019050919050565b600062000476826200047d565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015620004d4578082015181840152602081019050620004b7565b83811115620004e4576000848401525b50505050565b600060028204905060018216806200050357607f821691505b602082108114156200051a576200051962000585565b5b50919050565b6200052b82620005f7565b810181811067ffffffffffffffff821117156200054d576200054c620005b4565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b620006138162000469565b81146200061f57600080fd5b50565b600381106200063057600080fd5b50565b6200063e816200049d565b81146200064a57600080fd5b50565b6200065881620004a7565b81146200066457600080fd5b50565b60805160a05160f81c61230d6200069e60003960006109f101526000818161093b01528181610e210152610f56015261230d6000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c806385e1f4d0116100c3578063c835d7cc1161007c578063c835d7cc1461041b578063d9eeebed14610437578063dd62ed3e14610456578063eddeb12314610486578063f2441b32146104a2578063f687d12a146104c057610158565b806385e1f4d01461033157806395d89b411461034f578063a3413d031461036d578063a457c2d71461038b578063a9059cbb146103bb578063c7012626146103eb57610158565b8063395093511161011557806339509351146102355780633ce4a5bc1461026557806342966c681461028357806347e7ef24146102b35780634d8943bb146102e357806370a082311461030157610158565b806306fdde031461015d578063091d27881461017b578063095ea7b31461019957806318160ddd146101c957806323b872dd146101e7578063313ce56714610217575b600080fd5b6101656104dc565b6040516101729190611e83565b60405180910390f35b61018361056e565b6040516101909190611ea5565b60405180910390f35b6101b360048036038101906101ae9190611b44565b610574565b6040516101c09190611dd1565b60405180910390f35b6101d1610592565b6040516101de9190611ea5565b60405180910390f35b61020160048036038101906101fc9190611af1565b61059c565b60405161020e9190611dd1565b60405180910390f35b61021f610694565b60405161022c9190611ec0565b60405180910390f35b61024f600480360381019061024a9190611b44565b6106ab565b60405161025c9190611dd1565b60405180910390f35b61026d610751565b60405161027a9190611d56565b60405180910390f35b61029d60048036038101906102989190611c0d565b610769565b6040516102aa9190611dd1565b60405180910390f35b6102cd60048036038101906102c89190611b44565b61077e565b6040516102da9190611dd1565b60405180910390f35b6102eb6108ea565b6040516102f89190611ea5565b60405180910390f35b61031b60048036038101906103169190611a57565b6108f0565b6040516103289190611ea5565b60405180910390f35b610339610939565b6040516103469190611ea5565b60405180910390f35b61035761095d565b6040516103649190611e83565b60405180910390f35b6103756109ef565b6040516103829190611e68565b60405180910390f35b6103a560048036038101906103a09190611b44565b610a13565b6040516103b29190611dd1565b60405180910390f35b6103d560048036038101906103d09190611b44565b610b76565b6040516103e29190611dd1565b60405180910390f35b61040560048036038101906104009190611bb1565b610b94565b6040516104129190611dd1565b60405180910390f35b61043560048036038101906104309190611a57565b610cea565b005b61043f610ddd565b60405161044d929190611da8565b60405180910390f35b610470600480360381019061046b9190611ab1565b61104a565b60405161047d9190611ea5565b60405180910390f35b6104a0600480360381019061049b9190611c0d565b6110d1565b005b6104aa61118b565b6040516104b79190611d56565b60405180910390f35b6104da60048036038101906104d59190611c0d565b6111af565b005b6060600680546104eb90612109565b80601f016020809104026020016040519081016040528092919081815260200182805461051790612109565b80156105645780601f1061053957610100808354040283529160200191610564565b820191906000526020600020905b81548152906001019060200180831161054757829003601f168201915b5050505050905090565b60015481565b6000610588610581611269565b8484611271565b6001905092915050565b6000600554905090565b60006105a984848461142a565b6000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105f4611269565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561066b576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61068885610677611269565b85846106839190612019565b611271565b60019150509392505050565b6000600860009054906101000a900460ff16905090565b600081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106f7611269565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546107409190611f69565b925050819055506001905092915050565b73735b14bb79463307aacbed86daf3322b1e6226ab81565b60006107753383611686565b60019050919050565b600073735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561081c575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15610853576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61085d838361183e565b8273ffffffffffffffffffffffffffffffffffffffff167f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab373735b14bb79463307aacbed86daf3322b1e6226ab6040516020016108ba9190611d3b565b604051602081830303815290604052846040516108d8929190611dec565b60405180910390a26001905092915050565b60025481565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60606007805461096c90612109565b80601f016020809104026020016040519081016040528092919081815260200182805461099890612109565b80156109e55780601f106109ba576101008083540402835291602001916109e5565b820191906000526020600020905b8154815290600101906020018083116109c857829003601f168201915b5050505050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b600081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a5f611269565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610ad2576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b1c611269565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610b659190612019565b925050819055506001905092915050565b6000610b8a610b83611269565b848461142a565b6001905092915050565b6000806000610ba1610ddd565b915091508173ffffffffffffffffffffffffffffffffffffffff166323b872dd3373735b14bb79463307aacbed86daf3322b1e6226ab846040518463ffffffff1660e01b8152600401610bf693929190611d71565b602060405180830381600087803b158015610c1057600080fd5b505af1158015610c24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c489190611b84565b610c7e576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c883385611686565b3373ffffffffffffffffffffffffffffffffffffffff167f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d955868684600254604051610cd69493929190611e1c565b60405180910390a260019250505092915050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d63576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae81604051610dd29190611d56565b60405180910390a150565b60008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630be155477f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401610e5c9190611ea5565b60206040518083038186803b158015610e7457600080fd5b505afa158015610e88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eac9190611a84565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610f15576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d7fd7afb7f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401610f919190611ea5565b60206040518083038186803b158015610fa957600080fd5b505afa158015610fbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe19190611c3a565b9050600081141561101e576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600254600154836110319190611fbf565b61103b9190611f69565b90508281945094505050509091565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461114a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806002819055507fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f816040516111809190611ea5565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611228576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806001819055507fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a8160405161125e9190611ea5565b60405180910390a150565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112d8576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561133f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161141d9190611ea5565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611491576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114f8576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611576576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816115829190612019565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116149190611f69565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116789190611ea5565b60405180910390a350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116ed576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561176b576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816117779190612019565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600560008282546117cc9190612019565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516118319190611ea5565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156118a5576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600560008282546118b79190611f69565b9250508190555080600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461190d9190611f69565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516119729190611ea5565b60405180910390a35050565b600061199161198c84611f00565b611edb565b9050828152602081018484840111156119ad576119ac612251565b5b6119b88482856120c7565b509392505050565b6000813590506119cf81612292565b92915050565b6000815190506119e481612292565b92915050565b6000815190506119f9816122a9565b92915050565b600082601f830112611a1457611a1361224c565b5b8135611a2484826020860161197e565b91505092915050565b600081359050611a3c816122c0565b92915050565b600081519050611a51816122c0565b92915050565b600060208284031215611a6d57611a6c61225b565b5b6000611a7b848285016119c0565b91505092915050565b600060208284031215611a9a57611a9961225b565b5b6000611aa8848285016119d5565b91505092915050565b60008060408385031215611ac857611ac761225b565b5b6000611ad6858286016119c0565b9250506020611ae7858286016119c0565b9150509250929050565b600080600060608486031215611b0a57611b0961225b565b5b6000611b18868287016119c0565b9350506020611b29868287016119c0565b9250506040611b3a86828701611a2d565b9150509250925092565b60008060408385031215611b5b57611b5a61225b565b5b6000611b69858286016119c0565b9250506020611b7a85828601611a2d565b9150509250929050565b600060208284031215611b9a57611b9961225b565b5b6000611ba8848285016119ea565b91505092915050565b60008060408385031215611bc857611bc761225b565b5b600083013567ffffffffffffffff811115611be657611be5612256565b5b611bf2858286016119ff565b9250506020611c0385828601611a2d565b9150509250929050565b600060208284031215611c2357611c2261225b565b5b6000611c3184828501611a2d565b91505092915050565b600060208284031215611c5057611c4f61225b565b5b6000611c5e84828501611a42565b91505092915050565b611c708161204d565b82525050565b611c87611c828261204d565b61216c565b82525050565b611c968161205f565b82525050565b6000611ca782611f31565b611cb18185611f47565b9350611cc18185602086016120d6565b611cca81612260565b840191505092915050565b611cde816120b5565b82525050565b6000611cef82611f3c565b611cf98185611f58565b9350611d098185602086016120d6565b611d1281612260565b840191505092915050565b611d268161209e565b82525050565b611d35816120a8565b82525050565b6000611d478284611c76565b60148201915081905092915050565b6000602082019050611d6b6000830184611c67565b92915050565b6000606082019050611d866000830186611c67565b611d936020830185611c67565b611da06040830184611d1d565b949350505050565b6000604082019050611dbd6000830185611c67565b611dca6020830184611d1d565b9392505050565b6000602082019050611de66000830184611c8d565b92915050565b60006040820190508181036000830152611e068185611c9c565b9050611e156020830184611d1d565b9392505050565b60006080820190508181036000830152611e368187611c9c565b9050611e456020830186611d1d565b611e526040830185611d1d565b611e5f6060830184611d1d565b95945050505050565b6000602082019050611e7d6000830184611cd5565b92915050565b60006020820190508181036000830152611e9d8184611ce4565b905092915050565b6000602082019050611eba6000830184611d1d565b92915050565b6000602082019050611ed56000830184611d2c565b92915050565b6000611ee5611ef6565b9050611ef1828261213b565b919050565b6000604051905090565b600067ffffffffffffffff821115611f1b57611f1a61221d565b5b611f2482612260565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611f748261209e565b9150611f7f8361209e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611fb457611fb3612190565b5b828201905092915050565b6000611fca8261209e565b9150611fd58361209e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561200e5761200d612190565b5b828202905092915050565b60006120248261209e565b915061202f8361209e565b92508282101561204257612041612190565b5b828203905092915050565b60006120588261207e565b9050919050565b60008115159050919050565b60008190506120798261227e565b919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006120c08261206b565b9050919050565b82818337600083830152505050565b60005b838110156120f45780820151818401526020810190506120d9565b83811115612103576000848401525b50505050565b6000600282049050600182168061212157607f821691505b60208210811415612135576121346121ee565b5b50919050565b61214482612260565b810181811067ffffffffffffffff821117156121635761216261221d565b5b80604052505050565b60006121778261217e565b9050919050565b600061218982612271565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b6003811061228f5761228e6121bf565b5b50565b61229b8161204d565b81146122a657600080fd5b50565b6122b28161205f565b81146122bd57600080fd5b50565b6122c98161209e565b81146122d457600080fd5b5056fea26469706673582212207b8bccfb06175c107105f0c0cbbe86fb68868f564e25a83513c419b636498b0864736f6c63430008070033"; + "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 370e4869..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 wzetaSol from "./wzeta.sol"; +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/ZContract__factory.ts b/typechain-types/factories/contracts/zevm/interfaces/ZContract__factory.ts index ca7e36d6..93bbee2f 100644 --- a/typechain-types/factories/contracts/zevm/interfaces/ZContract__factory.ts +++ b/typechain-types/factories/contracts/zevm/interfaces/ZContract__factory.ts @@ -12,6 +12,28 @@ import type { const _abi = [ { inputs: [ + { + components: [ + { + internalType: "bytes", + name: "origin", + type: "bytes", + }, + { + internalType: "address", + name: "sender", + type: "address", + }, + { + internalType: "uint256", + name: "chainID", + type: "uint256", + }, + ], + internalType: "struct zContext", + name: "context", + type: "tuple", + }, { internalType: "address", name: "zrc20", 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 71866c9d..d0d85364 100644 --- a/typechain-types/hardhat.d.ts +++ b/typechain-types/hardhat.d.ts @@ -100,6 +100,38 @@ declare module "hardhat/types/runtime" { name: "IUniswapV3SwapCallback", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; + getContractFactory( + name: "IUniswapV3Factory", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "IUniswapV3Pool", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "IUniswapV3PoolActions", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "IUniswapV3PoolDerivedState", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "IUniswapV3PoolEvents", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "IUniswapV3PoolImmutables", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "IUniswapV3PoolOwnerActions", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "IUniswapV3PoolState", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; getContractFactory( name: "IQuoter", signerOrOptions?: ethers.Signer | FactoryOptions @@ -144,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 @@ -180,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 @@ -232,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 @@ -252,10 +304,6 @@ declare module "hardhat/types/runtime" { name: "IZRC20Metadata", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; - getContractFactory( - name: "ZContract", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; getContractFactory( name: "IUniswapV2Router01", signerOrOptions?: ethers.Signer | FactoryOptions @@ -264,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 @@ -280,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 @@ -403,6 +471,46 @@ declare module "hardhat/types/runtime" { address: string, signer?: ethers.Signer ): Promise; + getContractAt( + name: "IUniswapV3Factory", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "IUniswapV3Pool", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "IUniswapV3PoolActions", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "IUniswapV3PoolDerivedState", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "IUniswapV3PoolEvents", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "IUniswapV3PoolImmutables", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "IUniswapV3PoolOwnerActions", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "IUniswapV3PoolState", + address: string, + signer?: ethers.Signer + ): Promise; getContractAt( name: "IQuoter", address: string, @@ -458,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, @@ -503,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, @@ -568,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, @@ -593,11 +726,6 @@ declare module "hardhat/types/runtime" { address: string, signer?: ethers.Signer ): Promise; - getContractAt( - name: "ZContract", - address: string, - signer?: ethers.Signer - ): Promise; getContractAt( name: "IUniswapV2Router01", address: string, @@ -608,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, @@ -628,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 bc5db8b6..688a7938 100644 --- a/typechain-types/index.ts +++ b/typechain-types/index.ts @@ -48,6 +48,22 @@ export type { UniswapV2Router02 } from "./@uniswap/v2-periphery/contracts/Uniswa export { UniswapV2Router02__factory } from "./factories/@uniswap/v2-periphery/contracts/UniswapV2Router02__factory"; export type { IUniswapV3SwapCallback } from "./@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback"; export { IUniswapV3SwapCallback__factory } from "./factories/@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback__factory"; +export type { IUniswapV3Factory } from "./@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory"; +export { IUniswapV3Factory__factory } from "./factories/@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory__factory"; +export type { IUniswapV3Pool } from "./@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool"; +export { IUniswapV3Pool__factory } from "./factories/@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool__factory"; +export type { IUniswapV3PoolActions } from "./@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions"; +export { IUniswapV3PoolActions__factory } from "./factories/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions__factory"; +export type { IUniswapV3PoolDerivedState } from "./@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState"; +export { IUniswapV3PoolDerivedState__factory } from "./factories/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState__factory"; +export type { IUniswapV3PoolEvents } from "./@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents"; +export { IUniswapV3PoolEvents__factory } from "./factories/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents__factory"; +export type { IUniswapV3PoolImmutables } from "./@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables"; +export { IUniswapV3PoolImmutables__factory } from "./factories/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables__factory"; +export type { IUniswapV3PoolOwnerActions } from "./@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions"; +export { IUniswapV3PoolOwnerActions__factory } from "./factories/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions__factory"; +export type { IUniswapV3PoolState } from "./@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState"; +export { IUniswapV3PoolState__factory } from "./factories/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState__factory"; export type { IQuoter } from "./@uniswap/v3-periphery/contracts/interfaces/IQuoter"; export { IQuoter__factory } from "./factories/@uniswap/v3-periphery/contracts/interfaces/IQuoter__factory"; export type { ISwapRouter } from "./@uniswap/v3-periphery/contracts/interfaces/ISwapRouter"; @@ -70,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"; @@ -86,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"; @@ -98,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"; @@ -110,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 { ZContract } from "./contracts/zevm/Interfaces.sol/ZContract"; -export { ZContract__factory } from "./factories/contracts/zevm/Interfaces.sol/ZContract__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 fe0c2f47..6a8cfffc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1827,7 +1827,7 @@ resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== -"@types/minimist@^1.2.0": +"@types/minimist@^1.2.0", "@types/minimist@^1.2.2": version "1.2.2" resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c" integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== @@ -2076,15 +2076,12 @@ "@uniswap/v3-core" "1.0.0" base64-sol "1.0.1" -"@zetachain/addresses-tools@^0.0.7": - version "0.0.7" - resolved "https://registry.yarnpkg.com/@zetachain/addresses-tools/-/addresses-tools-0.0.7.tgz#9775318f2ec734638f2ffa506eb5027278025801" - integrity sha512-9BGvNz+5H1CdQCFDS6cnL/IlQRbw8RcK8MKCUDb77h7AnvxD60HPObMO8dSelSMdwopj+7nxRlJtse5YkApREg== - -"@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@^2.4.3": + version "2.4.3" + resolved "https://registry.yarnpkg.com/@zetachain/networks/-/networks-2.4.3.tgz#870b2cda4b91f913be990246831378f60688d452" + integrity sha512-ZoqN8M6+59OkujZCl3FcSEgSftIN1tw5bpuFwI/2+f0SlKH+8ztAk7aF1QHmzrPqolIJKt29ogsfvIjiynXNkg== + dependencies: + dotenv "^16.1.4" abbrev@1: version "1.1.1" @@ -2200,6 +2197,14 @@ aggregate-error@^3.0.0: clean-stack "^2.0.0" indent-string "^4.0.0" +aggregate-error@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-4.0.1.tgz#25091fe1573b9e0be892aeda15c7c66a545f758e" + integrity sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w== + dependencies: + clean-stack "^4.0.0" + indent-string "^5.0.0" + ajv@^6.10.0, ajv@^6.12.3, ajv@^6.12.4: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" @@ -2271,6 +2276,14 @@ antlr4ts@^0.5.0-alpha.4: resolved "https://registry.yarnpkg.com/antlr4ts/-/antlr4ts-0.5.0-alpha.4.tgz#71702865a87478ed0b40c0709f422cf14d51652a" integrity sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ== +anymatch@^1.3.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" + integrity sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA== + dependencies: + micromatch "^2.1.5" + normalize-path "^2.0.0" + anymatch@~3.1.1, anymatch@~3.1.2: version "3.1.3" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" @@ -2296,6 +2309,28 @@ argparse@^2.0.1: resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== +arr-diff@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" + integrity sha512-dtXTVMkh6VkEEA7OhXnN1Ecb8aAGFdZ1LFxtOCoqj4qkyOJMt7+qs6Ahdy6p/NQCPYsRSXXivhSB/J5E9jmYKA== + dependencies: + arr-flatten "^1.0.1" + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA== + +arr-flatten@^1.0.1, arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q== + array-back@^3.0.1, array-back@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/array-back/-/array-back-3.1.0.tgz#b8859d7a508871c9a7b2cf42f99428f65e96bfb0" @@ -2335,6 +2370,16 @@ array-uniq@1.0.3: resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" integrity sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q== +array-unique@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" + integrity sha512-G2n5bG5fSUCpnsXz4+8FUkYsGPkNfLn9YvS66U5qbTIXI2Ynnlo4Bi42bWv+omKUCqz+ejzfClwne0alJWJPhg== + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ== + array.prototype.flat@^1.2.3, array.prototype.flat@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz#ffc6576a7ca3efc2f46a143b9d1dda9b4b3cf5e2" @@ -2393,6 +2438,16 @@ assertion-error@^1.1.0: resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw== + +async-each@^1.0.0: + version "1.0.6" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.6.tgz#52f1d9403818c179b7561e11a5d1b77eb2160e77" + integrity sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg== + async-eventemitter@^0.2.4: version "0.2.4" resolved "https://registry.yarnpkg.com/async-eventemitter/-/async-eventemitter-0.2.4.tgz#f5e7c8ca7d3e46aab9ec40a292baf686a0bafaca" @@ -2422,6 +2477,11 @@ at-least-node@^1.0.0: resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== +atob@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + available-typed-arrays@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" @@ -2437,14 +2497,13 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.12.0.tgz#ce1c9d143389679e253b314241ea9aa5cec980d3" integrity sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg== -axios@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.4.0.tgz#38a7bf1224cd308de271146038b551d725f0be1f" - integrity sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA== +babel-runtime@^6.9.2: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + integrity sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g== dependencies: - follow-redirects "^1.15.0" - form-data "^4.0.0" - proxy-from-env "^1.1.0" + core-js "^2.4.0" + regenerator-runtime "^0.11.0" balanced-match@^1.0.0: version "1.0.2" @@ -2468,6 +2527,19 @@ base64-sol@1.0.1: resolved "https://registry.yarnpkg.com/base64-sol/-/base64-sol-1.0.1.tgz#91317aa341f0bc763811783c5729f1c2574600f6" integrity sha512-ld3cCNMeXt4uJXmLZBHFGMvVpK9KsLVEhPpFRXnvSVAqABKbuNZg/+dsq3NuM+wxFLb/UrVkz7m1ciWmkMfTbg== +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + bcrypt-pbkdf@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" @@ -2497,6 +2569,11 @@ bignumber.js@^9.0.0, bignumber.js@^9.0.1: resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.1.tgz#c4df7dc496bd849d4c9464344c1aa74228b4dac6" integrity sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig== +binary-extensions@^1.0.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" + integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== + binary-extensions@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" @@ -2570,6 +2647,31 @@ brace-expansion@^2.0.1: dependencies: balanced-match "^1.0.0" +braces@^1.8.2: + version "1.8.5" + resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" + integrity sha512-xU7bpz2ytJl1bH9cgIurjpg/n8Gohy9GTw81heDYLJQ4RU60dlyJsa+atVF2pI0yMMvKxI9HkKwjePCj5XI1hw== + dependencies: + expand-range "^1.8.1" + preserve "^0.2.0" + repeat-element "^1.1.2" + +braces@^2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + braces@^3.0.2, braces@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" @@ -2684,6 +2786,21 @@ bytes@3.1.2: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + call-bind@^1.0.0, call-bind@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" @@ -2706,12 +2823,22 @@ camelcase-keys@^6.2.2: map-obj "^4.0.0" quick-lru "^4.0.1" +camelcase-keys@^7.0.0: + version "7.0.2" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-7.0.2.tgz#d048d8c69448745bb0de6fc4c1c52a30dfbe7252" + integrity sha512-Rjs1H+A9R+Ig+4E/9oyB66UC5Mj9Xq3N//vcLf2WzgdTi/3gUu3Z9KoqmlrEG4VuuLK8wJHofxzdQXz/knhiYg== + dependencies: + camelcase "^6.3.0" + map-obj "^4.1.0" + quick-lru "^5.1.1" + type-fest "^1.2.1" + camelcase@^5.0.0, camelcase@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -camelcase@^6.0.0: +camelcase@^6.0.0, camelcase@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== @@ -2821,6 +2948,22 @@ chokidar@3.5.3, chokidar@^3.4.0: optionalDependencies: fsevents "~2.3.2" +chokidar@^1.6.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" + integrity sha512-mk8fAWcRUOxY7btlLtitj3A45jOwSAxH4tOFOoEGbVsl6cL6pPMWUy7dwZ/canfj3QEdP6FHSnf/l1c6/WkzVg== + dependencies: + anymatch "^1.3.0" + async-each "^1.0.0" + glob-parent "^2.0.0" + inherits "^2.0.1" + is-binary-path "^1.0.0" + is-glob "^2.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.0.0" + optionalDependencies: + fsevents "^1.0.0" + ci-info@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" @@ -2839,6 +2982,16 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: inherits "^2.0.1" safe-buffer "^5.0.1" +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + classic-level@^1.2.0: version "1.3.0" resolved "https://registry.yarnpkg.com/classic-level/-/classic-level-1.3.0.tgz#5e36680e01dc6b271775c093f2150844c5edd5c8" @@ -2855,6 +3008,13 @@ clean-stack@^2.0.0: resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== +clean-stack@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-4.2.0.tgz#c464e4cde4ac789f4e0735c5d75beb49d7b30b31" + integrity sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg== + dependencies: + escape-string-regexp "5.0.0" + cli-cursor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" @@ -2923,6 +3083,14 @@ clone@^1.0.2: resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw== + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" @@ -2994,6 +3162,11 @@ commander@^8.1.0: resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== +component-emitter@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -3014,11 +3187,21 @@ cookie@^0.4.1: resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw== + core-js-pure@^3.0.1: version "3.30.1" resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.30.1.tgz#7d93dc89e7d47b8ef05d7e79f507b0e99ea77eec" integrity sha512-nXBEVpmUnNRhz83cHd9JRQC52cTMcuXAmR56+9dSMpRdpeA4I1PX6yjmhd71Eyc/wXNsdBdUDIj1QTIeZpU5Tg== +core-js@^2.4.0: + version "2.6.12" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" + integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== + core-util-is@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" @@ -3029,6 +3212,23 @@ core-util-is@~1.0.0: resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== +cpx@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/cpx/-/cpx-1.5.0.tgz#185be018511d87270dedccc293171e37655ab88f" + integrity sha512-jHTjZhsbg9xWgsP2vuNW2jnnzBX+p4T+vNI9Lbjzs1n4KhOfa22bQppiFYLsWQKd8TzmL5aSP/Me3yfsCwXbDA== + dependencies: + babel-runtime "^6.9.2" + chokidar "^1.6.0" + duplexer "^0.1.1" + glob "^7.0.5" + glob2base "^0.0.12" + minimatch "^3.0.2" + mkdirp "^0.5.1" + resolve "^1.1.7" + safe-buffer "^5.0.1" + shell-quote "^1.6.1" + subarg "^1.0.0" + crc-32@^1.2.0: version "1.2.2" resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.2.tgz#3cad35a934b8bf71f25ca524b6da51fb7eace2ff" @@ -3136,7 +3336,7 @@ debug@4, debug@4.3.4, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, de dependencies: ms "2.1.2" -debug@^2.2.0: +debug@^2.2.0, debug@^2.3.3: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== @@ -3168,6 +3368,16 @@ decamelize@^4.0.0: resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== +decamelize@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-5.0.1.tgz#db11a92e58c741ef339fb0a2868d8a06a9a7b1e9" + integrity sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA== + +decode-uri-component@^0.2.0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" + integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== + deep-eql@^4.0.1, deep-eql@^4.1.2: version "4.1.3" resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-4.1.3.tgz#7c7775513092f7df98d8df9996dd085eb668cc6d" @@ -3208,6 +3418,50 @@ define-properties@^1.1.2, define-properties@^1.1.3, define-properties@^1.1.4: has-property-descriptors "^1.0.0" object-keys "^1.1.1" +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA== + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + integrity sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA== + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +del-cli@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/del-cli/-/del-cli-5.0.0.tgz#fa79fd57e888ecaaf8a468d87e8a175142a24aa9" + integrity sha512-rENFhUaYcjoMODwFhhlON+ogN7DoG+4+GFN+bsA1XeDt4w2OKQnQadFP1thHSAlK9FAtl88qgP66wOV+eFZZiQ== + dependencies: + del "^7.0.0" + meow "^10.1.3" + +del@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/del/-/del-7.0.0.tgz#79db048bec96f83f344b46c1a66e35d9c09fe8ac" + integrity sha512-tQbV/4u5WVB8HMJr08pgw0b6nG4RGt/tj+7Numvq+zqcvUFeMaIWWOUFltiU+6go8BSO2/ogsB4EasDaj0y68Q== + dependencies: + globby "^13.1.2" + graceful-fs "^4.2.10" + is-glob "^4.0.3" + is-path-cwd "^3.0.0" + is-path-inside "^4.0.0" + p-map "^5.5.0" + rimraf "^3.0.2" + slash "^4.0.0" + delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" @@ -3289,6 +3543,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" @@ -3298,6 +3557,11 @@ drbg.js@^1.0.1: create-hash "^1.1.2" create-hmac "^1.1.4" +duplexer@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" + integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== + ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" @@ -3455,6 +3719,11 @@ escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== +escape-string-regexp@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz#4683126b500b61762f2dbebace1806e8be31b1c8" + integrity sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw== + escodegen@1.8.x: version "1.8.1" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018" @@ -3965,6 +4234,48 @@ evp_bytestokey@^1.0.3: md5.js "^1.3.4" safe-buffer "^5.1.1" +expand-brackets@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" + integrity sha512-hxx03P2dJxss6ceIeri9cmYOT4SRs3Zk3afZwWpOsRqLqprhTR8u++SlC+sFGsQr7WGFPdMF7Gjc1njDLDK6UA== + dependencies: + is-posix-bracket "^0.1.0" + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA== + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +expand-range@^1.8.1: + version "1.8.2" + resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" + integrity sha512-AFASGfIlnIbkKPQwX1yHaDjFvh/1gyKJODme52V6IORh69uEYgZp0o9C+qsIGNVEiuuhQU0CSSl++Rlegg1qvA== + dependencies: + fill-range "^2.1.0" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug== + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + integrity sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q== + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + extend@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" @@ -3984,6 +4295,27 @@ external-editor@^3.0.3, external-editor@^3.1.0: iconv-lite "^0.4.24" tmp "^0.0.33" +extglob@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" + integrity sha512-1FOj1LOwn42TMrruOHGt18HemVnbwAmAak7krWk+wa93KXxGbK+2jpezm+ytJYDaBX0/SPLZFHKM7m+tKobWGg== + dependencies: + is-extglob "^1.0.0" + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + extsprintf@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" @@ -4004,7 +4336,7 @@ fast-diff@^1.1.2: resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== -fast-glob@^3.0.3, fast-glob@^3.2.9: +fast-glob@^3.0.3, fast-glob@^3.2.11, fast-glob@^3.2.9: version "3.2.12" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== @@ -4051,6 +4383,32 @@ file-uri-to-path@1.0.0: resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== +filename-regex@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" + integrity sha512-BTCqyBaWBTsauvnHiE8i562+EdJj+oUpkqWp2R1iCoR8f6oo8STRu3of7WJJ0TqWtxN50a5YFpzYK4Jj9esYfQ== + +fill-range@^2.1.0: + version "2.2.4" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565" + integrity sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q== + dependencies: + is-number "^2.1.0" + isobject "^2.0.0" + randomatic "^3.0.0" + repeat-element "^1.1.2" + repeat-string "^1.5.2" + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ== + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + fill-range@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" @@ -4058,6 +4416,11 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" +find-index@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/find-index/-/find-index-0.1.1.tgz#675d358b2ca3892d795a1ab47232f8b6e2e0dde4" + integrity sha512-uJ5vWrfBKMcE6y2Z8834dwEZj9mNGxYa3t3I53OwFeuZ8D9oc2E5zcsrkuhX6h4iYrjhiv0T3szQmxlAV9uxDg== + find-replace@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-3.0.0.tgz#3e7e23d3b05167a76f770c9fbd5258b0def68c38" @@ -4128,7 +4491,7 @@ flatted@^3.1.0: resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== -follow-redirects@^1.12.1, follow-redirects@^1.15.0: +follow-redirects@^1.12.1: version "1.15.2" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== @@ -4140,6 +4503,18 @@ for-each@^0.3.3: dependencies: is-callable "^1.1.3" +for-in@^1.0.1, for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ== + +for-own@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" + integrity sha512-SKmowqGTJoPzLO1T0BBJpkfp3EMacCMOuH40hOUbrbzElVktk4DioXVM99QkLCyKoiuOmyjgcWMpVz2xjE7LZw== + dependencies: + for-in "^1.0.1" + forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" @@ -4163,15 +4538,6 @@ 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" @@ -4191,6 +4557,13 @@ fp-ts@^1.0.0: resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-1.19.5.tgz#3da865e585dfa1fdfd51785417357ac50afc520a" integrity sha512-wDNqTimnzs8QqpldiId9OavWK2NptormjXnRJTQecNjzwfyp6P/8s/zG8e4h3ja3oqkKaY72UlTjQYt/1yXf9A== +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA== + dependencies: + map-cache "^0.2.2" + fs-extra@^0.30.0: version "0.30.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0" @@ -4240,6 +4613,14 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== +fsevents@^1.0.0: + version "1.2.13" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" + integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== + dependencies: + bindings "^1.5.0" + nan "^2.12.1" + fsevents@~2.1.1: version "2.1.3" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" @@ -4324,6 +4705,11 @@ get-symbol-description@^1.0.0: call-bind "^1.0.2" get-intrinsic "^1.1.1" +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + integrity sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA== + getpass@^0.1.1: version "0.1.7" resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" @@ -4339,6 +4725,21 @@ ghost-testrpc@^0.0.2: chalk "^2.4.2" node-emoji "^1.10.0" +glob-base@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" + integrity sha512-ab1S1g1EbO7YzauaJLkgLp7DZVAqj9M/dvKlTt8DkXA2tiOIcSMrlVI2J1RZyB5iJVccEscjGn+kpOG9788MHA== + dependencies: + glob-parent "^2.0.0" + is-glob "^2.0.0" + +glob-parent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" + integrity sha512-JDYOvfxio/t42HKdxkAYaCiBN7oYiuxykOxKxdaUW5Qn0zaYN3gRQWolrwdnf0shM9/EP0ebuuTmyoXNr1cC5w== + dependencies: + is-glob "^2.0.0" + glob-parent@^5.1.2, glob-parent@~5.1.0, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" @@ -4353,6 +4754,13 @@ glob-parent@^6.0.2: dependencies: is-glob "^4.0.3" +glob2base@^0.0.12: + version "0.0.12" + resolved "https://registry.yarnpkg.com/glob2base/-/glob2base-0.0.12.tgz#9d419b3e28f12e83a362164a277055922c9c0d56" + integrity sha512-ZyqlgowMbfj2NPjxaZZ/EtsXlOch28FRXgMd64vqZWk1bT9+wvSRLYD1om9M7QfQru51zJPAT17qXm4/zd+9QA== + dependencies: + find-index "^0.1.1" + glob@7.1.3: version "7.1.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" @@ -4400,7 +4808,7 @@ glob@^5.0.15: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.0, glob@^7.1.3, glob@^7.2.0: +glob@^7.0.0, glob@^7.0.5, glob@^7.1.3, glob@^7.2.0: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== @@ -4468,6 +4876,17 @@ globby@^11.0.0, globby@^11.1.0: merge2 "^1.4.1" slash "^3.0.0" +globby@^13.1.2: + version "13.2.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-13.2.0.tgz#7dd5678d765c4680c2e6d106230d86cb727cb1af" + integrity sha512-jWsQfayf13NvqKUIL3Ta+CIqMnvlaIDFveWE/dpOZ9+3AMEJozsxDvKA02zync9UuvOM8rOXzsD5GqKP4OnWPQ== + dependencies: + dir-glob "^3.0.1" + fast-glob "^3.2.11" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^4.0.0" + gopd@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" @@ -4475,7 +4894,7 @@ gopd@^1.0.1: dependencies: get-intrinsic "^1.1.3" -graceful-fs@^4.1.2, graceful-fs@^4.1.5, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0: +graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.5, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.10: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== @@ -4637,6 +5056,37 @@ has-tostringtag@^1.0.0: dependencies: has-symbols "^1.0.2" +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q== + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + integrity sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw== + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + integrity sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ== + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ== + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" @@ -4693,6 +5143,13 @@ hosted-git-info@^2.1.4, hosted-git-info@^2.6.0: resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== +hosted-git-info@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" + integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== + dependencies: + lru-cache "^6.0.0" + http-basic@^8.1.1: version "8.1.3" resolved "https://registry.yarnpkg.com/http-basic/-/http-basic-8.1.3.tgz#a7cabee7526869b9b710136970805b1004261bbf" @@ -4793,6 +5250,11 @@ indent-string@^4.0.0: resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== +indent-string@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-5.0.0.tgz#4fd2980fccaf8622d14c64d694f4cf33c81951a5" + integrity sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg== + inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -4853,6 +5315,20 @@ io-ts@1.10.4: dependencies: fp-ts "^1.0.0" +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + integrity sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A== + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== + dependencies: + kind-of "^6.0.0" + is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" @@ -4874,6 +5350,13 @@ is-bigint@^1.0.1: dependencies: has-bigints "^1.0.1" +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + integrity sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q== + dependencies: + binary-extensions "^1.0.0" + is-binary-path@~2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" @@ -4889,6 +5372,11 @@ is-boolean-object@^1.1.0: call-bind "^1.0.2" has-tostringtag "^1.0.0" +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + is-buffer@^2.0.5, is-buffer@~2.0.3: version "2.0.5" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" @@ -4913,6 +5401,27 @@ is-core-module@^2.11.0, is-core-module@^2.12.0: dependencies: has "^1.0.3" +is-core-module@^2.5.0: + version "2.12.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.12.1.tgz#0c0b6885b6f80011c71541ce15c8d66cf5a4f9fd" + integrity sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg== + dependencies: + has "^1.0.3" + +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + integrity sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg== + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== + dependencies: + kind-of "^6.0.0" + is-date-object@^1.0.1: version "1.0.5" resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" @@ -4920,6 +5429,53 @@ is-date-object@^1.0.1: dependencies: has-tostringtag "^1.0.0" +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-dotfile@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" + integrity sha512-9YclgOGtN/f8zx0Pr4FQYMdibBiTaH3sn52vjYip4ZSf6C4/6RfTEZ+MR4GvKhCxdPh21Bg42/WL55f6KSnKpg== + +is-equal-shallow@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" + integrity sha512-0EygVC5qPvIyb+gSz7zdD5/AAoS6Qrx1e//6N4yv4oNm30kqvdmG66oZFWVlQHUWe5OjP08FuTw2IdT0EOTcYA== + dependencies: + is-primitive "^2.0.0" + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + dependencies: + is-plain-object "^2.0.4" + +is-extglob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" + integrity sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww== + is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" @@ -4935,6 +5491,13 @@ is-fullwidth-code-point@^3.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== +is-glob@^2.0.0, is-glob@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" + integrity sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg== + dependencies: + is-extglob "^1.0.0" + is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: version "4.0.3" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" @@ -4964,16 +5527,45 @@ is-number-object@^1.0.4: dependencies: has-tostringtag "^1.0.0" +is-number@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" + integrity sha512-QUzH43Gfb9+5yckcrSA0VBDwEtDUchrk4F6tfJZQuNzDJbEDB9cZNzSfXGQ1jqmdDY/kl41lUOWM9syA8z8jlg== + dependencies: + kind-of "^3.0.2" + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg== + dependencies: + kind-of "^3.0.2" + +is-number@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" + integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== + is-number@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== +is-path-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-3.0.0.tgz#889b41e55c8588b1eb2a96a61d05740a674521c7" + integrity sha512-kyiNFFLU0Ampr6SDZitD/DwUo4Zs1nSdnygUBqsu3LooL00Qvb5j+UnvApUn/TTj1J3OuE6BTdQ5rudKmU2ZaA== + is-path-inside@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== +is-path-inside@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-4.0.0.tgz#805aeb62c47c1b12fc3fd13bfb3ed1e7430071db" + integrity sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA== + is-plain-obj@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" @@ -4984,6 +5576,23 @@ is-plain-obj@^2.1.0: resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== +is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-posix-bracket@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" + integrity sha512-Yu68oeXJ7LeWNmZ3Zov/xg/oDBnBK2RNxwYY1ilNJX+tKKZqgPK+qOn/Gs9jEu66KDY9Netf5XLKNGzas/vPfQ== + +is-primitive@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" + integrity sha512-N3w1tFaRfk3UrPfqeRyD+GYDASU3W5VinKhlORy8EWVf/sIdDL9GAcew85XmktCfH+ngG7SRXEVDoO18WMdB/Q== + is-regex@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" @@ -5053,12 +5662,12 @@ is-weakref@^1.0.2: dependencies: call-bind "^1.0.2" -is-windows@^1.0.0: +is-windows@^1.0.0, is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== -isarray@~1.0.0: +isarray@1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== @@ -5068,6 +5677,18 @@ isexe@^2.0.0: resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA== + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== + isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" @@ -5234,7 +5855,26 @@ keccak@^3.0.0, keccak@^3.0.2: node-gyp-build "^4.2.0" readable-stream "^3.6.0" -kind-of@^6.0.2, kind-of@^6.0.3: +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ== + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + integrity sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw== + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + +kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== @@ -5504,21 +6144,38 @@ make-error@^1.1.1: resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg== + map-obj@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" integrity sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg== -map-obj@^4.0.0: +map-obj@^4.0.0, map-obj@^4.1.0: version "4.3.0" resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.3.0.tgz#9304f906e93faae70880da102a9f1df0ea8bb05a" integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w== + dependencies: + object-visit "^1.0.0" + markdown-table@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-1.1.3.tgz#9fcb69bcfdb8717bfd0398c6ec2d93036ef8de60" integrity sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q== +math-random@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.4.tgz#5dd6943c938548267016d4e34f057583080c514c" + integrity sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A== + mcl-wasm@^0.7.1: version "0.7.9" resolved "https://registry.yarnpkg.com/mcl-wasm/-/mcl-wasm-0.7.9.tgz#c1588ce90042a8700c3b60e40efb339fc07ab87f" @@ -5559,6 +6216,24 @@ memorystream@^0.3.1: resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" integrity sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw== +meow@^10.1.3: + version "10.1.5" + resolved "https://registry.yarnpkg.com/meow/-/meow-10.1.5.tgz#be52a1d87b5f5698602b0f32875ee5940904aa7f" + integrity sha512-/d+PQ4GKmGvM9Bee/DPa8z3mXs/pkvJE2KEThngVNOqtmljC6K7NMPxtc2JeZYTmpWb9k/TmxjeL18ez3h7vCw== + dependencies: + "@types/minimist" "^1.2.2" + camelcase-keys "^7.0.0" + decamelize "^5.0.0" + decamelize-keys "^1.1.0" + hard-rejection "^2.1.0" + minimist-options "4.1.0" + normalize-package-data "^3.0.2" + read-pkg-up "^8.0.0" + redent "^4.0.0" + trim-newlines "^4.0.2" + type-fest "^1.2.2" + yargs-parser "^20.2.9" + meow@^6.0.0: version "6.1.1" resolved "https://registry.yarnpkg.com/meow/-/meow-6.1.1.tgz#1ad64c4b76b2a24dfb2f635fddcadf320d251467" @@ -5593,6 +6268,44 @@ merkle-patricia-tree@^4.2.2, merkle-patricia-tree@^4.2.4: readable-stream "^3.6.0" semaphore-async-await "^1.5.1" +micromatch@^2.1.5: + version "2.3.11" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" + integrity sha512-LnU2XFEk9xxSJ6rfgAry/ty5qwUTyHYOBU0g4R6tIw5ljwgGIBmiKhRWLw5NpMOnrgUNcDJ4WMp8rl3sYVHLNA== + dependencies: + arr-diff "^2.0.0" + array-unique "^0.2.1" + braces "^1.8.2" + expand-brackets "^0.1.4" + extglob "^0.3.1" + filename-regex "^2.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.1" + kind-of "^3.0.2" + normalize-path "^2.0.1" + object.omit "^2.0.0" + parse-glob "^3.0.4" + regex-cache "^0.4.2" + +micromatch@^3.1.10: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + micromatch@^4.0.2, micromatch@^4.0.4: version "4.0.5" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" @@ -5626,7 +6339,7 @@ mimic-fn@^2.1.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -min-indent@^1.0.0: +min-indent@^1.0.0, min-indent@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== @@ -5641,7 +6354,7 @@ minimalistic-crypto-utils@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== -"minimatch@2 || 3", minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: +"minimatch@2 || 3", minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== @@ -5662,7 +6375,7 @@ minimatch@5.0.1: dependencies: brace-expansion "^2.0.1" -minimist-options@^4.0.2: +minimist-options@4.1.0, minimist-options@^4.0.2: version "4.1.0" resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A== @@ -5671,11 +6384,19 @@ minimist-options@^4.0.2: is-plain-obj "^1.1.0" kind-of "^6.0.3" -minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: +minimist@^1.1.0, minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: version "1.2.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== +mixin-deep@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + mixme@^0.5.1: version "0.5.9" resolved "https://registry.yarnpkg.com/mixme/-/mixme-0.5.9.tgz#a5a58e17354632179ff3ce5b0fc130899c8ba81c" @@ -5824,7 +6545,7 @@ mute-stream@0.0.8: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== -nan@^2.14.0, nan@^2.2.1: +nan@^2.12.1, nan@^2.14.0, nan@^2.2.1: version "2.17.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.17.0.tgz#c0150a2368a182f033e9aa5195ec76ea41a199cb" integrity sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ== @@ -5834,6 +6555,23 @@ nanoid@3.3.3: resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.3.tgz#fd8e8b7aa761fe807dba2d1b98fb7241bb724a25" integrity sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w== +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + napi-macros@^2.2.2: version "2.2.2" resolved "https://registry.yarnpkg.com/napi-macros/-/napi-macros-2.2.2.tgz#817fef20c3e0e40a963fbf7b37d1600bd0201044" @@ -5923,6 +6661,23 @@ normalize-package-data@^2.5.0: semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" +normalize-package-data@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-3.0.3.tgz#dbcc3e2da59509a0983422884cd172eefdfa525e" + integrity sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA== + dependencies: + hosted-git-info "^4.0.1" + is-core-module "^2.5.0" + semver "^7.3.4" + validate-npm-package-license "^3.0.1" + +normalize-path@^2.0.0, normalize-path@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + integrity sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w== + dependencies: + remove-trailing-separator "^1.0.1" + normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" @@ -5946,6 +6701,15 @@ object-assign@^4.1.0: resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ== + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + object-inspect@^1.12.3, object-inspect@^1.9.0: version "1.12.3" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" @@ -5956,6 +6720,13 @@ object-keys@^1.0.11, object-keys@^1.1.1: resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA== + dependencies: + isobject "^3.0.0" + object.assign@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" @@ -5986,6 +6757,21 @@ object.getownpropertydescriptors@^2.0.3: define-properties "^1.1.4" es-abstract "^1.20.4" +object.omit@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" + integrity sha512-UiAM5mhmIuKLsOvrL+B0U2d1hXHF3bFYWIuH1LMpuV2EJEHG1Ntz06PgLEHjm6VFd87NpH8rastvPoyv6UW2fA== + dependencies: + for-own "^0.1.4" + is-extendable "^0.1.1" + +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ== + dependencies: + isobject "^3.0.1" + object.values@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.6.tgz#4abbaa71eba47d63589d402856f908243eea9b1d" @@ -6136,6 +6922,13 @@ p-map@^4.0.0: dependencies: aggregate-error "^3.0.0" +p-map@^5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-5.5.0.tgz#054ca8ca778dfa4cf3f8db6638ccb5b937266715" + integrity sha512-VFqfGDHlx87K66yZrNdI4YGtD70IRyd+zSvgks6mzHPRNkoKy+9EKP4SFC77/vTTQYmRmti7dvqC+m5jBrBAcg== + dependencies: + aggregate-error "^4.0.0" + p-try@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" @@ -6158,7 +6951,17 @@ parse-cache-control@^1.0.1: resolved "https://registry.yarnpkg.com/parse-cache-control/-/parse-cache-control-1.0.1.tgz#8eeab3e54fa56920fe16ba38f77fa21aacc2d74e" integrity sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg== -parse-json@^5.0.0: +parse-glob@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" + integrity sha512-FC5TeK0AwXzq3tUBFtH74naWkPQCEWs4K+xMxWZBlKDWu0bVHXGZa+KKqxKidd7xwhdZ19ZNuF2uO1M/r196HA== + dependencies: + glob-base "^0.3.0" + is-dotfile "^1.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.0" + +parse-json@^5.0.0, parse-json@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== @@ -6168,6 +6971,11 @@ parse-json@^5.0.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw== + path-browserify@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" @@ -6246,6 +7054,11 @@ pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + integrity sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg== + preferred-pm@^3.0.0: version "3.0.3" resolved "https://registry.yarnpkg.com/preferred-pm/-/preferred-pm-3.0.3.tgz#1b6338000371e3edbce52ef2e4f65eb2e73586d6" @@ -6266,6 +7079,11 @@ prelude-ls@~1.1.2: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== +preserve@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" + integrity sha512-s/46sYeylUfHNjI+sA/78FAHlmIuKqI9wNnzEOGehAlUUYeObv5C2mOinXBjyUyWmJ2SfcS2/ydApH4hTF4WXQ== + prettier-linter-helpers@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" @@ -6290,11 +7108,6 @@ 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" @@ -6347,6 +7160,20 @@ quick-lru@^4.0.1: resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== +quick-lru@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" + integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== + +randomatic@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.1.tgz#b776efc59375984e36c537b2f51a1f0aff0da1ed" + integrity sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw== + dependencies: + is-number "^4.0.0" + kind-of "^6.0.0" + math-random "^1.0.1" + randombytes@^2.0.1, randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" @@ -6373,6 +7200,15 @@ read-pkg-up@^7.0.1: read-pkg "^5.2.0" type-fest "^0.8.1" +read-pkg-up@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-8.0.0.tgz#72f595b65e66110f43b052dd9af4de6b10534670" + integrity sha512-snVCqPczksT0HS2EC+SxUndvSzn6LRCwpfSvLrIfR5BKDQQZMaI6jPRC9dYvYFDRAuFEAnkwww8kBBNE/3VvzQ== + dependencies: + find-up "^5.0.0" + read-pkg "^6.0.0" + type-fest "^1.0.1" + read-pkg@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" @@ -6383,6 +7219,16 @@ read-pkg@^5.2.0: parse-json "^5.0.0" type-fest "^0.6.0" +read-pkg@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-6.0.0.tgz#a67a7d6a1c2b0c3cd6aa2ea521f40c458a4a504c" + integrity sha512-X1Fu3dPuk/8ZLsMhEj5f4wFAF0DWoK7qhGJvgaijocXxBmSToKfbFtqbxMO7bVjNA1dmE5huAzjXj/ey86iw9Q== + dependencies: + "@types/normalize-package-data" "^2.4.0" + normalize-package-data "^3.0.2" + parse-json "^5.2.0" + type-fest "^1.0.1" + read-yaml-file@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/read-yaml-file/-/read-yaml-file-1.1.0.tgz#9362bbcbdc77007cc8ea4519fe1c0b821a7ce0d8" @@ -6393,7 +7239,7 @@ read-yaml-file@^1.1.0: pify "^4.0.1" strip-bom "^3.0.0" -readable-stream@^2.2.2: +readable-stream@^2.0.2, readable-stream@^2.2.2: version "2.3.8" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== @@ -6415,6 +7261,15 @@ readable-stream@^3.1.0, readable-stream@^3.4.0, readable-stream@^3.6.0: string_decoder "^1.1.1" util-deprecate "^1.0.1" +readdirp@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" + integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== + dependencies: + graceful-fs "^4.1.11" + micromatch "^3.1.10" + readable-stream "^2.0.2" + readdirp@~3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.2.0.tgz#c30c33352b12c96dfb4b895421a49fd5a9593839" @@ -6451,16 +7306,44 @@ redent@^3.0.0: indent-string "^4.0.0" strip-indent "^3.0.0" +redent@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-4.0.0.tgz#0c0ba7caabb24257ab3bb7a4fd95dd1d5c5681f9" + integrity sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag== + dependencies: + indent-string "^5.0.0" + strip-indent "^4.0.0" + reduce-flatten@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/reduce-flatten/-/reduce-flatten-2.0.0.tgz#734fd84e65f375d7ca4465c69798c25c9d10ae27" integrity sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w== +regenerator-runtime@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" + integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== + regenerator-runtime@^0.13.11: version "0.13.11" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== +regex-cache@^0.4.2: + version "0.4.4" + resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" + integrity sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ== + dependencies: + is-equal-shallow "^0.1.3" + +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + regexp.prototype.flags@^1.4.3: version "1.4.3" resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" @@ -6475,6 +7358,21 @@ regexpp@^3.0.0: resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== +remove-trailing-separator@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + integrity sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw== + +repeat-element@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" + integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== + +repeat-string@^1.5.2, repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== + req-cwd@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/req-cwd/-/req-cwd-2.0.0.tgz#d4082b4d44598036640fb73ddea01ed53db49ebc" @@ -6566,6 +7464,11 @@ resolve-from@^5.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg== + resolve@1.1.x: version "1.1.7" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" @@ -6587,6 +7490,15 @@ resolve@^1.1.6, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.22.0, resolve@^1.22 path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" +resolve@^1.1.7: + version "1.22.2" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f" + integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== + dependencies: + is-core-module "^2.11.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + restore-cursor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" @@ -6595,6 +7507,11 @@ restore-cursor@^3.1.0: onetime "^5.1.0" signal-exit "^3.0.2" +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + reusify@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" @@ -6686,6 +7603,13 @@ safe-regex-test@^1.0.0: get-intrinsic "^1.1.3" is-regex "^1.1.4" +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg== + dependencies: + ret "~0.1.10" + "safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" @@ -6783,6 +7707,16 @@ set-blocking@^2.0.0: resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== +set-value@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" + integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + setimmediate@1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.4.tgz#20e81de622d4a02588ce0c8da8973cbcf1d3138f" @@ -6838,6 +7772,11 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== +shell-quote@^1.6.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680" + integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== + shelljs@^0.8.3: version "0.8.5" resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.5.tgz#de055408d8361bed66c669d2f000538ced8ee20c" @@ -6866,6 +7805,11 @@ slash@^3.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== +slash@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7" + integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== + smartwrap@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/smartwrap/-/smartwrap-2.0.2.tgz#7e25d3dd58b51c6ca4aba3a9e391650ea62698a4" @@ -6878,6 +7822,36 @@ smartwrap@^2.0.2: wcwidth "^1.0.1" yargs "^15.1.0" +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + solc@0.7.3: version "0.7.3" resolved "https://registry.yarnpkg.com/solc/-/solc-0.7.3.tgz#04646961bd867a744f63d2b4e3c0701ffdc7d78a" @@ -6932,6 +7906,17 @@ solidity-coverage@^0.8.2: shelljs "^0.8.3" web3-utils "^1.3.6" +source-map-resolve@^0.5.0: + version "0.5.3" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== + dependencies: + atob "^2.1.2" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + source-map-support@^0.5.13, source-map-support@^0.5.6: version "0.5.21" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" @@ -6940,6 +7925,16 @@ source-map-support@^0.5.13, source-map-support@^0.5.6: buffer-from "^1.0.0" source-map "^0.6.0" +source-map-url@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" + integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== + +source-map@^0.5.6: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== + source-map@^0.6.0, source-map@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" @@ -6986,6 +7981,13 @@ spdx-license-ids@^3.0.0: resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz#7189a474c46f8d47c7b0da4b987bb45e908bd2d5" integrity sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w== +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + dependencies: + extend-shallow "^3.0.0" + sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" @@ -7013,6 +8015,14 @@ stacktrace-parser@^0.1.10: dependencies: type-fest "^0.7.1" +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g== + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + statuses@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" @@ -7147,6 +8157,13 @@ strip-indent@^3.0.0: dependencies: min-indent "^1.0.0" +strip-indent@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-4.0.0.tgz#b41379433dd06f5eae805e21d631e07ee670d853" + integrity sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA== + dependencies: + min-indent "^1.0.1" + strip-json-comments@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" @@ -7157,6 +8174,13 @@ strip-json-comments@3.1.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1. resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== +subarg@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/subarg/-/subarg-1.0.0.tgz#f62cf17581e996b48fc965699f54c06ae268b8d2" + integrity sha512-RIrIdRY0X1xojthNcVtgT9sjpOGagEUKpZdgBUi054OEPFo282yg+zE+t1Rj3+RqKq2xStL7uUHhY+AjbC4BXg== + dependencies: + minimist "^1.1.0" + supports-color@6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.0.0.tgz#76cfe742cf1f41bb9b1c29ad03068c05b4c0e40a" @@ -7262,6 +8286,21 @@ tmp@0.0.33, tmp@^0.0.33: dependencies: os-tmpdir "~1.0.2" +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + integrity sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg== + dependencies: + kind-of "^3.0.2" + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + integrity sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg== + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" @@ -7269,6 +8308,16 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + toidentifier@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" @@ -7292,6 +8341,11 @@ trim-newlines@^3.0.0: resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== +trim-newlines@^4.0.2: + version "4.1.1" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-4.1.1.tgz#28c88deb50ed10c7ba6dc2474421904a00139125" + integrity sha512-jRKj0n0jXWo6kh62nA5TEh3+4igKDXLvzBJcPpiizP7oOolUrYIxmVBG9TOtHYFHoddUk6YvAkGeGoSVTXfQXQ== + ts-command-line-args@^2.2.0: version "2.5.0" resolved "https://registry.yarnpkg.com/ts-command-line-args/-/ts-command-line-args-2.5.0.tgz#7eeed3a6937b2612ea08a0794cf9d43fbbea89c4" @@ -7466,6 +8520,11 @@ type-fest@^0.8.1: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== +type-fest@^1.0.1, type-fest@^1.2.1, type-fest@^1.2.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-1.4.0.tgz#e9fb813fe3bf1744ec359d55d1affefa76f14be1" + integrity sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA== + typechain@^8.0.0, typechain@^8.1.0: version "8.1.1" resolved "https://registry.yarnpkg.com/typechain/-/typechain-8.1.1.tgz#9c2e8012c2c4c586536fc18402dcd7034c4ff0bd" @@ -7538,6 +8597,16 @@ undici@^5.14.0: dependencies: busboy "^1.6.0" +union-value@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^2.0.1" + universalify@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" @@ -7553,6 +8622,14 @@ unpipe@1.0.0: resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ== + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + uri-js@^4.2.2: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" @@ -7560,6 +8637,11 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg== + url@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" @@ -7568,6 +8650,11 @@ url@^0.11.0: punycode "1.3.2" querystring "0.2.0" +use@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + utf-8-validate@5.0.7: version "5.0.7" resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.7.tgz#c15a19a6af1f7ad9ec7ddc425747ca28c3644922" @@ -7838,7 +8925,7 @@ yargs-parser@^18.1.2, yargs-parser@^18.1.3: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^20.2.2: +yargs-parser@^20.2.2, yargs-parser@^20.2.9: version "20.2.9" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==