{
  "_format": "hh-sol-artifact-1",
  "contractName": "PerpV2Quoter",
  "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": "0x608060405234801561001057600080fd5b5060405161125838038061125883398101604081905261002f9161009b565b61004b816001600160a01b031661009560201b6105f31760201c565b6100705760405162461bcd60e51b8152600401610067906100c9565b60405180910390fd5b600080546001600160a01b0319166001600160a01b03929092169190911790556100e8565b3b151590565b6000602082840312156100ac578081fd5b81516001600160a01b03811681146100c2578182fd5b9392505050565b602080825260059082015264515f414e4360d81b604082015260600190565b611161806100f76000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063542b7c9814610046578063ecb96fe61461006f578063fa461e3314610084575b600080fd5b610059610054366004610d2a565b610099565b6040516100669190610fe4565b60405180910390f35b610077610448565b6040516100669190610eb2565b610097610092366004610bb1565b610457565b005b6100a1610b15565b60008260600151116100ce5760405162461bcd60e51b81526004016100c590610f14565b60405180910390fd5b60008054835160405163033e16f360e21b81526001600160a01b0390921691630cf85bcc916100ff91600401610eb2565b60806040518083038186803b15801561011757600080fd5b505afa15801561012b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061014f9190610cb2565b9050600081600001519050600082604001519050600083602001519050600061018787602001518860400151896060015185876105fd565b509050600087604001516101a65761019e82610689565b6000036101af565b6101af82610689565b9050846001600160a01b031663128acb08308a60200151848c608001516001600160a01b03166000146101e6578c60800151610210565b8c602001516102095773fffd8963efd1fc6a506488495d951d5263988d25610210565b6401000276a45b8d516040516102229190602001610eb2565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401610251959493929190610ec6565b6040805180830381600087803b15801561026a57600080fd5b505af192505050801561029a575060408051601f3d908101601f1916820190925261029791810190610b8e565b60015b61043a573d8080156102c8576040519150601f19603f3d011682016040523d82523d6000602084013e6102cd565b606091505b5060008060006102dc846106d5565b92509250925060008060008e602001511561032f57610304858b62ffffff16620f4240610759565b925061031a610315878d6000610794565b610689565b600003915061032885610689565b9050610379565b610357620f42406103516103488862ffffff8f166107e3565b8e8e6000610845565b90610891565b925061036286610689565b9150610373610315868d6000610794565b60000390505b6040518060a0016040528061038d846108f8565b81526020016103ad6103a86103a187610689565b8590610921565b6108f8565b8152602001838152602001828152602001856001600160a01b03168152509d508e604001511580156103ea575060808f01516001600160a01b0316155b1561042e5760008f60200151610401578e51610407565b8e602001515b90508f60600151811461042c5760405162461bcd60e51b81526004016100c590610fa7565b505b5050505050505061043d565b50505b505050505050919050565b6000546001600160a01b031681565b60008313806104665750600082135b6104825760405162461bcd60e51b81526004016100c590610f51565b6000818060200190518101906104989190610b72565b6000805460405163bbe4f6db60e01b815292935090916001600160a01b039091169063bbe4f6db906104ce908590600401610eb2565b60206040518083038186803b1580156104e657600080fd5b505afa1580156104fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051e9190610b72565b9050336001600160a01b038216146105485760405162461bcd60e51b81526004016100c590610f32565b600080610554876108f8565b61055d876108f8565b915091506000836001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561059c57600080fd5b505afa1580156105b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105d49190610db2565b5050505050509050604051838152826020820152816040820152606081fd5b803b15155b919050565b600080861561062f578561061c5761061785856001610794565b610628565b61062885846001610794565b915061064a565b8561063a5784610647565b6106478584866001610845565b91505b8661065d5761065885610689565b610666565b61066682610689565b90508561067b5761067681610986565b61067d565b805b90509550959350505050565b60006001600160ff1b038211156106d15760405162461bcd60e51b81526004018080602001828103825260288152602001806110e06028913960400191505060405180910390fd5b5090565b60008060008351606014610738576044845110156107055760405162461bcd60e51b81526004016100c590610fc6565b6004840193508380602001905181019061071f9190610c3f565b60405162461bcd60e51b81526004016100c59190610f01565b8380602001905181019061074c9190610e4e565b9250925092509193909250565b60006107668484846109b2565b90506000828061077257fe5b848609111561078d57600019811061078957600080fd5b6001015b9392505050565b6000816107bf576107ba846107b1620f424062ffffff8716610a61565b620f42406109b2565b6107db565b6107db84620f42406107d68162ffffff8816610a61565b610759565b949350505050565b6000826107f25750600061083f565b828202828482816107ff57fe5b041461083c5760405162461bcd60e51b81526004018080602001828103825260218152602001806110bf6021913960400191505060405180910390fd5b90505b92915050565b600080600083610856578585610859565b84865b909250905061088687610874620f424062ffffff8616610a61565b6107d6620f424062ffffff8616610a61565b979650505050505050565b60008082116108e7576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b8183816108f057fe5b049392505050565b6000808212156109185761091361090e83610986565b610abe565b61083f565b61083f82610abe565b60008183038183128015906109365750838113155b8061094b575060008312801561094b57508381135b61083c5760405162461bcd60e51b81526004018080602001828103825260248152602001806111086024913960400191505060405180910390fd5b6000600160ff1b82136109ab5760405162461bcd60e51b81526004016100c590610f70565b5060000390565b60008080600019858709868602925082811090839003039050806109e857600084116109dd57600080fd5b50829004905061078d565b8084116109f457600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b600082821115610ab8576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000808212156106d1576040805162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f736974697665604482015290519081900360640190fd5b6040518060a001604052806000815260200160008152602001600081526020016000815260200160006001600160a01b031681525090565b805161ffff811681146105f857600080fd5b805162ffffff811681146105f857600080fd5b600060208284031215610b83578081fd5b815161083c81611098565b60008060408385031215610ba0578081fd5b505080516020909101519092909150565b600080600060608486031215610bc5578081fd5b8335925060208401359150604084013567ffffffffffffffff811115610be9578182fd5b8401601f81018613610bf9578182fd5b8035610c0c610c0782611046565b611022565b818152876020838501011115610c20578384fd5b8160208401602083013783602083830101528093505050509250925092565b600060208284031215610c50578081fd5b815167ffffffffffffffff811115610c66578182fd5b8201601f81018413610c76578182fd5b8051610c84610c0782611046565b818152856020838501011115610c98578384fd5b610ca9826020830160208601611068565b95945050505050565b600060808284031215610cc3578081fd5b6040516080810181811067ffffffffffffffff82111715610ce057fe5b6040528251610cee81611098565b8152610cfc60208401610b5f565b6020820152610d0d60408401610b5f565b6040820152610d1e60608401610b5f565b60608201529392505050565b600060a08284031215610d3b578081fd5b60405160a0810181811067ffffffffffffffff82111715610d5857fe5b6040528235610d6681611098565b81526020830135610d76816110b0565b60208201526040830135610d89816110b0565b6040820152606083810135908201526080830135610da681611098565b60808201529392505050565b600080600080600080600060e0888a031215610dcc578485fd5b8751610dd781611098565b8097505060208801518060020b8114610dee578586fd5b9550610dfc60408901610b4d565b9450610e0a60608901610b4d565b9350610e1860808901610b4d565b925060a088015160ff81168114610e2d578283fd5b60c0890151909250610e3e816110b0565b8091505092959891949750929550565b600080600060608486031215610e62578081fd5b83519250602084015191506040840151610e7b81611098565b809150509250925092565b60008151808452610e9e816020860160208601611068565b601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0386811682528515156020830152604082018590528316606082015260a06080820181905260009061088690830184610e86565b60006020825261078d6020830184610e86565b602080825260049082015263515f5a4960e01b604082015260600190565b60208082526005908201526428afa329ab60d91b604082015260600190565b602080825260059082015264515f46305360d81b604082015260600190565b6020808252601c908201527f506572704d6174683a20696e76657273696f6e206f766572666c6f7700000000604082015260600190565b602080825260059082015264515f554f4160d81b604082015260600190565b602080825260049082015263515f554560e01b604082015260600190565b815181526020808301519082015260408083015190820152606080830151908201526080918201516001600160a01b03169181019190915260a00190565b60405181810167ffffffffffffffff8111828210171561103e57fe5b604052919050565b600067ffffffffffffffff82111561105a57fe5b50601f01601f191660200190565b60005b8381101561108357818101518382015260200161106b565b83811115611092576000848401525b50505050565b6001600160a01b03811681146110ad57600080fd5b50565b80151581146110ad57600080fdfe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7753616665436173743a2076616c756520646f65736e27742066697420696e20616e20696e743235365369676e6564536166654d6174683a207375627472616374696f6e206f766572666c6f77a2646970667358221220253d5bc500f441b75df73bc62298a4eee0bbdd8b646a85bc13b017b826967c1364736f6c63430007060033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c8063542b7c9814610046578063ecb96fe61461006f578063fa461e3314610084575b600080fd5b610059610054366004610d2a565b610099565b6040516100669190610fe4565b60405180910390f35b610077610448565b6040516100669190610eb2565b610097610092366004610bb1565b610457565b005b6100a1610b15565b60008260600151116100ce5760405162461bcd60e51b81526004016100c590610f14565b60405180910390fd5b60008054835160405163033e16f360e21b81526001600160a01b0390921691630cf85bcc916100ff91600401610eb2565b60806040518083038186803b15801561011757600080fd5b505afa15801561012b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061014f9190610cb2565b9050600081600001519050600082604001519050600083602001519050600061018787602001518860400151896060015185876105fd565b509050600087604001516101a65761019e82610689565b6000036101af565b6101af82610689565b9050846001600160a01b031663128acb08308a60200151848c608001516001600160a01b03166000146101e6578c60800151610210565b8c602001516102095773fffd8963efd1fc6a506488495d951d5263988d25610210565b6401000276a45b8d516040516102229190602001610eb2565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401610251959493929190610ec6565b6040805180830381600087803b15801561026a57600080fd5b505af192505050801561029a575060408051601f3d908101601f1916820190925261029791810190610b8e565b60015b61043a573d8080156102c8576040519150601f19603f3d011682016040523d82523d6000602084013e6102cd565b606091505b5060008060006102dc846106d5565b92509250925060008060008e602001511561032f57610304858b62ffffff16620f4240610759565b925061031a610315878d6000610794565b610689565b600003915061032885610689565b9050610379565b610357620f42406103516103488862ffffff8f166107e3565b8e8e6000610845565b90610891565b925061036286610689565b9150610373610315868d6000610794565b60000390505b6040518060a0016040528061038d846108f8565b81526020016103ad6103a86103a187610689565b8590610921565b6108f8565b8152602001838152602001828152602001856001600160a01b03168152509d508e604001511580156103ea575060808f01516001600160a01b0316155b1561042e5760008f60200151610401578e51610407565b8e602001515b90508f60600151811461042c5760405162461bcd60e51b81526004016100c590610fa7565b505b5050505050505061043d565b50505b505050505050919050565b6000546001600160a01b031681565b60008313806104665750600082135b6104825760405162461bcd60e51b81526004016100c590610f51565b6000818060200190518101906104989190610b72565b6000805460405163bbe4f6db60e01b815292935090916001600160a01b039091169063bbe4f6db906104ce908590600401610eb2565b60206040518083038186803b1580156104e657600080fd5b505afa1580156104fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051e9190610b72565b9050336001600160a01b038216146105485760405162461bcd60e51b81526004016100c590610f32565b600080610554876108f8565b61055d876108f8565b915091506000836001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561059c57600080fd5b505afa1580156105b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105d49190610db2565b5050505050509050604051838152826020820152816040820152606081fd5b803b15155b919050565b600080861561062f578561061c5761061785856001610794565b610628565b61062885846001610794565b915061064a565b8561063a5784610647565b6106478584866001610845565b91505b8661065d5761065885610689565b610666565b61066682610689565b90508561067b5761067681610986565b61067d565b805b90509550959350505050565b60006001600160ff1b038211156106d15760405162461bcd60e51b81526004018080602001828103825260288152602001806110e06028913960400191505060405180910390fd5b5090565b60008060008351606014610738576044845110156107055760405162461bcd60e51b81526004016100c590610fc6565b6004840193508380602001905181019061071f9190610c3f565b60405162461bcd60e51b81526004016100c59190610f01565b8380602001905181019061074c9190610e4e565b9250925092509193909250565b60006107668484846109b2565b90506000828061077257fe5b848609111561078d57600019811061078957600080fd5b6001015b9392505050565b6000816107bf576107ba846107b1620f424062ffffff8716610a61565b620f42406109b2565b6107db565b6107db84620f42406107d68162ffffff8816610a61565b610759565b949350505050565b6000826107f25750600061083f565b828202828482816107ff57fe5b041461083c5760405162461bcd60e51b81526004018080602001828103825260218152602001806110bf6021913960400191505060405180910390fd5b90505b92915050565b600080600083610856578585610859565b84865b909250905061088687610874620f424062ffffff8616610a61565b6107d6620f424062ffffff8616610a61565b979650505050505050565b60008082116108e7576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b8183816108f057fe5b049392505050565b6000808212156109185761091361090e83610986565b610abe565b61083f565b61083f82610abe565b60008183038183128015906109365750838113155b8061094b575060008312801561094b57508381135b61083c5760405162461bcd60e51b81526004018080602001828103825260248152602001806111086024913960400191505060405180910390fd5b6000600160ff1b82136109ab5760405162461bcd60e51b81526004016100c590610f70565b5060000390565b60008080600019858709868602925082811090839003039050806109e857600084116109dd57600080fd5b50829004905061078d565b8084116109f457600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b600082821115610ab8576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000808212156106d1576040805162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f736974697665604482015290519081900360640190fd5b6040518060a001604052806000815260200160008152602001600081526020016000815260200160006001600160a01b031681525090565b805161ffff811681146105f857600080fd5b805162ffffff811681146105f857600080fd5b600060208284031215610b83578081fd5b815161083c81611098565b60008060408385031215610ba0578081fd5b505080516020909101519092909150565b600080600060608486031215610bc5578081fd5b8335925060208401359150604084013567ffffffffffffffff811115610be9578182fd5b8401601f81018613610bf9578182fd5b8035610c0c610c0782611046565b611022565b818152876020838501011115610c20578384fd5b8160208401602083013783602083830101528093505050509250925092565b600060208284031215610c50578081fd5b815167ffffffffffffffff811115610c66578182fd5b8201601f81018413610c76578182fd5b8051610c84610c0782611046565b818152856020838501011115610c98578384fd5b610ca9826020830160208601611068565b95945050505050565b600060808284031215610cc3578081fd5b6040516080810181811067ffffffffffffffff82111715610ce057fe5b6040528251610cee81611098565b8152610cfc60208401610b5f565b6020820152610d0d60408401610b5f565b6040820152610d1e60608401610b5f565b60608201529392505050565b600060a08284031215610d3b578081fd5b60405160a0810181811067ffffffffffffffff82111715610d5857fe5b6040528235610d6681611098565b81526020830135610d76816110b0565b60208201526040830135610d89816110b0565b6040820152606083810135908201526080830135610da681611098565b60808201529392505050565b600080600080600080600060e0888a031215610dcc578485fd5b8751610dd781611098565b8097505060208801518060020b8114610dee578586fd5b9550610dfc60408901610b4d565b9450610e0a60608901610b4d565b9350610e1860808901610b4d565b925060a088015160ff81168114610e2d578283fd5b60c0890151909250610e3e816110b0565b8091505092959891949750929550565b600080600060608486031215610e62578081fd5b83519250602084015191506040840151610e7b81611098565b809150509250925092565b60008151808452610e9e816020860160208601611068565b601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0386811682528515156020830152604082018590528316606082015260a06080820181905260009061088690830184610e86565b60006020825261078d6020830184610e86565b602080825260049082015263515f5a4960e01b604082015260600190565b60208082526005908201526428afa329ab60d91b604082015260600190565b602080825260059082015264515f46305360d81b604082015260600190565b6020808252601c908201527f506572704d6174683a20696e76657273696f6e206f766572666c6f7700000000604082015260600190565b602080825260059082015264515f554f4160d81b604082015260600190565b602080825260049082015263515f554560e01b604082015260600190565b815181526020808301519082015260408083015190820152606080830151908201526080918201516001600160a01b03169181019190915260a00190565b60405181810167ffffffffffffffff8111828210171561103e57fe5b604052919050565b600067ffffffffffffffff82111561105a57fe5b50601f01601f191660200190565b60005b8381101561108357818101518382015260200161106b565b83811115611092576000848401525b50505050565b6001600160a01b03811681146110ad57600080fd5b50565b80151581146110ad57600080fdfe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7753616665436173743a2076616c756520646f65736e27742066697420696e20616e20696e743235365369676e6564536166654d6174683a207375627472616374696f6e206f766572666c6f77a2646970667358221220253d5bc500f441b75df73bc62298a4eee0bbdd8b646a85bc13b017b826967c1364736f6c63430007060033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}