{
  "_format": "hh-sol-artifact-1",
  "contractName": "Quoter",
  "sourceName": "contracts/lens/Quoter.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_factory",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_WETH9",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "WETH9",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "factory",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "int256",
          "name": "amount0Delta",
          "type": "int256"
        },
        {
          "internalType": "int256",
          "name": "amount1Delta",
          "type": "int256"
        },
        {
          "internalType": "bytes",
          "name": "path",
          "type": "bytes"
        }
      ],
      "name": "kfcV3SwapCallback",
      "outputs": [],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "path",
          "type": "bytes"
        },
        {
          "internalType": "uint256",
          "name": "amountIn",
          "type": "uint256"
        }
      ],
      "name": "quoteExactInput",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "amountOut",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenIn",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "tokenOut",
          "type": "address"
        },
        {
          "internalType": "uint24",
          "name": "fee",
          "type": "uint24"
        },
        {
          "internalType": "uint256",
          "name": "amountIn",
          "type": "uint256"
        },
        {
          "internalType": "uint160",
          "name": "sqrtPriceLimitX96",
          "type": "uint160"
        }
      ],
      "name": "quoteExactInputSingle",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "amountOut",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "path",
          "type": "bytes"
        },
        {
          "internalType": "uint256",
          "name": "amountOut",
          "type": "uint256"
        }
      ],
      "name": "quoteExactOutput",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "amountIn",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenIn",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "tokenOut",
          "type": "address"
        },
        {
          "internalType": "uint24",
          "name": "fee",
          "type": "uint24"
        },
        {
          "internalType": "uint256",
          "name": "amountOut",
          "type": "uint256"
        },
        {
          "internalType": "uint160",
          "name": "sqrtPriceLimitX96",
          "type": "uint160"
        }
      ],
      "name": "quoteExactOutputSingle",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "amountIn",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60c060405234801561001057600080fd5b506040516112f53803806112f583398101604081905261002f91610069565b6001600160601b0319606092831b8116608052911b1660a05261009b565b80516001600160a01b038116811461006457600080fd5b919050565b6000806040838503121561007b578182fd5b6100848361004d565b91506100926020840161004d565b90509250929050565b60805160601c60a05160601c6112276100ce60003980610450525080610147528061047452806106f152506112276000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80634aa4a4fc1161005b5780634aa4a4fc146100d3578063c45a0155146100e8578063cdca1753146100f0578063f7729d43146101035761007d565b8063101e8605146100825780632f80bb1d1461009757806330d07f21146100c0575b600080fd5b610095610090366004610f0a565b610116565b005b6100aa6100a5366004610ea4565b610221565b6040516100b79190611158565b60405180910390f35b6100aa6100ce366004610e36565b610286565b6100db61044e565b6040516100b7919061108a565b6100db610472565b6100aa6100fe366004610ea4565b610496565b6100aa610111366004610e36565b6104e4565b60008313806101255750600082135b61012e57600080fd5b600080600061013c84610666565b92509250925061016e7f0000000000000000000000000000000000000000000000000000000000000000848484610697565b5060008060008089136101b4578573ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1610888a6000036101e9565b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161089896000035b925092509250821561020057604051818152602081fd5b6000541561021657600054811461021657600080fd5b604051828152602081fd5b60005b600061022f846106ad565b9050600080600061023f87610666565b925092509250610253828483896000610286565b9550831561026b57610264876106b5565b9650610277565b85945050505050610280565b50505050610224565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff808616878216109083166102b15760008490555b6102bc8787876106ea565b73ffffffffffffffffffffffffffffffffffffffff16634696414930836102e288610728565b60000373ffffffffffffffffffffffffffffffffffffffff881615610307578761032d565b856103265773fffd8963efd1fc6a506488495d951d5263988d2561032d565b6401000276a45b8b8b8e60405160200161034293929190611024565b60405160208183030381529060405260006040518763ffffffff1660e01b8152600401610374969594939291906110ab565b6040805180830381600087803b15801561038d57600080fd5b505af19250505080156103db575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526103d891810190610ee7565b60015b610441573d808015610409576040519150601f19603f3d011682016040523d82523d6000602084013e61040e565b606091505b5073ffffffffffffffffffffffffffffffffffffffff841661042f57600080555b6104388161075a565b92505050610445565b5050505b95945050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60005b60006104a4846106ad565b905060008060006104b487610666565b9250925092506104c88383838960006104e4565b9550831561026b576104d9876106b5565b965050505050610499565b600073ffffffffffffffffffffffffffffffffffffffff8086169087161061050d8787876106ea565b73ffffffffffffffffffffffffffffffffffffffff166346964149308361053388610728565b73ffffffffffffffffffffffffffffffffffffffff881615610555578761057b565b856105745773fffd8963efd1fc6a506488495d951d5263988d2561057b565b6401000276a45b8c8b8d60405160200161059093929190611024565b60405160208183030381529060405260006040518763ffffffff1660e01b81526004016105c2969594939291906110ab565b6040805180830381600087803b1580156105db57600080fd5b505af1925050508015610629575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261062691810190610ee7565b60015b610441573d808015610657576040519150601f19603f3d011682016040523d82523d6000602084013e61065c565b606091505b506104388161075a565b60008080610674848261080b565b925061068184601461090b565b905061068e84601761080b565b91509193909250565b6000610445856106a88686866109fb565b610a78565b516042111590565b80516060906102809083906017907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe901610aa8565b60006107207f000000000000000000000000000000000000000000000000000000000000000061071b8686866109fb565b610c8f565b949350505050565b60007f8000000000000000000000000000000000000000000000000000000000000000821061075657600080fd5b5090565b600081516020146107f7576044825110156107aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a190611121565b60405180910390fd5b600482019150818060200190518101906107c49190610f58565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a19190611107565b818060200190518101906102809190610fc2565b60008182601401101561087f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f746f416464726573735f6f766572666c6f770000000000000000000000000000604482015290519081900360640190fd5b81601401835110156108f257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f746f416464726573735f6f75744f66426f756e64730000000000000000000000604482015290519081900360640190fd5b5001602001516c01000000000000000000000000900490565b60008182600301101561097f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f746f55696e7432345f6f766572666c6f77000000000000000000000000000000604482015290519081900360640190fd5b81600301835110156109f257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f746f55696e7432345f6f75744f66426f756e6473000000000000000000000000604482015290519081900360640190fd5b50016003015190565b610a03610dc5565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161115610a3b579192915b506040805160608101825273ffffffffffffffffffffffffffffffffffffffff948516815292909316602083015262ffffff169181019190915290565b6000610a848383610c8f565b90503373ffffffffffffffffffffffffffffffffffffffff82161461028057600080fd5b60608182601f011015610b1c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015290519081900360640190fd5b828284011015610b8d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015290519081900360640190fd5b81830184511015610bff57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e6473000000000000000000000000000000604482015290519081900360640190fd5b606082158015610c1e5760405191506000825260208201604052610c86565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015610c57578051835260209283019201610c3f565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b6000816020015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1610610cd157600080fd5b508051602080830151604093840151845173ffffffffffffffffffffffffffffffffffffffff94851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301207fff0000000000000000000000000000000000000000000000000000000000000060a085015294901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660a183015260b58201939093527fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b5460d5808301919091528251808303909101815260f5909101909152805191012090565b604080516060810182526000808252602082018190529181019190915290565b600082601f830112610df5578081fd5b8135610e08610e0382611185565b611161565b818152846020838601011115610e1c578283fd5b816020850160208301379081016020019190915292915050565b600080600080600060a08688031215610e4d578081fd5b8535610e58816111f5565b94506020860135610e68816111f5565b9350604086013562ffffff81168114610e7f578182fd5b9250606086013591506080860135610e96816111f5565b809150509295509295909350565b60008060408385031215610eb6578182fd5b823567ffffffffffffffff811115610ecc578283fd5b610ed885828601610de5565b95602094909401359450505050565b60008060408385031215610ef9578182fd5b505080516020909101519092909150565b600080600060608486031215610f1e578283fd5b8335925060208401359150604084013567ffffffffffffffff811115610f42578182fd5b610f4e86828701610de5565b9150509250925092565b600060208284031215610f69578081fd5b815167ffffffffffffffff811115610f7f578182fd5b8201601f81018413610f8f578182fd5b8051610f9d610e0382611185565b818152856020838501011115610fb1578384fd5b6104458260208301602086016111c5565b600060208284031215610fd3578081fd5b5051919050565b60008151808452610ff28160208601602086016111c5565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b606093841b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000908116825260e89390931b7fffffff0000000000000000000000000000000000000000000000000000000000166014820152921b166017820152602b0190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600073ffffffffffffffffffffffffffffffffffffffff80891683528715156020840152866040840152808616606084015260c060808401526110f160c0840186610fda565b915080841660a084015250979650505050505050565b60006020825261111a6020830184610fda565b9392505050565b60208082526010908201527f556e6578706563746564206572726f7200000000000000000000000000000000604082015260600190565b90815260200190565b60405181810167ffffffffffffffff8111828210171561117d57fe5b604052919050565b600067ffffffffffffffff82111561119957fe5b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b838110156111e05781810151838201526020016111c8565b838111156111ef576000848401525b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461121757600080fd5b5056fea164736f6c6343000706000a",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061007d5760003560e01c80634aa4a4fc1161005b5780634aa4a4fc146100d3578063c45a0155146100e8578063cdca1753146100f0578063f7729d43146101035761007d565b8063101e8605146100825780632f80bb1d1461009757806330d07f21146100c0575b600080fd5b610095610090366004610f0a565b610116565b005b6100aa6100a5366004610ea4565b610221565b6040516100b79190611158565b60405180910390f35b6100aa6100ce366004610e36565b610286565b6100db61044e565b6040516100b7919061108a565b6100db610472565b6100aa6100fe366004610ea4565b610496565b6100aa610111366004610e36565b6104e4565b60008313806101255750600082135b61012e57600080fd5b600080600061013c84610666565b92509250925061016e7f0000000000000000000000000000000000000000000000000000000000000000848484610697565b5060008060008089136101b4578573ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1610888a6000036101e9565b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161089896000035b925092509250821561020057604051818152602081fd5b6000541561021657600054811461021657600080fd5b604051828152602081fd5b60005b600061022f846106ad565b9050600080600061023f87610666565b925092509250610253828483896000610286565b9550831561026b57610264876106b5565b9650610277565b85945050505050610280565b50505050610224565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff808616878216109083166102b15760008490555b6102bc8787876106ea565b73ffffffffffffffffffffffffffffffffffffffff16634696414930836102e288610728565b60000373ffffffffffffffffffffffffffffffffffffffff881615610307578761032d565b856103265773fffd8963efd1fc6a506488495d951d5263988d2561032d565b6401000276a45b8b8b8e60405160200161034293929190611024565b60405160208183030381529060405260006040518763ffffffff1660e01b8152600401610374969594939291906110ab565b6040805180830381600087803b15801561038d57600080fd5b505af19250505080156103db575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526103d891810190610ee7565b60015b610441573d808015610409576040519150601f19603f3d011682016040523d82523d6000602084013e61040e565b606091505b5073ffffffffffffffffffffffffffffffffffffffff841661042f57600080555b6104388161075a565b92505050610445565b5050505b95945050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60005b60006104a4846106ad565b905060008060006104b487610666565b9250925092506104c88383838960006104e4565b9550831561026b576104d9876106b5565b965050505050610499565b600073ffffffffffffffffffffffffffffffffffffffff8086169087161061050d8787876106ea565b73ffffffffffffffffffffffffffffffffffffffff166346964149308361053388610728565b73ffffffffffffffffffffffffffffffffffffffff881615610555578761057b565b856105745773fffd8963efd1fc6a506488495d951d5263988d2561057b565b6401000276a45b8c8b8d60405160200161059093929190611024565b60405160208183030381529060405260006040518763ffffffff1660e01b81526004016105c2969594939291906110ab565b6040805180830381600087803b1580156105db57600080fd5b505af1925050508015610629575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261062691810190610ee7565b60015b610441573d808015610657576040519150601f19603f3d011682016040523d82523d6000602084013e61065c565b606091505b506104388161075a565b60008080610674848261080b565b925061068184601461090b565b905061068e84601761080b565b91509193909250565b6000610445856106a88686866109fb565b610a78565b516042111590565b80516060906102809083906017907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe901610aa8565b60006107207f000000000000000000000000000000000000000000000000000000000000000061071b8686866109fb565b610c8f565b949350505050565b60007f8000000000000000000000000000000000000000000000000000000000000000821061075657600080fd5b5090565b600081516020146107f7576044825110156107aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a190611121565b60405180910390fd5b600482019150818060200190518101906107c49190610f58565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a19190611107565b818060200190518101906102809190610fc2565b60008182601401101561087f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f746f416464726573735f6f766572666c6f770000000000000000000000000000604482015290519081900360640190fd5b81601401835110156108f257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f746f416464726573735f6f75744f66426f756e64730000000000000000000000604482015290519081900360640190fd5b5001602001516c01000000000000000000000000900490565b60008182600301101561097f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f746f55696e7432345f6f766572666c6f77000000000000000000000000000000604482015290519081900360640190fd5b81600301835110156109f257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f746f55696e7432345f6f75744f66426f756e6473000000000000000000000000604482015290519081900360640190fd5b50016003015190565b610a03610dc5565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161115610a3b579192915b506040805160608101825273ffffffffffffffffffffffffffffffffffffffff948516815292909316602083015262ffffff169181019190915290565b6000610a848383610c8f565b90503373ffffffffffffffffffffffffffffffffffffffff82161461028057600080fd5b60608182601f011015610b1c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015290519081900360640190fd5b828284011015610b8d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015290519081900360640190fd5b81830184511015610bff57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e6473000000000000000000000000000000604482015290519081900360640190fd5b606082158015610c1e5760405191506000825260208201604052610c86565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015610c57578051835260209283019201610c3f565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b6000816020015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1610610cd157600080fd5b508051602080830151604093840151845173ffffffffffffffffffffffffffffffffffffffff94851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301207fff0000000000000000000000000000000000000000000000000000000000000060a085015294901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660a183015260b58201939093527fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b5460d5808301919091528251808303909101815260f5909101909152805191012090565b604080516060810182526000808252602082018190529181019190915290565b600082601f830112610df5578081fd5b8135610e08610e0382611185565b611161565b818152846020838601011115610e1c578283fd5b816020850160208301379081016020019190915292915050565b600080600080600060a08688031215610e4d578081fd5b8535610e58816111f5565b94506020860135610e68816111f5565b9350604086013562ffffff81168114610e7f578182fd5b9250606086013591506080860135610e96816111f5565b809150509295509295909350565b60008060408385031215610eb6578182fd5b823567ffffffffffffffff811115610ecc578283fd5b610ed885828601610de5565b95602094909401359450505050565b60008060408385031215610ef9578182fd5b505080516020909101519092909150565b600080600060608486031215610f1e578283fd5b8335925060208401359150604084013567ffffffffffffffff811115610f42578182fd5b610f4e86828701610de5565b9150509250925092565b600060208284031215610f69578081fd5b815167ffffffffffffffff811115610f7f578182fd5b8201601f81018413610f8f578182fd5b8051610f9d610e0382611185565b818152856020838501011115610fb1578384fd5b6104458260208301602086016111c5565b600060208284031215610fd3578081fd5b5051919050565b60008151808452610ff28160208601602086016111c5565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b606093841b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000908116825260e89390931b7fffffff0000000000000000000000000000000000000000000000000000000000166014820152921b166017820152602b0190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600073ffffffffffffffffffffffffffffffffffffffff80891683528715156020840152866040840152808616606084015260c060808401526110f160c0840186610fda565b915080841660a084015250979650505050505050565b60006020825261111a6020830184610fda565b9392505050565b60208082526010908201527f556e6578706563746564206572726f7200000000000000000000000000000000604082015260600190565b90815260200190565b60405181810167ffffffffffffffff8111828210171561117d57fe5b604052919050565b600067ffffffffffffffff82111561119957fe5b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b838110156111e05781810151838201526020016111c8565b838111156111ef576000848401525b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461121757600080fd5b5056fea164736f6c6343000706000a",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
