{
  "_format": "hh-sol-artifact-1",
  "contractName": "PendleMarketReader",
  "sourceName": "contracts/readers/PendleMarketReader.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract IPendleData",
          "name": "_data",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "data",
      "outputs": [
        {
          "internalType": "contract IPendleData",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_tokenIn",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_tokenOut",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_inSwapAmount",
          "type": "uint256"
        },
        {
          "internalType": "bytes32",
          "name": "_marketFactoryId",
          "type": "bytes32"
        }
      ],
      "name": "getMarketRateExactIn",
      "outputs": [
        {
          "internalType": "address",
          "name": "market",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "outSwapAmount",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_tokenIn",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_tokenOut",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_outSwapAmount",
          "type": "uint256"
        },
        {
          "internalType": "bytes32",
          "name": "_marketFactoryId",
          "type": "bytes32"
        }
      ],
      "name": "getMarketRateExactOut",
      "outputs": [
        {
          "internalType": "address",
          "name": "market",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "inSwapAmount",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_marketFactoryId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "_xyt",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        }
      ],
      "name": "getMarketReserves",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "xytBalance",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "tokenBalance",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "lastUpdatedBlock",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_market",
          "type": "address"
        }
      ],
      "name": "getMarketTokenAddresses",
      "outputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "xyt",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b5060405161137438038061137483398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610082565b600060208284031215610065578081fd5b81516001600160a01b038116811461007b578182fd5b9392505050565b6112e3806100916000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c806346e0a2801461005c5780635f5a6c941461008657806373d4a13a146100a7578063c649c865146100bc578063f277c8c9146100de575b600080fd5b61006f61006a366004611044565b6100f1565b60405161007d929190611159565b60405180910390f35b61009961009436600461107c565b610214565b60405161007d929190611197565b6100af6102e6565b60405161007d91906111cf565b6100cf6100ca3660046110c1565b6102f5565b60405161007d9392919061125e565b6100996100ec36600461107c565b610429565b6000806001600160a01b0383166101235760405162461bcd60e51b815260040161011a90611234565b60405180910390fd5b6000839050806001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b15801561016157600080fd5b505afa158015610175573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101999190611060565b9250806001600160a01b0316630d9b13d96040518163ffffffff1660e01b815260040160206040518083038186803b1580156101d457600080fd5b505afa1580156101e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061020c9190611060565b915050915091565b6000805460405163b4238f4960e01b815282916001600160a01b03169063b4238f499061024990899089908890600401611173565b60206040518083038186803b15801561026157600080fd5b505afa158015610275573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102999190611060565b91506001600160a01b0382166102c15760405162461bcd60e51b815260040161011a90611234565b60006102ce8787856104ef565b90506102da8582610766565b91505094509492505050565b6000546001600160a01b031681565b6000805460405163473e7bb360e11b81528291829182916001600160a01b031690638e7cf7669061032e908a908a908a906004016111b0565b60206040518083038186803b15801561034657600080fd5b505afa15801561035a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061037e9190611060565b90506001600160a01b0381166103a65760405162461bcd60e51b815260040161011a90611234565b806001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160a06040518083038186803b1580156103df57600080fd5b505afa1580156103f3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610417919061111a565b939b919a509298509650505050505050565b6000805460405163b4238f4960e01b815282916001600160a01b03169063b4238f499061045e90899089908890600401611173565b60206040518083038186803b15801561047657600080fd5b505afa15801561048a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ae9190611060565b91506001600160a01b0382166104d65760405162461bcd60e51b815260040161011a90611234565b60006104e38787856104ef565b90506102da8582610828565b6104f7610fe4565b60008290506000816001600160a01b0316630d9b13d96040518163ffffffff1660e01b815260040160206040518083038186803b15801561053757600080fd5b505afa15801561054b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061056f9190611060565b826001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b1580156105a857600080fd5b505afa1580156105bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e09190611060565b915050600080600080856001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160a06040518083038186803b15801561062257600080fd5b505afa158015610636573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065a919061111a565b509350935093509350846001600160a01b03168a6001600160a01b0316141561068257909290915b600061068f8484846108e1565b905060006040518060e0016040528087815260200186815260200185815260200184815260200160008054906101000a90046001600160a01b03166001600160a01b03166354cf2aeb6040518163ffffffff1660e01b815260040160206040518083038186803b15801561070257600080fd5b505afa158015610716573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073a9190611102565b81526020018381526020018b6001600160a01b0316815250905080985050505050505050509392505050565b600061077061102a565b61077861102a565b8351602080840191909152808501518352604080860151838301526060860151835260005481516354cf2aeb60e01b8152915161081f93869386938b936001600160a01b03909116926354cf2aeb9260048082019391829003018186803b1580156107e257600080fd5b505afa1580156107f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081a9190611102565b61091e565b95945050505050565b600061083261102a565b61083a61102a565b8351602080840191909152808501518352604080860151838301526060860151835260005481516354cf2aeb60e01b8152915161081f93869386938b936001600160a01b03909116926354cf2aeb9260048082019391829003018186803b1580156108a457600080fd5b505afa1580156108b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108dc9190611102565b6109b4565b6000610916600160281b61090a856109106108fc878a610a43565b61090a8a600160281b610aa6565b90610aff565b90610aa6565b949350505050565b60008061093385600001518760000151610b66565b9050600061094e858760200151610b8890919063ffffffff16565b90506000610960876020015183610b66565b9050600061096e8285610be5565b905061097e81600160281b610b88565b905061098e600160281b87610b88565b94506109a76109a18a6020015183610cb1565b86610b66565b9998505050505050505050565b6000806109c986600001518660000151610b66565b905060006109db600160281b85610b88565b90506109e78582610cb1565b6020880151909150600090610a0590610a008185610a43565b610b66565b90506000610a138285610be5565b90506000610a25600160281b83610b88565b9050610a35896020015182610cb1565b9a9950505050505050505050565b600082820183811015610a9d576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b90505b92915050565b600082610ab557506000610aa0565b82820282848281610ac257fe5b0414610a9d5760405162461bcd60e51b815260040180806020018281038252602181526020018061128d6021913960400191505060405180910390fd5b6000808211610b55576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381610b5e57fe5b049392505050565b6000610a9d8261090a610b7d86600160281b610aa6565b6002865b0490610a43565b600082821115610bdf576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600081610bf75750600160281b610aa0565b82610c0457506000610aa0565b6000610c0f83610cd4565b90508083036000610c2886610c2384610cde565b610ce8565b90506000600160281b871015610c79576000610c5e85610c59610c4f600160281b8c610b66565b600160281b610d3b565b610cb1565b9050610c71600160281b610a0083610d9d565b915050610c9c565b6000610c8d85610c598a600160281b610d3b565b9050610c9881610d9d565b9150505b610ca68282610cb1565b979650505050505050565b6000610a9d600160281b61090a610cc88686610aa6565b6002600160281b610b81565b64ffffffffff1690565b600160281b900490565b60008060028306610cfd57600160281b610cff565b835b90506002830492505b8215610a9d57610d188485610cb1565b93506002830615610d3057610d2d8185610cb1565b90505b600283049250610d08565b6000690177c17eb2ae5edd211c69021e19e0c9bab240000082610d5e8686610dfe565b9050610d6a8382610f05565b15610d875760405162461bcd60e51b815260040161011a906111e3565b8181840281610d9257fe5b049695505050505050565b600080600160281b815b91810191610dbf82610c5987610a0060018601610f2a565b915081610dcb57610df5565b806101f41415610ded5760405162461bcd60e51b815260040161011a90611207565b600101610da7565b50909392505050565b60008082841115610e1657610e138484610f33565b90505b600160c81b600160281b82021115610e405760405162461bcd60e51b815260040161011a906111e3565b610e4e84600160281b610f05565b15610e6b5760405162461bcd60e51b815260040161011a906111e3565b610e7981600160281b610f05565b15610e965760405162461bcd60e51b815260040161011a906111e3565b610ea36001821b84610f05565b15610ec05760405162461bcd60e51b815260040161011a906111e3565b600083821b600160281b860281610ed357fe5b0490506000610ee182610f66565b9050600160c81b811115610ef157fe5b600160281b92909202909101949350505050565b600081610f1457506000610aa0565b828283850281610f2057fe5b0414159392505050565b600160281b0290565b60008080838581610f4057fe5b0490505b8015610f5a576001919091019060029004610f44565b50600019019392505050565b600080600160281b6502000000000081808610801590610f8557508186105b610fa15760405162461bcd60e51b815260040161011a906111e3565b60285b8015610fd9578387880281610fb557fe5b049650600282049150828710610fd057600287049650938101935b60001901610fa4565b509295945050505050565b6040518060e0016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b031681525090565b604051806040016040528060008152602001600081525090565b600060208284031215611055578081fd5b8135610a9d81611274565b600060208284031215611071578081fd5b8151610a9d81611274565b60008060008060808587031215611091578283fd5b843561109c81611274565b935060208501356110ac81611274565b93969395505050506040820135916060013590565b6000806000606084860312156110d5578283fd5b8335925060208401356110e781611274565b915060408401356110f781611274565b809150509250925092565b600060208284031215611113578081fd5b5051919050565b600080600080600060a08688031215611131578081fd5b5050835160208501516040860151606087015160809097015192989197509594509092509050565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b9283526001600160a01b03918216602084015216604082015260600190565b6001600160a01b0391909116815260200190565b6020808252600a908201526926a0aa242fa2a92927a960b11b604082015260600190565b60208082526013908201527252504f57455f534c4f575f434f4e564552474560681b604082015260600190565b60208082526010908201526f13505492d15517d393d517d193d5539160821b604082015260600190565b9283526020830191909152604082015260600190565b6001600160a01b038116811461128957600080fd5b5056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212204dd2043ca2f1b02b93de0f27c6adbc616456468be5ad60caaabc1ee52ede00f964736f6c63430007060033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100575760003560e01c806346e0a2801461005c5780635f5a6c941461008657806373d4a13a146100a7578063c649c865146100bc578063f277c8c9146100de575b600080fd5b61006f61006a366004611044565b6100f1565b60405161007d929190611159565b60405180910390f35b61009961009436600461107c565b610214565b60405161007d929190611197565b6100af6102e6565b60405161007d91906111cf565b6100cf6100ca3660046110c1565b6102f5565b60405161007d9392919061125e565b6100996100ec36600461107c565b610429565b6000806001600160a01b0383166101235760405162461bcd60e51b815260040161011a90611234565b60405180910390fd5b6000839050806001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b15801561016157600080fd5b505afa158015610175573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101999190611060565b9250806001600160a01b0316630d9b13d96040518163ffffffff1660e01b815260040160206040518083038186803b1580156101d457600080fd5b505afa1580156101e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061020c9190611060565b915050915091565b6000805460405163b4238f4960e01b815282916001600160a01b03169063b4238f499061024990899089908890600401611173565b60206040518083038186803b15801561026157600080fd5b505afa158015610275573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102999190611060565b91506001600160a01b0382166102c15760405162461bcd60e51b815260040161011a90611234565b60006102ce8787856104ef565b90506102da8582610766565b91505094509492505050565b6000546001600160a01b031681565b6000805460405163473e7bb360e11b81528291829182916001600160a01b031690638e7cf7669061032e908a908a908a906004016111b0565b60206040518083038186803b15801561034657600080fd5b505afa15801561035a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061037e9190611060565b90506001600160a01b0381166103a65760405162461bcd60e51b815260040161011a90611234565b806001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160a06040518083038186803b1580156103df57600080fd5b505afa1580156103f3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610417919061111a565b939b919a509298509650505050505050565b6000805460405163b4238f4960e01b815282916001600160a01b03169063b4238f499061045e90899089908890600401611173565b60206040518083038186803b15801561047657600080fd5b505afa15801561048a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ae9190611060565b91506001600160a01b0382166104d65760405162461bcd60e51b815260040161011a90611234565b60006104e38787856104ef565b90506102da8582610828565b6104f7610fe4565b60008290506000816001600160a01b0316630d9b13d96040518163ffffffff1660e01b815260040160206040518083038186803b15801561053757600080fd5b505afa15801561054b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061056f9190611060565b826001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b1580156105a857600080fd5b505afa1580156105bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e09190611060565b915050600080600080856001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160a06040518083038186803b15801561062257600080fd5b505afa158015610636573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065a919061111a565b509350935093509350846001600160a01b03168a6001600160a01b0316141561068257909290915b600061068f8484846108e1565b905060006040518060e0016040528087815260200186815260200185815260200184815260200160008054906101000a90046001600160a01b03166001600160a01b03166354cf2aeb6040518163ffffffff1660e01b815260040160206040518083038186803b15801561070257600080fd5b505afa158015610716573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073a9190611102565b81526020018381526020018b6001600160a01b0316815250905080985050505050505050509392505050565b600061077061102a565b61077861102a565b8351602080840191909152808501518352604080860151838301526060860151835260005481516354cf2aeb60e01b8152915161081f93869386938b936001600160a01b03909116926354cf2aeb9260048082019391829003018186803b1580156107e257600080fd5b505afa1580156107f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081a9190611102565b61091e565b95945050505050565b600061083261102a565b61083a61102a565b8351602080840191909152808501518352604080860151838301526060860151835260005481516354cf2aeb60e01b8152915161081f93869386938b936001600160a01b03909116926354cf2aeb9260048082019391829003018186803b1580156108a457600080fd5b505afa1580156108b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108dc9190611102565b6109b4565b6000610916600160281b61090a856109106108fc878a610a43565b61090a8a600160281b610aa6565b90610aff565b90610aa6565b949350505050565b60008061093385600001518760000151610b66565b9050600061094e858760200151610b8890919063ffffffff16565b90506000610960876020015183610b66565b9050600061096e8285610be5565b905061097e81600160281b610b88565b905061098e600160281b87610b88565b94506109a76109a18a6020015183610cb1565b86610b66565b9998505050505050505050565b6000806109c986600001518660000151610b66565b905060006109db600160281b85610b88565b90506109e78582610cb1565b6020880151909150600090610a0590610a008185610a43565b610b66565b90506000610a138285610be5565b90506000610a25600160281b83610b88565b9050610a35896020015182610cb1565b9a9950505050505050505050565b600082820183811015610a9d576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b90505b92915050565b600082610ab557506000610aa0565b82820282848281610ac257fe5b0414610a9d5760405162461bcd60e51b815260040180806020018281038252602181526020018061128d6021913960400191505060405180910390fd5b6000808211610b55576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381610b5e57fe5b049392505050565b6000610a9d8261090a610b7d86600160281b610aa6565b6002865b0490610a43565b600082821115610bdf576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600081610bf75750600160281b610aa0565b82610c0457506000610aa0565b6000610c0f83610cd4565b90508083036000610c2886610c2384610cde565b610ce8565b90506000600160281b871015610c79576000610c5e85610c59610c4f600160281b8c610b66565b600160281b610d3b565b610cb1565b9050610c71600160281b610a0083610d9d565b915050610c9c565b6000610c8d85610c598a600160281b610d3b565b9050610c9881610d9d565b9150505b610ca68282610cb1565b979650505050505050565b6000610a9d600160281b61090a610cc88686610aa6565b6002600160281b610b81565b64ffffffffff1690565b600160281b900490565b60008060028306610cfd57600160281b610cff565b835b90506002830492505b8215610a9d57610d188485610cb1565b93506002830615610d3057610d2d8185610cb1565b90505b600283049250610d08565b6000690177c17eb2ae5edd211c69021e19e0c9bab240000082610d5e8686610dfe565b9050610d6a8382610f05565b15610d875760405162461bcd60e51b815260040161011a906111e3565b8181840281610d9257fe5b049695505050505050565b600080600160281b815b91810191610dbf82610c5987610a0060018601610f2a565b915081610dcb57610df5565b806101f41415610ded5760405162461bcd60e51b815260040161011a90611207565b600101610da7565b50909392505050565b60008082841115610e1657610e138484610f33565b90505b600160c81b600160281b82021115610e405760405162461bcd60e51b815260040161011a906111e3565b610e4e84600160281b610f05565b15610e6b5760405162461bcd60e51b815260040161011a906111e3565b610e7981600160281b610f05565b15610e965760405162461bcd60e51b815260040161011a906111e3565b610ea36001821b84610f05565b15610ec05760405162461bcd60e51b815260040161011a906111e3565b600083821b600160281b860281610ed357fe5b0490506000610ee182610f66565b9050600160c81b811115610ef157fe5b600160281b92909202909101949350505050565b600081610f1457506000610aa0565b828283850281610f2057fe5b0414159392505050565b600160281b0290565b60008080838581610f4057fe5b0490505b8015610f5a576001919091019060029004610f44565b50600019019392505050565b600080600160281b6502000000000081808610801590610f8557508186105b610fa15760405162461bcd60e51b815260040161011a906111e3565b60285b8015610fd9578387880281610fb557fe5b049650600282049150828710610fd057600287049650938101935b60001901610fa4565b509295945050505050565b6040518060e0016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b031681525090565b604051806040016040528060008152602001600081525090565b600060208284031215611055578081fd5b8135610a9d81611274565b600060208284031215611071578081fd5b8151610a9d81611274565b60008060008060808587031215611091578283fd5b843561109c81611274565b935060208501356110ac81611274565b93969395505050506040820135916060013590565b6000806000606084860312156110d5578283fd5b8335925060208401356110e781611274565b915060408401356110f781611274565b809150509250925092565b600060208284031215611113578081fd5b5051919050565b600080600080600060a08688031215611131578081fd5b5050835160208501516040860151606087015160809097015192989197509594509092509050565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b9283526001600160a01b03918216602084015216604082015260600190565b6001600160a01b0391909116815260200190565b6020808252600a908201526926a0aa242fa2a92927a960b11b604082015260600190565b60208082526013908201527252504f57455f534c4f575f434f4e564552474560681b604082015260600190565b60208082526010908201526f13505492d15517d393d517d193d5539160821b604082015260600190565b9283526020830191909152604082015260600190565b6001600160a01b038116811461128957600080fd5b5056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212204dd2043ca2f1b02b93de0f27c6adbc616456468be5ad60caaabc1ee52ede00f964736f6c63430007060033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
