{
  "_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": "moraswapV3SwapCallback",
      "outputs": [],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "poolDeployer",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "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": "0x60e060405234801561001057600080fd5b5060405161107c38038061107c83398101604081905261002f916100ef565b6001600160601b0319606083811b821660805282901b1660a0526040805163188c824d60e11b81529051839183916001600160a01b03841691633119049a916004808301926020929190829003018186803b15801561008d57600080fd5b505afa1580156100a1573d6000803e3d6000fd5b505050506040513d60208110156100b757600080fd5b505160601b6001600160601b03191660c0525061012192505050565b80516001600160a01b03811681146100ea57600080fd5b919050565b60008060408385031215610101578182fd5b61010a836100d3565b9150610118602084016100d3565b90509250929050565b60805160601c60a05160601c60c05160601c610f1c610160600039806103035280610526528061062352508061032752508061034b5250610f1c6000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063c45a01551161005b578063c45a0155146100e6578063cdca1753146100ee578063f7729d4314610101578063fb929db21461011457610088565b80632f80bb1d1461008d57806330d07f21146100b65780633119049a146100c95780634aa4a4fc146100de575b600080fd5b6100a061009b366004610c14565b610129565b6040516100ad9190610e4f565b60405180910390f35b6100a06100c4366004610ba6565b61018e565b6100d1610301565b6040516100ad9190610db1565b6100d1610325565b6100d1610349565b6100a06100fc366004610c14565b61036d565b6100a061010f366004610ba6565b6103bb565b610127610122366004610c7a565b6104f5565b005b60005b6000610137846105cc565b90506000806000610147876105d4565b92509250925061015b82848389600061018e565b955083156101735761016c87610605565b965061017f565b85945050505050610188565b5050505061012c565b92915050565b60006001600160a01b03808616878216109083166101ac5760008490555b6101b787878761061c565b6001600160a01b031663128acb0830836101d08861065a565b6000036001600160a01b038816156101e8578761020e565b856102075773fffd8963efd1fc6a506488495d951d5263988d2561020e565b6401000276a45b8b8b8e60405160200161022393929190610d76565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401610252959493929190610dc5565b6040805180830381600087803b15801561026b57600080fd5b505af192505050801561029b575060408051601f3d908101601f1916820190925261029891810190610c57565b60015b6102f4573d8080156102c9576040519150601f19603f3d011682016040523d82523d6000602084013e6102ce565b606091505b506001600160a01b0384166102e257600080555b6102eb81610670565b925050506102f8565b5050505b95945050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60005b600061037b846105cc565b9050600080600061038b876105d4565b92509250925061039f8383838960006103bb565b95508315610173576103b087610605565b965050505050610370565b60006001600160a01b03808616908716106103d787878761061c565b6001600160a01b031663128acb0830836103f08861065a565b6001600160a01b03881615610405578761042b565b856104245773fffd8963efd1fc6a506488495d951d5263988d2561042b565b6401000276a45b8c8b8d60405160200161044093929190610d76565b6040516020818303038152906040526040518663ffffffff1660e01b815260040161046f959493929190610dc5565b6040805180830381600087803b15801561048857600080fd5b505af19250505080156104b8575060408051601f3d908101601f191682019092526104b591810190610c57565b60015b6102f4573d8080156104e6576040519150601f19603f3d011682016040523d82523d6000602084013e6104eb565b606091505b506102eb81610670565b60008313806105045750600082135b61050d57600080fd5b600080600061051b846105d4565b92509250925061054d7f00000000000000000000000000000000000000000000000000000000000000008484846106ed565b50600080600080891361057957856001600160a01b0316856001600160a01b031610888a600003610594565b846001600160a01b0316866001600160a01b03161089896000035b92509250925082156105ab57604051818152602081fd5b600054156105c15760005481146105c157600080fd5b604051828152602081fd5b516042111590565b600080806105e28482610703565b92506105ef8460146107b3565b90506105fc846017610703565b91509193909250565b80516060906101889083906017906016190161085a565b60006106527f000000000000000000000000000000000000000000000000000000000000000061064d8686866109ab565b610a01565b949350505050565b6000600160ff1b821061066c57600080fd5b5090565b600081516020146106d9576044825110156106a65760405162461bcd60e51b815260040161069d90610e25565b60405180910390fd5b600482019150818060200190518101906106c09190610cc8565b60405162461bcd60e51b815260040161069d9190610e0b565b818060200190518101906101889190610d32565b60006102f8856106fe8686866109ab565b610ae5565b600081826014011015610752576040805162461bcd60e51b8152602060048201526012602482015271746f416464726573735f6f766572666c6f7760701b604482015290519081900360640190fd5b81601401835110156107a3576040805162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b604482015290519081900360640190fd5b500160200151600160601b900490565b600081826003011015610801576040805162461bcd60e51b8152602060048201526011602482015270746f55696e7432345f6f766572666c6f7760781b604482015290519081900360640190fd5b8160030183511015610851576040805162461bcd60e51b8152602060048201526014602482015273746f55696e7432345f6f75744f66426f756e647360601b604482015290519081900360640190fd5b50016003015190565b60608182601f0110156108a5576040805162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015290519081900360640190fd5b8282840110156108ed576040805162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015290519081900360640190fd5b81830184511015610939576040805162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b604482015290519081900360640190fd5b60608215801561095857604051915060008252602082016040526109a2565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015610991578051835260209283019201610979565b5050858452601f01601f1916604052505b50949350505050565b6109b3610b35565b826001600160a01b0316846001600160a01b031611156109d1579192915b50604080516060810182526001600160a01b03948516815292909316602083015262ffffff169181019190915290565b600081602001516001600160a01b031682600001516001600160a01b031610610a2957600080fd5b50805160208083015160409384015184516001600160a01b0394851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301206001600160f81b031960a085015294901b6bffffffffffffffffffffffff191660a183015260b58201939093527f892c854f3add4ce5e1512b197fbeaa1302d919b4bcdce8fcd62c9cb9f892581160d5808301919091528251808303909101815260f5909101909152805191012090565b6000610af18383610a01565b9050336001600160a01b03821614610188576040805162461bcd60e51b8152602060048201526002602482015261564360f01b604482015290519081900360640190fd5b604080516060810182526000808252602082018190529181019190915290565b600082601f830112610b65578081fd5b8135610b78610b7382610e7c565b610e58565b818152846020838601011115610b8c578283fd5b816020850160208301379081016020019190915292915050565b600080600080600060a08688031215610bbd578081fd5b8535610bc881610ece565b94506020860135610bd881610ece565b9350604086013562ffffff81168114610bef578182fd5b9250606086013591506080860135610c0681610ece565b809150509295509295909350565b60008060408385031215610c26578182fd5b823567ffffffffffffffff811115610c3c578283fd5b610c4885828601610b55565b95602094909401359450505050565b60008060408385031215610c69578182fd5b505080516020909101519092909150565b600080600060608486031215610c8e578283fd5b8335925060208401359150604084013567ffffffffffffffff811115610cb2578182fd5b610cbe86828701610b55565b9150509250925092565b600060208284031215610cd9578081fd5b815167ffffffffffffffff811115610cef578182fd5b8201601f81018413610cff578182fd5b8051610d0d610b7382610e7c565b818152856020838501011115610d21578384fd5b6102f8826020830160208601610e9e565b600060208284031215610d43578081fd5b5051919050565b60008151808452610d62816020860160208601610e9e565b601f01601f19169290920160200192915050565b606093841b6bffffffffffffffffffffffff19908116825260e89390931b6001600160e81b0319166014820152921b166017820152602b0190565b6001600160a01b0391909116815260200190565b6001600160a01b0386811682528515156020830152604082018590528316606082015260a060808201819052600090610e0090830184610d4a565b979650505050505050565b600060208252610e1e6020830184610d4a565b9392505050565b60208082526010908201526f2ab732bc3832b1ba32b21032b93937b960811b604082015260600190565b90815260200190565b60405181810167ffffffffffffffff81118282101715610e7457fe5b604052919050565b600067ffffffffffffffff821115610e9057fe5b50601f01601f191660200190565b60005b83811015610eb9578181015183820152602001610ea1565b83811115610ec8576000848401525b50505050565b6001600160a01b0381168114610ee357600080fd5b5056fea264697066735822122093cd6cdf9409f7eb0e3d9a6802ee5b564c3888deb822692487d001f705d3b08964736f6c63430007060033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c8063c45a01551161005b578063c45a0155146100e6578063cdca1753146100ee578063f7729d4314610101578063fb929db21461011457610088565b80632f80bb1d1461008d57806330d07f21146100b65780633119049a146100c95780634aa4a4fc146100de575b600080fd5b6100a061009b366004610c14565b610129565b6040516100ad9190610e4f565b60405180910390f35b6100a06100c4366004610ba6565b61018e565b6100d1610301565b6040516100ad9190610db1565b6100d1610325565b6100d1610349565b6100a06100fc366004610c14565b61036d565b6100a061010f366004610ba6565b6103bb565b610127610122366004610c7a565b6104f5565b005b60005b6000610137846105cc565b90506000806000610147876105d4565b92509250925061015b82848389600061018e565b955083156101735761016c87610605565b965061017f565b85945050505050610188565b5050505061012c565b92915050565b60006001600160a01b03808616878216109083166101ac5760008490555b6101b787878761061c565b6001600160a01b031663128acb0830836101d08861065a565b6000036001600160a01b038816156101e8578761020e565b856102075773fffd8963efd1fc6a506488495d951d5263988d2561020e565b6401000276a45b8b8b8e60405160200161022393929190610d76565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401610252959493929190610dc5565b6040805180830381600087803b15801561026b57600080fd5b505af192505050801561029b575060408051601f3d908101601f1916820190925261029891810190610c57565b60015b6102f4573d8080156102c9576040519150601f19603f3d011682016040523d82523d6000602084013e6102ce565b606091505b506001600160a01b0384166102e257600080555b6102eb81610670565b925050506102f8565b5050505b95945050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60005b600061037b846105cc565b9050600080600061038b876105d4565b92509250925061039f8383838960006103bb565b95508315610173576103b087610605565b965050505050610370565b60006001600160a01b03808616908716106103d787878761061c565b6001600160a01b031663128acb0830836103f08861065a565b6001600160a01b03881615610405578761042b565b856104245773fffd8963efd1fc6a506488495d951d5263988d2561042b565b6401000276a45b8c8b8d60405160200161044093929190610d76565b6040516020818303038152906040526040518663ffffffff1660e01b815260040161046f959493929190610dc5565b6040805180830381600087803b15801561048857600080fd5b505af19250505080156104b8575060408051601f3d908101601f191682019092526104b591810190610c57565b60015b6102f4573d8080156104e6576040519150601f19603f3d011682016040523d82523d6000602084013e6104eb565b606091505b506102eb81610670565b60008313806105045750600082135b61050d57600080fd5b600080600061051b846105d4565b92509250925061054d7f00000000000000000000000000000000000000000000000000000000000000008484846106ed565b50600080600080891361057957856001600160a01b0316856001600160a01b031610888a600003610594565b846001600160a01b0316866001600160a01b03161089896000035b92509250925082156105ab57604051818152602081fd5b600054156105c15760005481146105c157600080fd5b604051828152602081fd5b516042111590565b600080806105e28482610703565b92506105ef8460146107b3565b90506105fc846017610703565b91509193909250565b80516060906101889083906017906016190161085a565b60006106527f000000000000000000000000000000000000000000000000000000000000000061064d8686866109ab565b610a01565b949350505050565b6000600160ff1b821061066c57600080fd5b5090565b600081516020146106d9576044825110156106a65760405162461bcd60e51b815260040161069d90610e25565b60405180910390fd5b600482019150818060200190518101906106c09190610cc8565b60405162461bcd60e51b815260040161069d9190610e0b565b818060200190518101906101889190610d32565b60006102f8856106fe8686866109ab565b610ae5565b600081826014011015610752576040805162461bcd60e51b8152602060048201526012602482015271746f416464726573735f6f766572666c6f7760701b604482015290519081900360640190fd5b81601401835110156107a3576040805162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b604482015290519081900360640190fd5b500160200151600160601b900490565b600081826003011015610801576040805162461bcd60e51b8152602060048201526011602482015270746f55696e7432345f6f766572666c6f7760781b604482015290519081900360640190fd5b8160030183511015610851576040805162461bcd60e51b8152602060048201526014602482015273746f55696e7432345f6f75744f66426f756e647360601b604482015290519081900360640190fd5b50016003015190565b60608182601f0110156108a5576040805162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015290519081900360640190fd5b8282840110156108ed576040805162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015290519081900360640190fd5b81830184511015610939576040805162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b604482015290519081900360640190fd5b60608215801561095857604051915060008252602082016040526109a2565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015610991578051835260209283019201610979565b5050858452601f01601f1916604052505b50949350505050565b6109b3610b35565b826001600160a01b0316846001600160a01b031611156109d1579192915b50604080516060810182526001600160a01b03948516815292909316602083015262ffffff169181019190915290565b600081602001516001600160a01b031682600001516001600160a01b031610610a2957600080fd5b50805160208083015160409384015184516001600160a01b0394851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301206001600160f81b031960a085015294901b6bffffffffffffffffffffffff191660a183015260b58201939093527f892c854f3add4ce5e1512b197fbeaa1302d919b4bcdce8fcd62c9cb9f892581160d5808301919091528251808303909101815260f5909101909152805191012090565b6000610af18383610a01565b9050336001600160a01b03821614610188576040805162461bcd60e51b8152602060048201526002602482015261564360f01b604482015290519081900360640190fd5b604080516060810182526000808252602082018190529181019190915290565b600082601f830112610b65578081fd5b8135610b78610b7382610e7c565b610e58565b818152846020838601011115610b8c578283fd5b816020850160208301379081016020019190915292915050565b600080600080600060a08688031215610bbd578081fd5b8535610bc881610ece565b94506020860135610bd881610ece565b9350604086013562ffffff81168114610bef578182fd5b9250606086013591506080860135610c0681610ece565b809150509295509295909350565b60008060408385031215610c26578182fd5b823567ffffffffffffffff811115610c3c578283fd5b610c4885828601610b55565b95602094909401359450505050565b60008060408385031215610c69578182fd5b505080516020909101519092909150565b600080600060608486031215610c8e578283fd5b8335925060208401359150604084013567ffffffffffffffff811115610cb2578182fd5b610cbe86828701610b55565b9150509250925092565b600060208284031215610cd9578081fd5b815167ffffffffffffffff811115610cef578182fd5b8201601f81018413610cff578182fd5b8051610d0d610b7382610e7c565b818152856020838501011115610d21578384fd5b6102f8826020830160208601610e9e565b600060208284031215610d43578081fd5b5051919050565b60008151808452610d62816020860160208601610e9e565b601f01601f19169290920160200192915050565b606093841b6bffffffffffffffffffffffff19908116825260e89390931b6001600160e81b0319166014820152921b166017820152602b0190565b6001600160a01b0391909116815260200190565b6001600160a01b0386811682528515156020830152604082018590528316606082015260a060808201819052600090610e0090830184610d4a565b979650505050505050565b600060208252610e1e6020830184610d4a565b9392505050565b60208082526010908201526f2ab732bc3832b1ba32b21032b93937b960811b604082015260600190565b90815260200190565b60405181810167ffffffffffffffff81118282101715610e7457fe5b604052919050565b600067ffffffffffffffff821115610e9057fe5b50601f01601f191660200190565b60005b83811015610eb9578181015183820152602001610ea1565b83811115610ec8576000848401525b50505050565b6001600160a01b0381168114610ee357600080fd5b5056fea264697066735822122093cd6cdf9409f7eb0e3d9a6802ee5b564c3888deb822692487d001f705d3b08964736f6c63430007060033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
