{
  "_format": "hh-sol-artifact-1",
  "contractName": "FundingRateOracle",
  "sourceName": "contracts/oracle/FundingRateOracle.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "initialOwner",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "name_",
          "type": "string"
        },
        {
          "internalType": "int112",
          "name": "minFundingRate_",
          "type": "int112"
        },
        {
          "internalType": "int112",
          "name": "maxFundingRate_",
          "type": "int112"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "FundingRateOutOfBound",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "FundingTimestampNotIncreasing",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "OwnableInvalidOwner",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "OwnableUnauthorizedAccount",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "components": [
            {
              "internalType": "int112",
              "name": "fundingRate",
              "type": "int112"
            },
            {
              "internalType": "uint32",
              "name": "fundingTimestamp",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "epochDuration",
              "type": "uint32"
            },
            {
              "internalType": "uint256",
              "name": "updatedAt",
              "type": "uint256"
            }
          ],
          "indexed": false,
          "internalType": "struct IFundingRateOracle.FundingRateUpdate",
          "name": "",
          "type": "tuple"
        }
      ],
      "name": "FundingRateUpdated",
      "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"
    },
    {
      "inputs": [],
      "name": "latestUpdate",
      "outputs": [
        {
          "internalType": "int112",
          "name": "fundingRate",
          "type": "int112"
        },
        {
          "internalType": "uint32",
          "name": "fundingTimestamp",
          "type": "uint32"
        },
        {
          "internalType": "uint32",
          "name": "epochDuration",
          "type": "uint32"
        },
        {
          "internalType": "uint256",
          "name": "updatedAt",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "maxFundingRate",
      "outputs": [
        {
          "internalType": "int112",
          "name": "",
          "type": "int112"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "minFundingRate",
      "outputs": [
        {
          "internalType": "int112",
          "name": "",
          "type": "int112"
        }
      ],
      "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": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "int112",
          "name": "fundingRate",
          "type": "int112"
        },
        {
          "internalType": "uint32",
          "name": "fundingTimestamp",
          "type": "uint32"
        },
        {
          "internalType": "uint32",
          "name": "epochDuration",
          "type": "uint32"
        }
      ],
      "name": "updateFundingRate",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60c060405234801561000f575f5ffd5b5060405161094f38038061094f83398101604081905261002e91610101565b836001600160a01b03811661005c57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b61006581610088565b5060016100728482610274565b50600d91820b608052900b60a0525061032e9050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b5f52604160045260245ffd5b8051600d81900b81146100fc575f5ffd5b919050565b5f5f5f5f60808587031215610114575f5ffd5b84516001600160a01b038116811461012a575f5ffd5b60208601519094506001600160401b03811115610145575f5ffd5b8501601f81018713610155575f5ffd5b80516001600160401b0381111561016e5761016e6100d7565b604051601f8201601f19908116603f011681016001600160401b038111828210171561019c5761019c6100d7565b6040528181528282016020018910156101b3575f5ffd5b8160208401602083015e5f602083830101528095505050506101d7604086016100eb565b91506101e5606086016100eb565b905092959194509250565b600181811c9082168061020457607f821691505b60208210810361022257634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561026f57805f5260205f20601f840160051c8101602085101561024d5750805b601f840160051c820191505b8181101561026c575f8155600101610259565b50505b505050565b81516001600160401b0381111561028d5761028d6100d7565b6102a18161029b84546101f0565b84610228565b6020601f8211600181146102d3575f83156102bc5750848201515b5f19600385901b1c1916600184901b17845561026c565b5f84815260208120601f198516915b8281101561030257878501518255602094850194600190920191016102e2565b508482101561031f57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b60805160a0516105f361035c5f395f8181610109015261026201525f818160cf015261023101526105f35ff3fe608060405234801561000f575f5ffd5b5060043610610076575f3560e01c806306fdde031461007a57806365e9f6eb14610098578063715018a6146100ad5780638da5cb5b146100b5578063b0c7f1be146100ca578063db16e98914610104578063e360a49e1461012b578063f2fde38b14610188575b5f5ffd5b61008261019b565b60405161008f91906104b0565b60405180910390f35b6100ab6100a63660046104fd565b610227565b005b6100ab6103c8565b6100bd6103db565b60405161008f9190610544565b6100f17f000000000000000000000000000000000000000000000000000000000000000081565b604051600d9190910b815260200161008f565b6100f17f000000000000000000000000000000000000000000000000000000000000000081565b60025460035461015691600d81900b9163ffffffff600160701b8304811692600160901b9004169084565b60405161008f9493929190600d9490940b845263ffffffff928316602085015291166040830152606082015260800190565b6100ab610196366004610558565b6103e9565b600180546101a890610585565b80601f01602080910402602001604051908101604052809291908181526020018280546101d490610585565b801561021f5780601f106101f65761010080835404028352916020019161021f565b820191905f5260205f20905b81548152906001019060200180831161020257829003601f168201915b505050505081565b61022f61042f565b7f0000000000000000000000000000000000000000000000000000000000000000600d0b83600d0b1215801561028b57507f0000000000000000000000000000000000000000000000000000000000000000600d0b83600d0b13155b6102a85760405163d5be61af60e01b815260040160405180910390fd5b60025463ffffffff600160701b9091048116908316116102db57604051630d4a6b4b60e21b815260040160405180910390fd5b60408051608081018252600d85900b815263ffffffff80851660208301819052908416828401819052426060840181905260028054600160901b90930263ffffffff60901b19600160701b9095026001600160901b03199094166001600160701b038b161793909317939093169190911790915560035590517fa112c77067fec67c219777ff267403d18ad181f7c46af64c07706194294ab59b906103ba9083905f6080820190508251600d0b825263ffffffff602084015116602083015263ffffffff60408401511660408301526060830151606083015292915050565b60405180910390a150505050565b6103d061042f565b6103d95f610461565b565b5f546001600160a01b031690565b6103f161042f565b6001600160a01b038116610423575f604051631e4fbdf760e01b815260040161041a9190610544565b60405180910390fd5b61042c81610461565b50565b336104386103db565b6001600160a01b0316146103d9573360405163118cdaa760e01b815260040161041a9190610544565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b803563ffffffff811681146104f8575f5ffd5b919050565b5f5f5f6060848603121561050f575f5ffd5b833580600d0b811461051f575f5ffd5b925061052d602085016104e5565b915061053b604085016104e5565b90509250925092565b6001600160a01b0391909116815260200190565b5f60208284031215610568575f5ffd5b81356001600160a01b038116811461057e575f5ffd5b9392505050565b600181811c9082168061059957607f821691505b6020821081036105b757634e487b7160e01b5f52602260045260245ffd5b5091905056fea2646970667358221220d6fb46a86b92582a01f1cee217d4928d5e1bf1203e1a8b29c17c0d0e38e25ecb64736f6c634300081c0033",
  "deployedBytecode": "0x608060405234801561000f575f5ffd5b5060043610610076575f3560e01c806306fdde031461007a57806365e9f6eb14610098578063715018a6146100ad5780638da5cb5b146100b5578063b0c7f1be146100ca578063db16e98914610104578063e360a49e1461012b578063f2fde38b14610188575b5f5ffd5b61008261019b565b60405161008f91906104b0565b60405180910390f35b6100ab6100a63660046104fd565b610227565b005b6100ab6103c8565b6100bd6103db565b60405161008f9190610544565b6100f17f000000000000000000000000000000000000000000000000000000000000000081565b604051600d9190910b815260200161008f565b6100f17f000000000000000000000000000000000000000000000000000000000000000081565b60025460035461015691600d81900b9163ffffffff600160701b8304811692600160901b9004169084565b60405161008f9493929190600d9490940b845263ffffffff928316602085015291166040830152606082015260800190565b6100ab610196366004610558565b6103e9565b600180546101a890610585565b80601f01602080910402602001604051908101604052809291908181526020018280546101d490610585565b801561021f5780601f106101f65761010080835404028352916020019161021f565b820191905f5260205f20905b81548152906001019060200180831161020257829003601f168201915b505050505081565b61022f61042f565b7f0000000000000000000000000000000000000000000000000000000000000000600d0b83600d0b1215801561028b57507f0000000000000000000000000000000000000000000000000000000000000000600d0b83600d0b13155b6102a85760405163d5be61af60e01b815260040160405180910390fd5b60025463ffffffff600160701b9091048116908316116102db57604051630d4a6b4b60e21b815260040160405180910390fd5b60408051608081018252600d85900b815263ffffffff80851660208301819052908416828401819052426060840181905260028054600160901b90930263ffffffff60901b19600160701b9095026001600160901b03199094166001600160701b038b161793909317939093169190911790915560035590517fa112c77067fec67c219777ff267403d18ad181f7c46af64c07706194294ab59b906103ba9083905f6080820190508251600d0b825263ffffffff602084015116602083015263ffffffff60408401511660408301526060830151606083015292915050565b60405180910390a150505050565b6103d061042f565b6103d95f610461565b565b5f546001600160a01b031690565b6103f161042f565b6001600160a01b038116610423575f604051631e4fbdf760e01b815260040161041a9190610544565b60405180910390fd5b61042c81610461565b50565b336104386103db565b6001600160a01b0316146103d9573360405163118cdaa760e01b815260040161041a9190610544565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b803563ffffffff811681146104f8575f5ffd5b919050565b5f5f5f6060848603121561050f575f5ffd5b833580600d0b811461051f575f5ffd5b925061052d602085016104e5565b915061053b604085016104e5565b90509250925092565b6001600160a01b0391909116815260200190565b5f60208284031215610568575f5ffd5b81356001600160a01b038116811461057e575f5ffd5b9392505050565b600181811c9082168061059957607f821691505b6020821081036105b757634e487b7160e01b5f52602260045260245ffd5b5091905056fea2646970667358221220d6fb46a86b92582a01f1cee217d4928d5e1bf1203e1a8b29c17c0d0e38e25ecb64736f6c634300081c0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
