[
    {
        "constant": true,
        "inputs": [],
        "name": "target",
        "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
        "payable": false,
        "stateMutability": "view",
        "type": "function"
    },
    {
        "constant": true,
        "inputs": [
            { "internalType": "bytes32", "name": "name", "type": "bytes32" }
        ],
        "name": "getAddress",
        "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
        "payable": false,
        "stateMutability": "view",
        "type": "function"
    },
    {
        "constant": true,
        "inputs": [],
        "name": "currencyKey",
        "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }],
        "payable": false,
        "stateMutability": "view",
        "type": "function"
    },
    {
        "constant": true,
        "inputs": [
            { "internalType": "bytes32", "name": "contractName", "type": "bytes32" },
            { "internalType": "bytes32", "name": "record", "type": "bytes32" }
        ],
        "name": "getAddressValue",
        "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
        "payable": false,
        "stateMutability": "view",
        "type": "function"
    },
    {
        "constant": true,
        "inputs": [
            { "internalType": "bytes32", "name": "contractName", "type": "bytes32" },
            { "internalType": "bytes32", "name": "record", "type": "bytes32" }
        ],
        "name": "getUIntValue",
        "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
        "payable": false,
        "stateMutability": "view",
        "type": "function"
    },
    {
        "constant": true,
        "inputs": [
            { "internalType": "bytes32", "name": "contractName", "type": "bytes32" },
            { "internalType": "bytes32", "name": "record", "type": "bytes32" }
        ],
        "name": "getBoolValue",
        "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
        "payable": false,
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "uniswapV3Factory",
        "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "weth",
        "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "defaultPoolFee",
        "outputs": [{ "internalType": "uint24", "name": "", "type": "uint24" }],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }],
        "name": "overriddenPoolForRoute",
        "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "constant": true,
        "inputs": [],
        "name": "decimals",
        "outputs": [{ "name": "", "type": "uint8" }],
        "payable": false,
        "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": [],
        "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": "uint256", "name": "", "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": [],
        "name": "latestRoundData",
        "outputs": [
            { "internalType": "uint80", "name": "roundId", "type": "uint80" },
            { "internalType": "int256", "name": "answer", "type": "int256" },
            { "internalType": "uint256", "name": "startedAt", "type": "uint256" },
            { "internalType": "uint256", "name": "updatedAt", "type": "uint256" },
            { "internalType": "uint80", "name": "answeredInRound", "type": "uint80" }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            { "internalType": "uint80", "name": "_roundId", "type": "uint80" }
        ],
        "name": "getRoundData",
        "outputs": [
            { "internalType": "uint80", "name": "roundId", "type": "uint80" },
            { "internalType": "int256", "name": "answer", "type": "int256" },
            { "internalType": "uint256", "name": "startedAt", "type": "uint256" },
            { "internalType": "uint256", "name": "updatedAt", "type": "uint256" },
            { "internalType": "uint80", "name": "answeredInRound", "type": "uint80" }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "constant": true,
        "inputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }],
        "name": "aggregators",
        "outputs": [
            {
                "internalType": "contract AggregatorV2V3Interface",
                "name": "",
                "type": "address"
            }
        ],
        "payable": false,
        "stateMutability": "view",
        "type": "function"
    },
    {
        "constant": true,
        "inputs": [
            { "internalType": "uint256", "name": "sourceAmount", "type": "uint256" },
            {
                "internalType": "bytes32",
                "name": "sourceCurrencyKey",
                "type": "bytes32"
            },
            {
                "internalType": "bytes32",
                "name": "destinationCurrencyKey",
                "type": "bytes32"
            }
        ],
        "name": "getAmountsForAtomicExchange",
        "outputs": [
            {
                "internalType": "uint256",
                "name": "amountReceived",
                "type": "uint256"
            },
            { "internalType": "uint256", "name": "fee", "type": "uint256" },
            {
                "internalType": "uint256",
                "name": "exchangeFeeRate",
                "type": "uint256"
            }
        ],
        "payable": false,
        "stateMutability": "view",
        "type": "function"
    },
    {
        "constant": true,
        "inputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }],
        "name": "currencyKeyDecimals",
        "outputs": [{ "internalType": "uint8", "name": "", "type": "uint8" }],
        "payable": false,
        "stateMutability": "view",
        "type": "function"
    },
    {
        "constant": false,
        "inputs": [
            {
                "internalType": "bytes32",
                "name": "sourceCurrencyKey",
                "type": "bytes32"
            },
            { "internalType": "uint256", "name": "sourceAmount", "type": "uint256" },
            {
                "internalType": "bytes32",
                "name": "destinationCurrencyKey",
                "type": "bytes32"
            },
            { "internalType": "bytes32", "name": "trackingCode", "type": "bytes32" },
            { "internalType": "uint256", "name": "minAmount", "type": "uint256" }
        ],
        "name": "exchangeAtomically",
        "outputs": [
            { "internalType": "uint256", "name": "amountReceived", "type": "uint256" }
        ],
        "payable": false,
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "constant": false,
        "inputs": [
            {
                "internalType": "bytes32",
                "name": "sourceCurrencyKey",
                "type": "bytes32"
            },
            { "internalType": "uint256", "name": "sourceAmount", "type": "uint256" },
            {
                "internalType": "bytes32",
                "name": "destinationCurrencyKey",
                "type": "bytes32"
            },
            { "internalType": "address", "name": "rewardAddress", "type": "address" },
            { "internalType": "bytes32", "name": "trackingCode", "type": "bytes32" }
        ],
        "name": "exchangeWithTracking",
        "outputs": [
            { "internalType": "uint256", "name": "amountReceived", "type": "uint256" }
        ],
        "payable": false,
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "constant": true,
        "inputs": [],
        "name": "systemSuspended",
        "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
        "payable": false,
        "stateMutability": "view",
        "type": "function"
    },
    {
        "constant": true,
        "inputs": [
            { "internalType": "bytes32[]", "name": "synths", "type": "bytes32[]" }
        ],
        "name": "getSynthSuspensions",
        "outputs": [
            { "internalType": "bool[]", "name": "suspensions", "type": "bool[]" },
            { "internalType": "uint256[]", "name": "reasons", "type": "uint256[]" }
        ],
        "payable": false,
        "stateMutability": "view",
        "type": "function"
    },
    {
        "constant": true,
        "inputs": [
            { "internalType": "bytes32[]", "name": "synths", "type": "bytes32[]" }
        ],
        "name": "getSynthExchangeSuspensions",
        "outputs": [
            {
                "internalType": "bool[]",
                "name": "exchangeSuspensions",
                "type": "bool[]"
            },
            { "internalType": "uint256[]", "name": "reasons", "type": "uint256[]" }
        ],
        "payable": false,
        "stateMutability": "view",
        "type": "function"
    },
    {
        "constant": true,
        "inputs": [
            { "internalType": "bytes32", "name": "contractName", "type": "bytes32" },
            { "internalType": "bytes32[]", "name": "records", "type": "bytes32[]" }
        ],
        "name": "getUIntValues",
        "outputs": [
            { "internalType": "uint256[]", "name": "", "type": "uint256[]" }
        ],
        "payable": false,
        "stateMutability": "view",
        "type": "function"
    },
    {
        "constant": false,
        "inputs": [
            {
                "internalType": "bytes32",
                "name": "sourceCurrencyKey",
                "type": "bytes32"
            },
            { "internalType": "uint256", "name": "sourceAmount", "type": "uint256" },
            {
                "internalType": "bytes32",
                "name": "destinationCurrencyKey",
                "type": "bytes32"
            }
        ],
        "name": "exchange",
        "outputs": [
            { "internalType": "uint256", "name": "amountReceived", "type": "uint256" }
        ],
        "payable": false,
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "constant": true,
        "inputs": [
            { "internalType": "uint256", "name": "sourceAmount", "type": "uint256" },
            {
                "internalType": "bytes32",
                "name": "sourceCurrencyKey",
                "type": "bytes32"
            },
            {
                "internalType": "bytes32",
                "name": "destinationCurrencyKey",
                "type": "bytes32"
            }
        ],
        "name": "getAmountsForExchange",
        "outputs": [
            {
                "internalType": "uint256",
                "name": "amountReceived",
                "type": "uint256"
            },
            { "internalType": "uint256", "name": "fee", "type": "uint256" },
            {
                "internalType": "uint256",
                "name": "exchangeFeeRate",
                "type": "uint256"
            }
        ],
        "payable": false,
        "stateMutability": "view",
        "type": "function"
    },
    {
        "constant": true,
        "inputs": [],
        "name": "totalSupply",
        "outputs": [{ "name": "", "type": "uint256" }],
        "payable": false,
        "stateMutability": "view",
        "type": "function"
    },
    {
        "constant": true,
        "inputs": [],
        "name": "exchangeSuspension",
        "outputs": [
            {
                "internalType": "bool",
                "name": "suspended",
                "type": "bool"
            },
            {
                "internalType": "uint248",
                "name": "reason",
                "type": "uint248"
            }
        ],
        "payable": false,
        "stateMutability": "view",
        "type": "function"
    }
]
