{
    "schemaVersion": "2.0.0",
    "contractName": "IUniswapExchange",
    "compilerOutput": {
        "abi": [
            {
                "constant": false,
                "inputs": [
                    {
                        "internalType": "uint256",
                        "name": "minTokensBought",
                        "type": "uint256"
                    },
                    {
                        "internalType": "uint256",
                        "name": "deadline",
                        "type": "uint256"
                    },
                    {
                        "internalType": "address",
                        "name": "recipient",
                        "type": "address"
                    }
                ],
                "name": "ethToTokenTransferInput",
                "outputs": [
                    {
                        "internalType": "uint256",
                        "name": "tokensBought",
                        "type": "uint256"
                    }
                ],
                "payable": true,
                "stateMutability": "payable",
                "type": "function"
            },
            {
                "constant": false,
                "inputs": [
                    {
                        "internalType": "uint256",
                        "name": "tokensSold",
                        "type": "uint256"
                    },
                    {
                        "internalType": "uint256",
                        "name": "minEthBought",
                        "type": "uint256"
                    },
                    {
                        "internalType": "uint256",
                        "name": "deadline",
                        "type": "uint256"
                    }
                ],
                "name": "tokenToEthSwapInput",
                "outputs": [
                    {
                        "internalType": "uint256",
                        "name": "ethBought",
                        "type": "uint256"
                    }
                ],
                "payable": false,
                "stateMutability": "nonpayable",
                "type": "function"
            },
            {
                "constant": false,
                "inputs": [
                    {
                        "internalType": "uint256",
                        "name": "tokensSold",
                        "type": "uint256"
                    },
                    {
                        "internalType": "uint256",
                        "name": "minTokensBought",
                        "type": "uint256"
                    },
                    {
                        "internalType": "uint256",
                        "name": "minEthBought",
                        "type": "uint256"
                    },
                    {
                        "internalType": "uint256",
                        "name": "deadline",
                        "type": "uint256"
                    },
                    {
                        "internalType": "address",
                        "name": "recipient",
                        "type": "address"
                    },
                    {
                        "internalType": "address",
                        "name": "toTokenAddress",
                        "type": "address"
                    }
                ],
                "name": "tokenToTokenTransferInput",
                "outputs": [
                    {
                        "internalType": "uint256",
                        "name": "tokensBought",
                        "type": "uint256"
                    }
                ],
                "payable": false,
                "stateMutability": "nonpayable",
                "type": "function"
            }
        ],
        "devdoc": {
            "methods": {
                "ethToTokenTransferInput(uint256,uint256,address)": {
                    "details": "Buys at least `minTokensBought` tokens with ETH and transfer them      to `recipient`.",
                    "params": {
                        "deadline": "Time when this order expires.",
                        "minTokensBought": "The minimum number of tokens to buy.",
                        "recipient": "Who to transfer the tokens to."
                    },
                    "return": "tokensBought Amount of tokens bought."
                },
                "tokenToEthSwapInput(uint256,uint256,uint256)": {
                    "details": "Buys at least `minEthBought` ETH with tokens.",
                    "params": {
                        "deadline": "Time when this order expires.",
                        "minEthBought": "The minimum amount of ETH to buy.",
                        "tokensSold": "Amount of tokens to sell."
                    },
                    "return": "ethBought Amount of tokens bought."
                },
                "tokenToTokenTransferInput(uint256,uint256,uint256,uint256,address,address)": {
                    "details": "Buys at least `minTokensBought` tokens with the exchange token      and transfer them to `recipient`.",
                    "params": {
                        "deadline": "Time when this order expires.",
                        "minEthBought": "The minimum amount of intermediate ETH to buy.",
                        "minTokensBought": "The minimum number of tokens to buy.",
                        "recipient": "Who to transfer the tokens to.",
                        "toTokenAddress": "The token being bought."
                    },
                    "return": "tokensBought Amount of tokens bought."
                }
            }
        },
        "evm": {
            "bytecode": {
                "linkReferences": {},
                "object": "0x",
                "opcodes": "",
                "sourceMap": ""
            },
            "deployedBytecode": {
                "linkReferences": {},
                "object": "0x",
                "opcodes": "",
                "sourceMap": ""
            }
        }
    },
    "sourceTreeHashHex": "0xeff917a3280e942c638d6549fa2d510ab5876f5f70919767b00eaa69b942c574",
    "sources": {
        "./IUniswapExchange.sol": {
            "id": 46,
            "content": "/*\n\n  Copyright 2019 ZeroEx Intl.\n\n  Licensed under the Apache License, Version 2.0 (the \"License\");\n  you may not use this file except in compliance with the License.\n  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\n  Unless required by applicable law or agreed to in writing, software\n  distributed under the License is distributed on an \"AS IS\" BASIS,\n  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  See the License for the specific language governing permissions and\n  limitations under the License.\n\n*/\n\npragma solidity ^0.5.9;\n\n\ninterface IUniswapExchange {\n\n    /// @dev Buys at least `minTokensBought` tokens with ETH and transfer them\n    ///      to `recipient`.\n    /// @param minTokensBought The minimum number of tokens to buy.\n    /// @param deadline Time when this order expires.\n    /// @param recipient Who to transfer the tokens to.\n    /// @return tokensBought Amount of tokens bought.\n    function ethToTokenTransferInput(\n        uint256 minTokensBought,\n        uint256 deadline,\n        address recipient\n    )\n        external\n        payable\n        returns (uint256 tokensBought);\n\n    /// @dev Buys at least `minEthBought` ETH with tokens.\n    /// @param tokensSold Amount of tokens to sell.\n    /// @param minEthBought The minimum amount of ETH to buy.\n    /// @param deadline Time when this order expires.\n    /// @return ethBought Amount of tokens bought.\n    function tokenToEthSwapInput(\n        uint256 tokensSold,\n        uint256 minEthBought,\n        uint256 deadline\n    )\n        external\n        returns (uint256 ethBought);\n\n    /// @dev Buys at least `minTokensBought` tokens with the exchange token\n    ///      and transfer them to `recipient`.\n    /// @param minTokensBought The minimum number of tokens to buy.\n    /// @param minEthBought The minimum amount of intermediate ETH to buy.\n    /// @param deadline Time when this order expires.\n    /// @param recipient Who to transfer the tokens to.\n    /// @param toTokenAddress The token being bought.\n    /// @return tokensBought Amount of tokens bought.\n    function tokenToTokenTransferInput(\n        uint256 tokensSold,\n        uint256 minTokensBought,\n        uint256 minEthBought,\n        uint256 deadline,\n        address recipient,\n        address toTokenAddress\n    )\n        external\n        returns (uint256 tokensBought);\n}\n"
        }
    },
    "sourceCodes": {
        "./IUniswapExchange.sol": "/*\n\n  Copyright 2019 ZeroEx Intl.\n\n  Licensed under the Apache License, Version 2.0 (the \"License\");\n  you may not use this file except in compliance with the License.\n  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\n  Unless required by applicable law or agreed to in writing, software\n  distributed under the License is distributed on an \"AS IS\" BASIS,\n  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  See the License for the specific language governing permissions and\n  limitations under the License.\n\n*/\n\npragma solidity ^0.5.9;\n\n\ninterface IUniswapExchange {\n\n    /// @dev Buys at least `minTokensBought` tokens with ETH and transfer them\n    ///      to `recipient`.\n    /// @param minTokensBought The minimum number of tokens to buy.\n    /// @param deadline Time when this order expires.\n    /// @param recipient Who to transfer the tokens to.\n    /// @return tokensBought Amount of tokens bought.\n    function ethToTokenTransferInput(\n        uint256 minTokensBought,\n        uint256 deadline,\n        address recipient\n    )\n        external\n        payable\n        returns (uint256 tokensBought);\n\n    /// @dev Buys at least `minEthBought` ETH with tokens.\n    /// @param tokensSold Amount of tokens to sell.\n    /// @param minEthBought The minimum amount of ETH to buy.\n    /// @param deadline Time when this order expires.\n    /// @return ethBought Amount of tokens bought.\n    function tokenToEthSwapInput(\n        uint256 tokensSold,\n        uint256 minEthBought,\n        uint256 deadline\n    )\n        external\n        returns (uint256 ethBought);\n\n    /// @dev Buys at least `minTokensBought` tokens with the exchange token\n    ///      and transfer them to `recipient`.\n    /// @param minTokensBought The minimum number of tokens to buy.\n    /// @param minEthBought The minimum amount of intermediate ETH to buy.\n    /// @param deadline Time when this order expires.\n    /// @param recipient Who to transfer the tokens to.\n    /// @param toTokenAddress The token being bought.\n    /// @return tokensBought Amount of tokens bought.\n    function tokenToTokenTransferInput(\n        uint256 tokensSold,\n        uint256 minTokensBought,\n        uint256 minEthBought,\n        uint256 deadline,\n        address recipient,\n        address toTokenAddress\n    )\n        external\n        returns (uint256 tokensBought);\n}\n"
    },
    "compiler": {
        "name": "solc",
        "version": "0.5.17+commit.d19bba13",
        "settings": {
            "remappings": [
                "@0x/contracts-utils=/home/runner/work/protocol/protocol/contracts/asset-proxy/node_modules/@0x/contracts-utils",
                "@0x/contracts-erc1155=/home/runner/work/protocol/protocol/contracts/asset-proxy/node_modules/@0x/contracts-erc1155",
                "@0x/contracts-erc20=/home/runner/work/protocol/protocol/contracts/asset-proxy/node_modules/@0x/contracts-erc20",
                "@0x/contracts-exchange-libs=/home/runner/work/protocol/protocol/contracts/asset-proxy/node_modules/@0x/contracts-exchange-libs"
            ],
            "optimizer": {
                "enabled": true,
                "runs": 1000000,
                "details": {
                    "yul": true,
                    "deduplicate": true,
                    "cse": true,
                    "constantOptimizer": true
                }
            },
            "outputSelection": {
                "*": {
                    "*": [
                        "abi",
                        "devdoc",
                        "evm.bytecode.object",
                        "evm.bytecode.sourceMap",
                        "evm.deployedBytecode.object",
                        "evm.deployedBytecode.sourceMap"
                    ]
                }
            },
            "evmVersion": "istanbul"
        }
    },
    "chains": {}
}
