{
  "_format": "hh-sol-artifact-1",
  "contractName": "CurveExchangeAdapter",
  "sourceName": "contracts/protocol/integration/exchange/CurveExchangeAdapter.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract IERC20",
          "name": "_tokenA",
          "type": "address"
        },
        {
          "internalType": "contract IERC20",
          "name": "_tokenB",
          "type": "address"
        },
        {
          "internalType": "int128",
          "name": "_tokenAIndex",
          "type": "int128"
        },
        {
          "internalType": "int128",
          "name": "_tokenBIndex",
          "type": "int128"
        },
        {
          "internalType": "contract IStableSwapPool",
          "name": "_stableswap",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "getSpender",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_sourceToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_destinationToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_destinationAddress",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_sourceQuantity",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_minDestinationQuantity",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "name": "getTradeCalldata",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "stableswap",
      "outputs": [
        {
          "internalType": "contract IStableSwapPool",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "tokenA",
      "outputs": [
        {
          "internalType": "contract IERC20",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "tokenAIndex",
      "outputs": [
        {
          "internalType": "int128",
          "name": "",
          "type": "int128"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "tokenB",
      "outputs": [
        {
          "internalType": "contract IERC20",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "tokenBIndex",
      "outputs": [
        {
          "internalType": "int128",
          "name": "",
          "type": "int128"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_sourceToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_destinationToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_sourceQuantity",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_minDestinationQuantity",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_destinationAddress",
          "type": "address"
        }
      ],
      "name": "trade",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x6101206040523480156200001257600080fd5b50604051620011753803806200117583398101604081905262000035916200037b565b846001600160a01b0316816001600160a01b031663c661065785600f0b6040518263ffffffff1660e01b815260040162000070919062000489565b60206040518083038186803b1580156200008957600080fd5b505afa1580156200009e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000c4919062000333565b6001600160a01b031614620000f65760405162461bcd60e51b8152600401620000ed9062000413565b60405180910390fd5b836001600160a01b0316816001600160a01b031663c661065784600f0b6040518263ffffffff1660e01b815260040162000131919062000489565b60206040518083038186803b1580156200014a57600080fd5b505afa1580156200015f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000185919062000333565b6001600160a01b031614620001ae5760405162461bcd60e51b8152600401620000ed906200044e565b606085811b6001600160601b0319908116608090815286831b821660a052600f86810b810b821b60c05285810b900b901b60e0529082901b16610100526001600160a01b03851663095ea7b382620002116200032d602090811b620007cf17901c565b6040518363ffffffff1660e01b815260040162000230929190620003fa565b602060405180830381600087803b1580156200024b57600080fd5b505af115801562000260573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000286919062000359565b50836001600160a01b031663095ea7b382620002ac6200032d60201b620007cf1760201c565b6040518363ffffffff1660e01b8152600401620002cb929190620003fa565b602060405180830381600087803b158015620002e657600080fd5b505af1158015620002fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000321919062000359565b505050505050620004bb565b60001990565b60006020828403121562000345578081fd5b8151620003528162000492565b9392505050565b6000602082840312156200036b578081fd5b8151801515811462000352578182fd5b600080600080600060a0868803121562000393578081fd5b8551620003a08162000492565b6020870151909550620003b38162000492565b6040870151909450620003c681620004ab565b6060870151909350620003d981620004ab565b6080870151909250620003ec8162000492565b809150509295509295909350565b6001600160a01b03929092168252602082015260400190565b6020808252602c908201526000805160206200115583398151915260408201526b7820666f7220746f6b656e4160a01b606082015260800190565b6020808252602c908201526000805160206200115583398151915260408201526b3c103337b9103a37b5b2b72160a11b606082015260800190565b90815260200190565b6001600160a01b0381168114620004a857600080fd5b50565b80600f0b8114620004a857600080fd5b60805160601c60a05160601c60c05160801c60e05160801c6101005160601c610c056200055060003980610119528061028a52806104f55250806102d9528061052252806106015250806102b7528061054452806105b55250806101b452806103e352806105dd52806106975280610724525080610178528061041f5280610591528061065c52806106e95250610c056000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063334fc2891161005b578063334fc289146100dd5780635f64b55b146100e5578063b2176518146100ed578063e171fcab146100f557610088565b8063065861421461008d5780630b803959146100ab5780630fc63d10146100c0578063146071a5146100c8575b600080fd5b610095610117565b6040516100a29190610939565b60405180910390f35b6100be6100b936600461089c565b61013b565b005b61009561058f565b6100d06105b3565b6040516100a29190610a24565b6100956105d7565b6100956105db565b6100d06105ff565b6101086101033660046107d5565b610623565b6040516100a2939291906109ba565b7f000000000000000000000000000000000000000000000000000000000000000081565b836001600160a01b0316856001600160a01b031614156101765760405162461bcd60e51b815260040161016d90610b0a565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b03161480156101e857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316145b156103e1576040516323b872dd60e01b81526001600160a01b038616906323b872dd9061021d9033903090889060040161094d565b602060405180830381600087803b15801561023757600080fd5b505af115801561024b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061026f91906108fa565b50604051630f7c084960e21b81526000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633df0212490610305907f0000000000000000000000000000000000000000000000000000000000000000907f00000000000000000000000000000000000000000000000000000000000000009089908990600401610a32565b602060405180830381600087803b15801561031f57600080fd5b505af1158015610333573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103579190610921565b60405163a9059cbb60e01b81529091506001600160a01b0386169063a9059cbb9061038890859085906004016109a1565b602060405180830381600087803b1580156103a257600080fd5b505af11580156103b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103da91906108fa565b5050610588565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614801561045357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316145b15610570576040516323b872dd60e01b81526001600160a01b038616906323b872dd906104889033903090889060040161094d565b602060405180830381600087803b1580156104a257600080fd5b505af11580156104b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104da91906108fa565b50604051630f7c084960e21b81526000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633df0212490610305907f0000000000000000000000000000000000000000000000000000000000000000907f00000000000000000000000000000000000000000000000000000000000000009089908990600401610a32565b60405162461bcd60e51b815260040161016d90610a55565b5050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b3090565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806060876001600160a01b0316896001600160a01b0316141561065a5760405162461bcd60e51b815260040161016d90610b0a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316896001600160a01b031614806106cb57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316896001600160a01b0316145b6106e75760405162461bcd60e51b815260040161016d90610aa6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316886001600160a01b0316148061075857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316886001600160a01b0316145b6107745760405162461bcd60e51b815260040161016d90610ad3565b6060898988888b60405160240161078f959493929190610971565b60408051601f198184030181529190526020810180516001600160e01b0316630b80395960e01b1790523094506000935091505096509650969350505050565b60001990565b60008060008060008060c087890312156107ed578182fd5b86356107f881610bb7565b9550602087013561080881610bb7565b9450604087013561081881610bb7565b9350606087013592506080870135915060a087013567ffffffffffffffff811115610841578182fd5b80880189601f820112610852578283fd5b8035915061086761086283610b87565b610b60565b8281528a602084840101111561087b578384fd5b61088c836020830160208501610bab565b8093505050509295509295509295565b600080600080600060a086880312156108b3578081fd5b85356108be81610bb7565b945060208601356108ce81610bb7565b9350604086013592506060860135915060808601356108ec81610bb7565b809150509295509295909350565b60006020828403121561090b578081fd5b8151801515811461091a578182fd5b9392505050565b600060208284031215610932578081fd5b5051919050565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b039586168152938516602085015260408401929092526060830152909116608082015260a00190565b6001600160a01b03929092168252602082015260400190565b600060018060a01b038516825260208481840152606060408401528351806060850152825b818110156109fb578581018301518582016080015282016109df565b81811115610a0c5783608083870101525b50601f01601f19169290920160800195945050505050565b600f9190910b815260200190565b600f94850b81529290930b60208301526040820152606081019190915260800190565b60208082526031908201527f496e76616c6964205f736f75726365546f6b656e206f72205f64657374696e616040820152700e8d2dedca8ded6cadc40dee440c4dee8d607b1b606082015260800190565b60208082526013908201527224b73b30b634b21039b7bab931b2aa37b5b2b760691b604082015260600190565b60208082526018908201527f496e76616c69642064657374696e6174696f6e546f6b656e0000000000000000604082015260600190565b60208082526036908201527f5f736f75726365546f6b656e206d757374206e6f74206265207468652073616d604082015275329030b9902fb232b9ba34b730ba34b7b72a37b5b2b760511b606082015260800190565b60405181810167ffffffffffffffff81118282101715610b7f57600080fd5b604052919050565b600067ffffffffffffffff821115610b9d578081fd5b50601f01601f191660200190565b82818337506000910152565b6001600160a01b0381168114610bcc57600080fd5b5056fea2646970667358221220452728ca9c49c5af16ddaf28a540c2b321f382d812be855043f0571474724a6964736f6c634300060a0033537461626c657377617020706f6f6c2068617320696e76616c696420696e6465",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c8063334fc2891161005b578063334fc289146100dd5780635f64b55b146100e5578063b2176518146100ed578063e171fcab146100f557610088565b8063065861421461008d5780630b803959146100ab5780630fc63d10146100c0578063146071a5146100c8575b600080fd5b610095610117565b6040516100a29190610939565b60405180910390f35b6100be6100b936600461089c565b61013b565b005b61009561058f565b6100d06105b3565b6040516100a29190610a24565b6100956105d7565b6100956105db565b6100d06105ff565b6101086101033660046107d5565b610623565b6040516100a2939291906109ba565b7f000000000000000000000000000000000000000000000000000000000000000081565b836001600160a01b0316856001600160a01b031614156101765760405162461bcd60e51b815260040161016d90610b0a565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b03161480156101e857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316145b156103e1576040516323b872dd60e01b81526001600160a01b038616906323b872dd9061021d9033903090889060040161094d565b602060405180830381600087803b15801561023757600080fd5b505af115801561024b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061026f91906108fa565b50604051630f7c084960e21b81526000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633df0212490610305907f0000000000000000000000000000000000000000000000000000000000000000907f00000000000000000000000000000000000000000000000000000000000000009089908990600401610a32565b602060405180830381600087803b15801561031f57600080fd5b505af1158015610333573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103579190610921565b60405163a9059cbb60e01b81529091506001600160a01b0386169063a9059cbb9061038890859085906004016109a1565b602060405180830381600087803b1580156103a257600080fd5b505af11580156103b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103da91906108fa565b5050610588565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614801561045357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316145b15610570576040516323b872dd60e01b81526001600160a01b038616906323b872dd906104889033903090889060040161094d565b602060405180830381600087803b1580156104a257600080fd5b505af11580156104b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104da91906108fa565b50604051630f7c084960e21b81526000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633df0212490610305907f0000000000000000000000000000000000000000000000000000000000000000907f00000000000000000000000000000000000000000000000000000000000000009089908990600401610a32565b60405162461bcd60e51b815260040161016d90610a55565b5050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b3090565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806060876001600160a01b0316896001600160a01b0316141561065a5760405162461bcd60e51b815260040161016d90610b0a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316896001600160a01b031614806106cb57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316896001600160a01b0316145b6106e75760405162461bcd60e51b815260040161016d90610aa6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316886001600160a01b0316148061075857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316886001600160a01b0316145b6107745760405162461bcd60e51b815260040161016d90610ad3565b6060898988888b60405160240161078f959493929190610971565b60408051601f198184030181529190526020810180516001600160e01b0316630b80395960e01b1790523094506000935091505096509650969350505050565b60001990565b60008060008060008060c087890312156107ed578182fd5b86356107f881610bb7565b9550602087013561080881610bb7565b9450604087013561081881610bb7565b9350606087013592506080870135915060a087013567ffffffffffffffff811115610841578182fd5b80880189601f820112610852578283fd5b8035915061086761086283610b87565b610b60565b8281528a602084840101111561087b578384fd5b61088c836020830160208501610bab565b8093505050509295509295509295565b600080600080600060a086880312156108b3578081fd5b85356108be81610bb7565b945060208601356108ce81610bb7565b9350604086013592506060860135915060808601356108ec81610bb7565b809150509295509295909350565b60006020828403121561090b578081fd5b8151801515811461091a578182fd5b9392505050565b600060208284031215610932578081fd5b5051919050565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b039586168152938516602085015260408401929092526060830152909116608082015260a00190565b6001600160a01b03929092168252602082015260400190565b600060018060a01b038516825260208481840152606060408401528351806060850152825b818110156109fb578581018301518582016080015282016109df565b81811115610a0c5783608083870101525b50601f01601f19169290920160800195945050505050565b600f9190910b815260200190565b600f94850b81529290930b60208301526040820152606081019190915260800190565b60208082526031908201527f496e76616c6964205f736f75726365546f6b656e206f72205f64657374696e616040820152700e8d2dedca8ded6cadc40dee440c4dee8d607b1b606082015260800190565b60208082526013908201527224b73b30b634b21039b7bab931b2aa37b5b2b760691b604082015260600190565b60208082526018908201527f496e76616c69642064657374696e6174696f6e546f6b656e0000000000000000604082015260600190565b60208082526036908201527f5f736f75726365546f6b656e206d757374206e6f74206265207468652073616d604082015275329030b9902fb232b9ba34b730ba34b7b72a37b5b2b760511b606082015260800190565b60405181810167ffffffffffffffff81118282101715610b7f57600080fd5b604052919050565b600067ffffffffffffffff821115610b9d578081fd5b50601f01601f191660200190565b82818337506000910152565b6001600160a01b0381168114610bcc57600080fd5b5056fea2646970667358221220452728ca9c49c5af16ddaf28a540c2b321f382d812be855043f0571474724a6964736f6c634300060a0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
