{
  "_format": "hh-sol-artifact-1",
  "contractName": "UniswapV3ExchangeAdapterV2",
  "sourceName": "contracts/protocol/integration/exchange/UniswapV3ExchangeAdapterV2.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_swapRouter",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "_path",
          "type": "address[]"
        },
        {
          "internalType": "uint24[]",
          "name": "_fees",
          "type": "uint24[]"
        },
        {
          "internalType": "bool",
          "name": "_fixIn",
          "type": "bool"
        }
      ],
      "name": "generateDataParam",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "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": "_destinationQuantity",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "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": "swapRouter",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60a060405234801561001057600080fd5b50604051610dbb380380610dbb83398101604081905261002f91610044565b60601b6001600160601b031916608052610072565b600060208284031215610055578081fd5b81516001600160a01b038116811461006b578182fd5b9392505050565b60805160601c610d22610099600039806101c252806101e6528061058a5250610d226000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806317d4d8c914610051578063334fc2891461007a578063c31c9c071461008f578063e171fcab14610097575b600080fd5b61006461005f3660046108c1565b6100b9565b6040516100719190610ad4565b60405180910390f35b6100826101c0565b6040516100719190610a90565b6100826101e4565b6100aa6100a536600461080b565b610208565b60405161007193929190610aa4565b60408051602081019091526000808252606091905b600019870181101561014957818888838181106100e757fe5b90506020020160208101906100fc91906107e9565b87878481811061010857fe5b905060200201602081019061011d9190610946565b60405160200161012f93929190610a1c565b60408051601f1981840301815291905291506001016100ce565b50808787600019810181811061015b57fe5b905060200201602081019061017091906107e9565b6040516020016101819291906109e5565b604051602081830303815290604052905080836040516020016101a5929190610a68565b60405160208183030381529060405291505095945050505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806060602c8410156102375760405162461bcd60e51b815260040161022e90610ae7565b60405180910390fd5b60006102886001878790500387878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff6105c3169050565b90506000808215610335576102dd600089898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff610654169050565b915061032e6015898990500389898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff610654169050565b90506103d3565b6103846015898990500389898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff610654169050565b91506103d0600089898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff610654169050565b90505b816001600160a01b03168d6001600160a01b0316146104045760405162461bcd60e51b815260040161022e90610c1a565b806001600160a01b03168c6001600160a01b0316146104355760405162461bcd60e51b815260040161022e90610b35565b6060610489600060018b8b9050038b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092949392505063ffffffff6106ad169050565b905060608461050f576040805160a0810182528381526001600160a01b038f1660208201524281830152606081018d9052608081018e90529051631e51809360e31b916104d891602401610ca9565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610588565b6040805160a0810182528381526001600160a01b038f1660208201524281830152606081018e9052608081018d9052905163c04b8d5960e01b9161055591602401610ca9565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091525b7f0000000000000000000000000000000000000000000000000000000000000000985060009750955050505050509750975097945050505050565b6000818260010110156105e85760405162461bcd60e51b815260040161022e90610bc6565b816001018351101561060c5760405162461bcd60e51b815260040161022e90610c51565b60018284018101519060ff821611156106375760405162461bcd60e51b815260040161022e90610bef565b60ff81161561064757600161064a565b60005b9150505b92915050565b6000818260140110156106795760405162461bcd60e51b815260040161022e90610c7d565b816014018351101561069d5760405162461bcd60e51b815260040161022e90610b6c565b500160200151600160601b900490565b60608182601f0110156106d25760405162461bcd60e51b815260040161022e90610b0d565b8282840110156106f45760405162461bcd60e51b815260040161022e90610b0d565b818301845110156107175760405162461bcd60e51b815260040161022e90610b9b565b6060821580156107365760405191506000825260208201604052610780565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561076f578051835260209283019201610757565b5050858452601f01601f1916604052505b50949350505050565b80356001600160a01b038116811461064e57600080fd5b60008083601f8401126107b1578182fd5b50813567ffffffffffffffff8111156107c8578182fd5b60208301915083602080830285010111156107e257600080fd5b9250929050565b6000602082840312156107fa578081fd5b6108048383610789565b9392505050565b600080600080600080600060c0888a031215610825578283fd5b61082f8989610789565b965061083e8960208a01610789565b955061084d8960408a01610789565b9450606088013593506080880135925060a088013567ffffffffffffffff80821115610877578384fd5b818a018b601f820112610888578485fd5b8035925081831115610898578485fd5b8b60208483010111156108a9578485fd5b60208101945050508091505092959891949750929550565b6000806000806000606086880312156108d8578081fd5b853567ffffffffffffffff808211156108ef578283fd5b6108fb89838a016107a0565b90975095506020880135915080821115610913578283fd5b50610920888289016107a0565b90945092505060408601358015158114610938578182fd5b809150509295509295909350565b600060208284031215610957578081fd5b813562ffffff81168114610804578182fd5b60008151808452610981816020860160208601610cbc565b601f01601f19169290920160200192915050565b6000815160a084526109aa60a0850182610969565b60018060a01b036020850151166020860152604084015160408601526060840151606086015260808401516080860152809250505092915050565b600083516109f7818460208801610cbc565b60609390931b6bffffffffffffffffffffffff19169190920190815260140192915050565b60008451610a2e818460208901610cbc565b60609490941b6bffffffffffffffffffffffff19169190930190815260e89190911b6001600160e81b031916601482015260170192915050565b60008351610a7a818460208801610cbc565b92151560f81b9190920190815260010192915050565b6001600160a01b0391909116815260200190565b600060018060a01b038516825283602083015260606040830152610acb6060830184610969565b95945050505050565b6000602082526108046020830184610969565b6020808252600c908201526b496e76616c6964206461746160a01b604082015260600190565b6020808252600e908201526d736c6963655f6f766572666c6f7760901b604082015260600190565b6020808252601f908201527f44657374696e6174696f6e20746f6b656e2070617468206d69736d6174636800604082015260600190565b602080825260159082015274746f416464726573735f6f75744f66426f756e647360581b604082015260600190565b602080825260119082015270736c6963655f6f75744f66426f756e647360781b604082015260600190565b6020808252600f908201526e746f426f6f6c5f6f766572666c6f7760881b604082015260600190565b602080825260119082015270496e76616c696420626f6f6c206461746160781b604082015260600190565b6020808252601a908201527f536f7572636520746f6b656e2070617468206d69736d61746368000000000000604082015260600190565b602080825260129082015271746f426f6f6c5f6f75744f66426f756e647360701b604082015260600190565b602080825260129082015271746f416464726573735f6f766572666c6f7760701b604082015260600190565b6000602082526108046020830184610995565b60005b83811015610cd7578181015183820152602001610cbf565b83811115610ce6576000848401525b5050505056fea2646970667358221220904f71a659774a95f1528a2ccef1b1b9fef92b419e97253083043c349d421c8564736f6c634300060a0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c806317d4d8c914610051578063334fc2891461007a578063c31c9c071461008f578063e171fcab14610097575b600080fd5b61006461005f3660046108c1565b6100b9565b6040516100719190610ad4565b60405180910390f35b6100826101c0565b6040516100719190610a90565b6100826101e4565b6100aa6100a536600461080b565b610208565b60405161007193929190610aa4565b60408051602081019091526000808252606091905b600019870181101561014957818888838181106100e757fe5b90506020020160208101906100fc91906107e9565b87878481811061010857fe5b905060200201602081019061011d9190610946565b60405160200161012f93929190610a1c565b60408051601f1981840301815291905291506001016100ce565b50808787600019810181811061015b57fe5b905060200201602081019061017091906107e9565b6040516020016101819291906109e5565b604051602081830303815290604052905080836040516020016101a5929190610a68565b60405160208183030381529060405291505095945050505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806060602c8410156102375760405162461bcd60e51b815260040161022e90610ae7565b60405180910390fd5b60006102886001878790500387878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff6105c3169050565b90506000808215610335576102dd600089898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff610654169050565b915061032e6015898990500389898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff610654169050565b90506103d3565b6103846015898990500389898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff610654169050565b91506103d0600089898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff610654169050565b90505b816001600160a01b03168d6001600160a01b0316146104045760405162461bcd60e51b815260040161022e90610c1a565b806001600160a01b03168c6001600160a01b0316146104355760405162461bcd60e51b815260040161022e90610b35565b6060610489600060018b8b9050038b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092949392505063ffffffff6106ad169050565b905060608461050f576040805160a0810182528381526001600160a01b038f1660208201524281830152606081018d9052608081018e90529051631e51809360e31b916104d891602401610ca9565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610588565b6040805160a0810182528381526001600160a01b038f1660208201524281830152606081018e9052608081018d9052905163c04b8d5960e01b9161055591602401610ca9565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091525b7f0000000000000000000000000000000000000000000000000000000000000000985060009750955050505050509750975097945050505050565b6000818260010110156105e85760405162461bcd60e51b815260040161022e90610bc6565b816001018351101561060c5760405162461bcd60e51b815260040161022e90610c51565b60018284018101519060ff821611156106375760405162461bcd60e51b815260040161022e90610bef565b60ff81161561064757600161064a565b60005b9150505b92915050565b6000818260140110156106795760405162461bcd60e51b815260040161022e90610c7d565b816014018351101561069d5760405162461bcd60e51b815260040161022e90610b6c565b500160200151600160601b900490565b60608182601f0110156106d25760405162461bcd60e51b815260040161022e90610b0d565b8282840110156106f45760405162461bcd60e51b815260040161022e90610b0d565b818301845110156107175760405162461bcd60e51b815260040161022e90610b9b565b6060821580156107365760405191506000825260208201604052610780565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561076f578051835260209283019201610757565b5050858452601f01601f1916604052505b50949350505050565b80356001600160a01b038116811461064e57600080fd5b60008083601f8401126107b1578182fd5b50813567ffffffffffffffff8111156107c8578182fd5b60208301915083602080830285010111156107e257600080fd5b9250929050565b6000602082840312156107fa578081fd5b6108048383610789565b9392505050565b600080600080600080600060c0888a031215610825578283fd5b61082f8989610789565b965061083e8960208a01610789565b955061084d8960408a01610789565b9450606088013593506080880135925060a088013567ffffffffffffffff80821115610877578384fd5b818a018b601f820112610888578485fd5b8035925081831115610898578485fd5b8b60208483010111156108a9578485fd5b60208101945050508091505092959891949750929550565b6000806000806000606086880312156108d8578081fd5b853567ffffffffffffffff808211156108ef578283fd5b6108fb89838a016107a0565b90975095506020880135915080821115610913578283fd5b50610920888289016107a0565b90945092505060408601358015158114610938578182fd5b809150509295509295909350565b600060208284031215610957578081fd5b813562ffffff81168114610804578182fd5b60008151808452610981816020860160208601610cbc565b601f01601f19169290920160200192915050565b6000815160a084526109aa60a0850182610969565b60018060a01b036020850151166020860152604084015160408601526060840151606086015260808401516080860152809250505092915050565b600083516109f7818460208801610cbc565b60609390931b6bffffffffffffffffffffffff19169190920190815260140192915050565b60008451610a2e818460208901610cbc565b60609490941b6bffffffffffffffffffffffff19169190930190815260e89190911b6001600160e81b031916601482015260170192915050565b60008351610a7a818460208801610cbc565b92151560f81b9190920190815260010192915050565b6001600160a01b0391909116815260200190565b600060018060a01b038516825283602083015260606040830152610acb6060830184610969565b95945050505050565b6000602082526108046020830184610969565b6020808252600c908201526b496e76616c6964206461746160a01b604082015260600190565b6020808252600e908201526d736c6963655f6f766572666c6f7760901b604082015260600190565b6020808252601f908201527f44657374696e6174696f6e20746f6b656e2070617468206d69736d6174636800604082015260600190565b602080825260159082015274746f416464726573735f6f75744f66426f756e647360581b604082015260600190565b602080825260119082015270736c6963655f6f75744f66426f756e647360781b604082015260600190565b6020808252600f908201526e746f426f6f6c5f6f766572666c6f7760881b604082015260600190565b602080825260119082015270496e76616c696420626f6f6c206461746160781b604082015260600190565b6020808252601a908201527f536f7572636520746f6b656e2070617468206d69736d61746368000000000000604082015260600190565b602080825260129082015271746f426f6f6c5f6f75744f66426f756e647360701b604082015260600190565b602080825260129082015271746f416464726573735f6f766572666c6f7760701b604082015260600190565b6000602082526108046020830184610995565b60005b83811015610cd7578181015183820152602001610cbf565b83811115610ce6576000848401525b5050505056fea2646970667358221220904f71a659774a95f1528a2ccef1b1b9fef92b419e97253083043c349d421c8564736f6c634300060a0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
