{
  "_format": "hh-sol-artifact-1",
  "contractName": "PendleExchangeRateOracle",
  "sourceName": "contracts/offchain-helpers/PendleExchangeRateOracle.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "_name",
          "type": "string"
        },
        {
          "internalType": "uint256",
          "name": "_maxRateDiff",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint128",
              "name": "rate",
              "type": "uint128"
            },
            {
              "internalType": "uint64",
              "name": "dataBlock",
              "type": "uint64"
            },
            {
              "internalType": "uint32",
              "name": "dataTimestamp",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "updatedAt",
              "type": "uint32"
            }
          ],
          "internalType": "struct PendleExchangeRateOracle.ExchangeRateData",
          "name": "data",
          "type": "tuple"
        }
      ],
      "name": "InvalidMetadata",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "oldRate",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "newRate",
          "type": "uint256"
        },
        {
          "internalType": "enum PendleExchangeRateOracle.RateRejectReason",
          "name": "reason",
          "type": "uint8"
        }
      ],
      "name": "RateRejected",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint128",
              "name": "rate",
              "type": "uint128"
            },
            {
              "internalType": "uint64",
              "name": "dataBlock",
              "type": "uint64"
            },
            {
              "internalType": "uint32",
              "name": "dataTimestamp",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "updatedAt",
              "type": "uint32"
            }
          ],
          "indexed": false,
          "internalType": "struct PendleExchangeRateOracle.ExchangeRateData",
          "name": "data",
          "type": "tuple"
        }
      ],
      "name": "RateUpdated",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "MIN_UPDATE_TIME_GAP",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "claimOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "data",
      "outputs": [
        {
          "internalType": "uint128",
          "name": "rate",
          "type": "uint128"
        },
        {
          "internalType": "uint64",
          "name": "dataBlock",
          "type": "uint64"
        },
        {
          "internalType": "uint32",
          "name": "dataTimestamp",
          "type": "uint32"
        },
        {
          "internalType": "uint32",
          "name": "updatedAt",
          "type": "uint32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getExchangeRate",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "maxRateDiff",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "pendingOwner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint128",
          "name": "rate",
          "type": "uint128"
        },
        {
          "internalType": "uint64",
          "name": "dataBlock",
          "type": "uint64"
        },
        {
          "internalType": "uint32",
          "name": "dataTimestamp",
          "type": "uint32"
        }
      ],
      "name": "setExchangeRate",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "direct",
          "type": "bool"
        },
        {
          "internalType": "bool",
          "name": "renounce",
          "type": "bool"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60a060405234801561000f575f5ffd5b50604051610dc8380380610dc883398101604081905261002e91610215565b600154600160a81b900460ff1615808015610054575060018054600160a01b900460ff16105b806100745750303b158015610074575060018054600160a01b900460ff16145b6100dc5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6001805460ff60a01b1916600160a01b1790558015610109576001805460ff60a81b1916600160a81b1790555b60326101158482610362565b50608082905261012433610173565b801561016b576001805460ff60a81b191681556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505061041c565b600154600160a81b900460ff166101e05760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016100d3565b5f80546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b5f52604160045260245ffd5b5f5f60408385031215610226575f5ffd5b82516001600160401b0381111561023b575f5ffd5b8301601f8101851361024b575f5ffd5b80516001600160401b0381111561026457610264610201565b604051601f8201601f19908116603f011681016001600160401b038111828210171561029257610292610201565b6040528181528282016020018710156102a9575f5ffd5b5f5b828110156102c7576020818501810151838301820152016102ab565b505f60209282018301529401519395939450505050565b600181811c908216806102f257607f821691505b60208210810361031057634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561035d57805f5260205f20601f840160051c8101602085101561033b5750805b601f840160051c820191505b8181101561035a575f8155600101610347565b50505b505050565b81516001600160401b0381111561037b5761037b610201565b61038f8161038984546102de565b84610316565b6020601f8211600181146103c1575f83156103aa5750848201515b5f19600385901b1c1916600184901b17845561035a565b5f84815260208120601f198516915b828110156103f057878501518255602094850194600190920191016103d0565b508482101561040d57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b60805161098d61043b5f395f818161018c01526105f0015261098d5ff3fe608060405234801561000f575f5ffd5b506004361061008c575f3560e01c806306fdde0314610090578063078dfbe7146100ae5780630ea9547e146100c35780634e71e0c8146100da57806373d4a13a146100e25780638da5cb5b1461015d578063d1bdee3814610187578063d3af58fb146101ae578063e30c3978146101c1578063e6aa216c146101d4575b5f5ffd5b6100986101e5565b6040516100a591906106f9565b60405180910390f35b6100c16100bc366004610758565b610271565b005b6100cc61a8c081565b6040519081526020016100a5565b6100c1610373565b60335461011f906001600160801b038116906001600160401b03600160801b8204169063ffffffff600160c01b8204811691600160e01b90041684565b604080516001600160801b0390951685526001600160401b03909316602085015263ffffffff918216928401929092521660608201526080016100a5565b5f5461016f906001600160a01b031681565b6040516001600160a01b0390911681526020016100a5565b6100cc7f000000000000000000000000000000000000000000000000000000000000000081565b6100c16101bc3660046107a5565b61041b565b60015461016f906001600160a01b031681565b6033546001600160801b03166100cc565b603280546101f29061080b565b80601f016020809104026020016040519081016040528092919081815260200182805461021e9061080b565b80156102695780601f1061024057610100808354040283529160200191610269565b820191905f5260205f20905b81548152906001019060200180831161024c57829003601f168201915b505050505081565b5f546001600160a01b031633146102a35760405162461bcd60e51b815260040161029a90610843565b60405180910390fd5b8115610351576001600160a01b0383161515806102bd5750805b6103015760405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b604482015260640161029a565b5f80546040516001600160a01b03808716939216915f5160206109385f395f51905f5291a35f80546001600160a01b0385166001600160a01b031991821617909155600180549091169055505050565b600180546001600160a01b0385166001600160a01b0319909116179055505050565b6001546001600160a01b03163381146103ce5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e6572604482015260640161029a565b5f80546040516001600160a01b03808516939216915f5160206109385f395f51905f5291a35f80546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b5f546001600160a01b031633146104445760405162461bcd60e51b815260040161029a90610843565b5f6040518060800160405280856001600160801b03168152602001846001600160401b031681526020018363ffffffff1681526020014263ffffffff16815250905061048f81610495565b50505050565b604080516080810182526033546001600160801b038082168084526001600160401b03600160801b840416602085015263ffffffff600160c01b8404811695850195909552600160e01b9092049093166060830152835191926104f892166105b6565b610502818361064f565b8151603380546020850151604080870151606088015163ffffffff908116600160e01b026001600160e01b0391909216600160c01b02166001600160c01b036001600160401b03909416600160801b026001600160c01b03199095166001600160801b0390971696909617939093179190911693909317179055517fcfeda7da2baa74f493d45b784b32c511b6f8e67df21495044ecae70ce9918e23906105aa908490610878565b60405180910390a15050565b808211156105dd5781815f604051630347ff6360e11b815260040161029a939291906108c1565b811580159061062657508061062461061d7f0000000000000000000000000000000000000000000000000000000000000000670de0b6b3a764000061090d565b84906106d8565b105b1561064b5781816001604051630347ff6360e11b815260040161029a939291906108c1565b5050565b80602001516001600160401b031682602001516001600160401b031610158061068c5750806040015163ffffffff16826040015163ffffffff1610155b806106b85750806060015163ffffffff1661a8c0836060015163ffffffff166106b5919061090d565b10155b1561064b578060405163246d5b3560e21b815260040161029a9190610878565b5f806106e48385610920565b670de0b6b3a764000090049150505b92915050565b602081525f82518060208401525f5b818110156107255760208186018101516040868401015201610708565b505f604082850101526040601f19601f83011684010191505092915050565b80358015158114610753575f5ffd5b919050565b5f5f5f6060848603121561076a575f5ffd5b83356001600160a01b0381168114610780575f5ffd5b925061078e60208501610744565b915061079c60408501610744565b90509250925092565b5f5f5f606084860312156107b7575f5ffd5b83356001600160801b03811681146107cd575f5ffd5b925060208401356001600160401b03811681146107e8575f5ffd5b9150604084013563ffffffff81168114610800575f5ffd5b809150509250925092565b600181811c9082168061081f57607f821691505b60208210810361083d57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b81516001600160801b031681526020808301516001600160401b03169082015260408083015163ffffffff90811691830191909152606092830151169181019190915260800190565b8381526020810183905260608101600283106108eb57634e487b7160e01b5f52602160045260245ffd5b826040830152949350505050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156106f3576106f36108f9565b80820281158282048414176106f3576106f36108f956fe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a264697066735822122019f8b38311c6517c5fcacb52383ab0164dbe436c31cd76c4f6f3c59c3caf26d464736f6c634300081e0033",
  "deployedBytecode": "0x608060405234801561000f575f5ffd5b506004361061008c575f3560e01c806306fdde0314610090578063078dfbe7146100ae5780630ea9547e146100c35780634e71e0c8146100da57806373d4a13a146100e25780638da5cb5b1461015d578063d1bdee3814610187578063d3af58fb146101ae578063e30c3978146101c1578063e6aa216c146101d4575b5f5ffd5b6100986101e5565b6040516100a591906106f9565b60405180910390f35b6100c16100bc366004610758565b610271565b005b6100cc61a8c081565b6040519081526020016100a5565b6100c1610373565b60335461011f906001600160801b038116906001600160401b03600160801b8204169063ffffffff600160c01b8204811691600160e01b90041684565b604080516001600160801b0390951685526001600160401b03909316602085015263ffffffff918216928401929092521660608201526080016100a5565b5f5461016f906001600160a01b031681565b6040516001600160a01b0390911681526020016100a5565b6100cc7f000000000000000000000000000000000000000000000000000000000000000081565b6100c16101bc3660046107a5565b61041b565b60015461016f906001600160a01b031681565b6033546001600160801b03166100cc565b603280546101f29061080b565b80601f016020809104026020016040519081016040528092919081815260200182805461021e9061080b565b80156102695780601f1061024057610100808354040283529160200191610269565b820191905f5260205f20905b81548152906001019060200180831161024c57829003601f168201915b505050505081565b5f546001600160a01b031633146102a35760405162461bcd60e51b815260040161029a90610843565b60405180910390fd5b8115610351576001600160a01b0383161515806102bd5750805b6103015760405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b604482015260640161029a565b5f80546040516001600160a01b03808716939216915f5160206109385f395f51905f5291a35f80546001600160a01b0385166001600160a01b031991821617909155600180549091169055505050565b600180546001600160a01b0385166001600160a01b0319909116179055505050565b6001546001600160a01b03163381146103ce5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e6572604482015260640161029a565b5f80546040516001600160a01b03808516939216915f5160206109385f395f51905f5291a35f80546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b5f546001600160a01b031633146104445760405162461bcd60e51b815260040161029a90610843565b5f6040518060800160405280856001600160801b03168152602001846001600160401b031681526020018363ffffffff1681526020014263ffffffff16815250905061048f81610495565b50505050565b604080516080810182526033546001600160801b038082168084526001600160401b03600160801b840416602085015263ffffffff600160c01b8404811695850195909552600160e01b9092049093166060830152835191926104f892166105b6565b610502818361064f565b8151603380546020850151604080870151606088015163ffffffff908116600160e01b026001600160e01b0391909216600160c01b02166001600160c01b036001600160401b03909416600160801b026001600160c01b03199095166001600160801b0390971696909617939093179190911693909317179055517fcfeda7da2baa74f493d45b784b32c511b6f8e67df21495044ecae70ce9918e23906105aa908490610878565b60405180910390a15050565b808211156105dd5781815f604051630347ff6360e11b815260040161029a939291906108c1565b811580159061062657508061062461061d7f0000000000000000000000000000000000000000000000000000000000000000670de0b6b3a764000061090d565b84906106d8565b105b1561064b5781816001604051630347ff6360e11b815260040161029a939291906108c1565b5050565b80602001516001600160401b031682602001516001600160401b031610158061068c5750806040015163ffffffff16826040015163ffffffff1610155b806106b85750806060015163ffffffff1661a8c0836060015163ffffffff166106b5919061090d565b10155b1561064b578060405163246d5b3560e21b815260040161029a9190610878565b5f806106e48385610920565b670de0b6b3a764000090049150505b92915050565b602081525f82518060208401525f5b818110156107255760208186018101516040868401015201610708565b505f604082850101526040601f19601f83011684010191505092915050565b80358015158114610753575f5ffd5b919050565b5f5f5f6060848603121561076a575f5ffd5b83356001600160a01b0381168114610780575f5ffd5b925061078e60208501610744565b915061079c60408501610744565b90509250925092565b5f5f5f606084860312156107b7575f5ffd5b83356001600160801b03811681146107cd575f5ffd5b925060208401356001600160401b03811681146107e8575f5ffd5b9150604084013563ffffffff81168114610800575f5ffd5b809150509250925092565b600181811c9082168061081f57607f821691505b60208210810361083d57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b81516001600160801b031681526020808301516001600160401b03169082015260408083015163ffffffff90811691830191909152606092830151169181019190915260800190565b8381526020810183905260608101600283106108eb57634e487b7160e01b5f52602160045260245ffd5b826040830152949350505050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156106f3576106f36108f9565b80820281158282048414176106f3576106f36108f956fe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a264697066735822122019f8b38311c6517c5fcacb52383ab0164dbe436c31cd76c4f6f3c59c3caf26d464736f6c634300081e0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
