{
  "_format": "hh-sol-artifact-1",
  "contractName": "Quoter",
  "sourceName": "contracts/lens/Quoter.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "marketRegistryArg",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "marketRegistry",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "baseToken",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "isBaseToQuote",
              "type": "bool"
            },
            {
              "internalType": "bool",
              "name": "isExactInput",
              "type": "bool"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "internalType": "uint160",
              "name": "sqrtPriceLimitX96",
              "type": "uint160"
            }
          ],
          "internalType": "struct Quoter.SwapParams",
          "name": "params",
          "type": "tuple"
        }
      ],
      "name": "swap",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "deltaAvailableBase",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "deltaAvailableQuote",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "exchangedPositionSize",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "exchangedPositionNotional",
              "type": "int256"
            },
            {
              "internalType": "uint160",
              "name": "sqrtPriceX96",
              "type": "uint160"
            }
          ],
          "internalType": "struct Quoter.SwapResponse",
          "name": "response",
          "type": "tuple"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "int256",
          "name": "amount0Delta",
          "type": "int256"
        },
        {
          "internalType": "int256",
          "name": "amount1Delta",
          "type": "int256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "uniswapV3SwapCallback",
      "outputs": [],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b5060405161127e38038061127e83398101604081905261002f9161009b565b61004b816001600160a01b031661009560201b6106191760201c565b6100705760405162461bcd60e51b8152600401610067906100c9565b60405180910390fd5b600080546001600160a01b0319166001600160a01b03929092169190911790556100e8565b3b151590565b6000602082840312156100ac578081fd5b81516001600160a01b03811681146100c2578182fd5b9392505050565b602080825260059082015264515f414e4360d81b604082015260600190565b611187806100f76000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063542b7c9814610046578063ecb96fe61461006f578063fa461e3314610084575b600080fd5b610059610054366004610d50565b610099565b604051610066919061100a565b60405180910390f35b61007761046e565b6040516100669190610ed8565b610097610092366004610bd7565b61047d565b005b6100a1610b3b565b60008260600151116100ce5760405162461bcd60e51b81526004016100c590610f3a565b60405180910390fd5b60008054835160405163033e16f360e21b81526001600160a01b0390921691630cf85bcc916100ff91600401610ed8565b60806040518083038186803b15801561011757600080fd5b505afa15801561012b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061014f9190610cd8565b9050600081604001519050600082602001519050600061017e8660200151876040015188606001518587610623565b5090506000866040015161019d57610195826106af565b6000036101a6565b6101a6826106af565b905084600001516001600160a01b031663128acb08308960200151848b608001516001600160a01b03166000146101e1578b6080015161020b565b8b602001516102045773fffd8963efd1fc6a506488495d951d5263988d2561020b565b6401000276a45b8c5160405161021d9190602001610ed8565b6040516020818303038152906040526040518663ffffffff1660e01b815260040161024c959493929190610eec565b6040805180830381600087803b15801561026557600080fd5b505af1925050508015610295575060408051601f3d908101601f1916820190925261029291810190610bb4565b60015b610461573d8080156102c3576040519150601f19603f3d011682016040523d82523d6000602084013e6102c8565b606091505b5060008060006102d7846106fb565b92509250925060008060008d602001511561032a576102ff858b62ffffff16620f424061077f565b9250610315610310878d60006107ba565b6106af565b6000039150610323856106af565b9050610374565b610352620f424061034c6103438862ffffff8f16610809565b8e8e600061086b565b906108b7565b925061035d866106af565b915061036e610310868d60006107ba565b60000390505b6040518060a001604052806103888461091e565b81526020016103a86103a361039c876106af565b8590610947565b61091e565b8152602001838152602001828152602001856001600160a01b03168152509c5050505050505087604001511580156103eb575060808801516001600160a01b0316155b1561045b5760008860200151610402578751610408565b87602001515b90506103e88960600151821161042c5760608a015161042790836109ac565b61043c565b60608a015161043c9083906109ac565b106104595760405162461bcd60e51b81526004016100c590610fcd565b505b50610464565b50505b5050505050919050565b6000546001600160a01b031681565b600083138061048c5750600082135b6104a85760405162461bcd60e51b81526004016100c590610f77565b6000818060200190518101906104be9190610b98565b6000805460405163bbe4f6db60e01b815292935090916001600160a01b039091169063bbe4f6db906104f4908590600401610ed8565b60206040518083038186803b15801561050c57600080fd5b505afa158015610520573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105449190610b98565b9050336001600160a01b0382161461056e5760405162461bcd60e51b81526004016100c590610f58565b60008061057a8761091e565b6105838761091e565b915091506000836001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b1580156105c257600080fd5b505afa1580156105d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105fa9190610dd8565b5050505050509050604051838152826020820152816040820152606081fd5b803b15155b919050565b600080861561065557856106425761063d858560016107ba565b61064e565b61064e858460016107ba565b9150610670565b85610660578461066d565b61066d858486600161086b565b91505b866106835761067e856106af565b61068c565b61068c826106af565b9050856106a15761069c81610a09565b6106a3565b805b90509550959350505050565b60006001600160ff1b038211156106f75760405162461bcd60e51b81526004018080602001828103825260288152602001806111066028913960400191505060405180910390fd5b5090565b6000806000835160601461075e5760448451101561072b5760405162461bcd60e51b81526004016100c590610fec565b600484019350838060200190518101906107459190610c65565b60405162461bcd60e51b81526004016100c59190610f27565b838060200190518101906107729190610e74565b9250925092509193909250565b600061078c848484610a35565b90506000828061079857fe5b84860911156107b35760001981106107af57600080fd5b6001015b9392505050565b6000816107e5576107e0846107d7620f424062ffffff87166109ac565b620f4240610a35565b610801565b61080184620f42406107fc8162ffffff88166109ac565b61077f565b949350505050565b60008261081857506000610865565b8282028284828161082557fe5b04146108625760405162461bcd60e51b81526004018080602001828103825260218152602001806110e56021913960400191505060405180910390fd5b90505b92915050565b60008060008361087c57858561087f565b84865b90925090506108ac8761089a620f424062ffffff86166109ac565b6107fc620f424062ffffff86166109ac565b979650505050505050565b600080821161090d576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b81838161091657fe5b049392505050565b60008082121561093e5761093961093483610a09565b610ae4565b610865565b61086582610ae4565b600081830381831280159061095c5750838113155b80610971575060008312801561097157508381135b6108625760405162461bcd60e51b815260040180806020018281038252602481526020018061112e6024913960400191505060405180910390fd5b600082821115610a03576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000600160ff1b8213610a2e5760405162461bcd60e51b81526004016100c590610f96565b5060000390565b6000808060001985870986860292508281109083900303905080610a6b5760008411610a6057600080fd5b5082900490506107b3565b808411610a7757600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b6000808212156106f7576040805162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f736974697665604482015290519081900360640190fd5b6040518060a001604052806000815260200160008152602001600081526020016000815260200160006001600160a01b031681525090565b805161ffff8116811461061e57600080fd5b805162ffffff8116811461061e57600080fd5b600060208284031215610ba9578081fd5b8151610862816110be565b60008060408385031215610bc6578081fd5b505080516020909101519092909150565b600080600060608486031215610beb578081fd5b8335925060208401359150604084013567ffffffffffffffff811115610c0f578182fd5b8401601f81018613610c1f578182fd5b8035610c32610c2d8261106c565b611048565b818152876020838501011115610c46578384fd5b8160208401602083013783602083830101528093505050509250925092565b600060208284031215610c76578081fd5b815167ffffffffffffffff811115610c8c578182fd5b8201601f81018413610c9c578182fd5b8051610caa610c2d8261106c565b818152856020838501011115610cbe578384fd5b610ccf82602083016020860161108e565b95945050505050565b600060808284031215610ce9578081fd5b6040516080810181811067ffffffffffffffff82111715610d0657fe5b6040528251610d14816110be565b8152610d2260208401610b85565b6020820152610d3360408401610b85565b6040820152610d4460608401610b85565b60608201529392505050565b600060a08284031215610d61578081fd5b60405160a0810181811067ffffffffffffffff82111715610d7e57fe5b6040528235610d8c816110be565b81526020830135610d9c816110d6565b60208201526040830135610daf816110d6565b6040820152606083810135908201526080830135610dcc816110be565b60808201529392505050565b600080600080600080600060e0888a031215610df2578485fd5b8751610dfd816110be565b8097505060208801518060020b8114610e14578586fd5b9550610e2260408901610b73565b9450610e3060608901610b73565b9350610e3e60808901610b73565b925060a088015160ff81168114610e53578283fd5b60c0890151909250610e64816110d6565b8091505092959891949750929550565b600080600060608486031215610e88578081fd5b83519250602084015191506040840151610ea1816110be565b809150509250925092565b60008151808452610ec481602086016020860161108e565b601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0386811682528515156020830152604082018590528316606082015260a0608082018190526000906108ac90830184610eac565b6000602082526107b36020830184610eac565b602080825260049082015263515f5a4960e01b604082015260600190565b60208082526005908201526428afa329ab60d91b604082015260600190565b602080825260059082015264515f46305360d81b604082015260600190565b6020808252601c908201527f506572704d6174683a20696e76657273696f6e206f766572666c6f7700000000604082015260600190565b602080825260059082015264515f554f4160d81b604082015260600190565b602080825260049082015263515f554560e01b604082015260600190565b815181526020808301519082015260408083015190820152606080830151908201526080918201516001600160a01b03169181019190915260a00190565b60405181810167ffffffffffffffff8111828210171561106457fe5b604052919050565b600067ffffffffffffffff82111561108057fe5b50601f01601f191660200190565b60005b838110156110a9578181015183820152602001611091565b838111156110b8576000848401525b50505050565b6001600160a01b03811681146110d357600080fd5b50565b80151581146110d357600080fdfe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7753616665436173743a2076616c756520646f65736e27742066697420696e20616e20696e743235365369676e6564536166654d6174683a207375627472616374696f6e206f766572666c6f77a2646970667358221220d35f608240a962b366fa044a8b596f28811b4c5909ea472de07e28a3fd23c48764736f6c63430007060033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c8063542b7c9814610046578063ecb96fe61461006f578063fa461e3314610084575b600080fd5b610059610054366004610d50565b610099565b604051610066919061100a565b60405180910390f35b61007761046e565b6040516100669190610ed8565b610097610092366004610bd7565b61047d565b005b6100a1610b3b565b60008260600151116100ce5760405162461bcd60e51b81526004016100c590610f3a565b60405180910390fd5b60008054835160405163033e16f360e21b81526001600160a01b0390921691630cf85bcc916100ff91600401610ed8565b60806040518083038186803b15801561011757600080fd5b505afa15801561012b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061014f9190610cd8565b9050600081604001519050600082602001519050600061017e8660200151876040015188606001518587610623565b5090506000866040015161019d57610195826106af565b6000036101a6565b6101a6826106af565b905084600001516001600160a01b031663128acb08308960200151848b608001516001600160a01b03166000146101e1578b6080015161020b565b8b602001516102045773fffd8963efd1fc6a506488495d951d5263988d2561020b565b6401000276a45b8c5160405161021d9190602001610ed8565b6040516020818303038152906040526040518663ffffffff1660e01b815260040161024c959493929190610eec565b6040805180830381600087803b15801561026557600080fd5b505af1925050508015610295575060408051601f3d908101601f1916820190925261029291810190610bb4565b60015b610461573d8080156102c3576040519150601f19603f3d011682016040523d82523d6000602084013e6102c8565b606091505b5060008060006102d7846106fb565b92509250925060008060008d602001511561032a576102ff858b62ffffff16620f424061077f565b9250610315610310878d60006107ba565b6106af565b6000039150610323856106af565b9050610374565b610352620f424061034c6103438862ffffff8f16610809565b8e8e600061086b565b906108b7565b925061035d866106af565b915061036e610310868d60006107ba565b60000390505b6040518060a001604052806103888461091e565b81526020016103a86103a361039c876106af565b8590610947565b61091e565b8152602001838152602001828152602001856001600160a01b03168152509c5050505050505087604001511580156103eb575060808801516001600160a01b0316155b1561045b5760008860200151610402578751610408565b87602001515b90506103e88960600151821161042c5760608a015161042790836109ac565b61043c565b60608a015161043c9083906109ac565b106104595760405162461bcd60e51b81526004016100c590610fcd565b505b50610464565b50505b5050505050919050565b6000546001600160a01b031681565b600083138061048c5750600082135b6104a85760405162461bcd60e51b81526004016100c590610f77565b6000818060200190518101906104be9190610b98565b6000805460405163bbe4f6db60e01b815292935090916001600160a01b039091169063bbe4f6db906104f4908590600401610ed8565b60206040518083038186803b15801561050c57600080fd5b505afa158015610520573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105449190610b98565b9050336001600160a01b0382161461056e5760405162461bcd60e51b81526004016100c590610f58565b60008061057a8761091e565b6105838761091e565b915091506000836001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b1580156105c257600080fd5b505afa1580156105d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105fa9190610dd8565b5050505050509050604051838152826020820152816040820152606081fd5b803b15155b919050565b600080861561065557856106425761063d858560016107ba565b61064e565b61064e858460016107ba565b9150610670565b85610660578461066d565b61066d858486600161086b565b91505b866106835761067e856106af565b61068c565b61068c826106af565b9050856106a15761069c81610a09565b6106a3565b805b90509550959350505050565b60006001600160ff1b038211156106f75760405162461bcd60e51b81526004018080602001828103825260288152602001806111066028913960400191505060405180910390fd5b5090565b6000806000835160601461075e5760448451101561072b5760405162461bcd60e51b81526004016100c590610fec565b600484019350838060200190518101906107459190610c65565b60405162461bcd60e51b81526004016100c59190610f27565b838060200190518101906107729190610e74565b9250925092509193909250565b600061078c848484610a35565b90506000828061079857fe5b84860911156107b35760001981106107af57600080fd5b6001015b9392505050565b6000816107e5576107e0846107d7620f424062ffffff87166109ac565b620f4240610a35565b610801565b61080184620f42406107fc8162ffffff88166109ac565b61077f565b949350505050565b60008261081857506000610865565b8282028284828161082557fe5b04146108625760405162461bcd60e51b81526004018080602001828103825260218152602001806110e56021913960400191505060405180910390fd5b90505b92915050565b60008060008361087c57858561087f565b84865b90925090506108ac8761089a620f424062ffffff86166109ac565b6107fc620f424062ffffff86166109ac565b979650505050505050565b600080821161090d576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b81838161091657fe5b049392505050565b60008082121561093e5761093961093483610a09565b610ae4565b610865565b61086582610ae4565b600081830381831280159061095c5750838113155b80610971575060008312801561097157508381135b6108625760405162461bcd60e51b815260040180806020018281038252602481526020018061112e6024913960400191505060405180910390fd5b600082821115610a03576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000600160ff1b8213610a2e5760405162461bcd60e51b81526004016100c590610f96565b5060000390565b6000808060001985870986860292508281109083900303905080610a6b5760008411610a6057600080fd5b5082900490506107b3565b808411610a7757600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b6000808212156106f7576040805162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f736974697665604482015290519081900360640190fd5b6040518060a001604052806000815260200160008152602001600081526020016000815260200160006001600160a01b031681525090565b805161ffff8116811461061e57600080fd5b805162ffffff8116811461061e57600080fd5b600060208284031215610ba9578081fd5b8151610862816110be565b60008060408385031215610bc6578081fd5b505080516020909101519092909150565b600080600060608486031215610beb578081fd5b8335925060208401359150604084013567ffffffffffffffff811115610c0f578182fd5b8401601f81018613610c1f578182fd5b8035610c32610c2d8261106c565b611048565b818152876020838501011115610c46578384fd5b8160208401602083013783602083830101528093505050509250925092565b600060208284031215610c76578081fd5b815167ffffffffffffffff811115610c8c578182fd5b8201601f81018413610c9c578182fd5b8051610caa610c2d8261106c565b818152856020838501011115610cbe578384fd5b610ccf82602083016020860161108e565b95945050505050565b600060808284031215610ce9578081fd5b6040516080810181811067ffffffffffffffff82111715610d0657fe5b6040528251610d14816110be565b8152610d2260208401610b85565b6020820152610d3360408401610b85565b6040820152610d4460608401610b85565b60608201529392505050565b600060a08284031215610d61578081fd5b60405160a0810181811067ffffffffffffffff82111715610d7e57fe5b6040528235610d8c816110be565b81526020830135610d9c816110d6565b60208201526040830135610daf816110d6565b6040820152606083810135908201526080830135610dcc816110be565b60808201529392505050565b600080600080600080600060e0888a031215610df2578485fd5b8751610dfd816110be565b8097505060208801518060020b8114610e14578586fd5b9550610e2260408901610b73565b9450610e3060608901610b73565b9350610e3e60808901610b73565b925060a088015160ff81168114610e53578283fd5b60c0890151909250610e64816110d6565b8091505092959891949750929550565b600080600060608486031215610e88578081fd5b83519250602084015191506040840151610ea1816110be565b809150509250925092565b60008151808452610ec481602086016020860161108e565b601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0386811682528515156020830152604082018590528316606082015260a0608082018190526000906108ac90830184610eac565b6000602082526107b36020830184610eac565b602080825260049082015263515f5a4960e01b604082015260600190565b60208082526005908201526428afa329ab60d91b604082015260600190565b602080825260059082015264515f46305360d81b604082015260600190565b6020808252601c908201527f506572704d6174683a20696e76657273696f6e206f766572666c6f7700000000604082015260600190565b602080825260059082015264515f554f4160d81b604082015260600190565b602080825260049082015263515f554560e01b604082015260600190565b815181526020808301519082015260408083015190820152606080830151908201526080918201516001600160a01b03169181019190915260a00190565b60405181810167ffffffffffffffff8111828210171561106457fe5b604052919050565b600067ffffffffffffffff82111561108057fe5b50601f01601f191660200190565b60005b838110156110a9578181015183820152602001611091565b838111156110b8576000848401525b50505050565b6001600160a01b03811681146110d357600080fd5b50565b80151581146110d357600080fdfe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7753616665436173743a2076616c756520646f65736e27742066697420696e20616e20696e743235365369676e6564536166654d6174683a207375627472616374696f6e206f766572666c6f77a2646970667358221220d35f608240a962b366fa044a8b596f28811b4c5909ea472de07e28a3fd23c48764736f6c63430007060033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
