{
  "_format": "hh-sol-artifact-1",
  "contractName": "ReferenceOracle",
  "sourceName": "contracts/ReferenceOracle.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract ResilientOracleInterface",
          "name": "resilientOracle",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "ZeroAddressNotAllowed",
      "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": "asset",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "oracle",
          "type": "address"
        }
      ],
      "name": "OracleConfigured",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferStarted",
      "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": "PRICES_SLOT",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "RESILIENT_ORACLE",
      "outputs": [
        {
          "internalType": "contract ResilientOracleInterface",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "acceptOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "asset",
          "type": "address"
        }
      ],
      "name": "getPrice",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "components": [
            {
              "internalType": "address",
              "name": "asset",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "price",
              "type": "uint256"
            }
          ],
          "internalType": "struct ReferenceOracle.ExternalPrice[]",
          "name": "externalPrices",
          "type": "tuple[]"
        }
      ],
      "name": "getPriceAssuming",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "oracles",
      "outputs": [
        {
          "internalType": "contract OracleInterface",
          "name": "",
          "type": "address"
        }
      ],
      "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": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "internalType": "contract OracleInterface",
          "name": "oracle",
          "type": "address"
        }
      ],
      "name": "setOracle",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60a060405234801561000f575f80fd5b50604051610dd3380380610dd383398101604081905261002e9161013a565b61003781610052565b6001600160a01b03811660805261004c61007c565b506101ba565b6001600160a01b038116610079576040516342bcdf7f60e11b815260040160405180910390fd5b50565b5f54610100900460ff16156100ac5760405162461bcd60e51b81526004016100a390610160565b60405180910390fd5b5f5460ff908116146100fe575f805460ff191660ff9081179091556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498916100f5916101ab565b60405180910390a15b565b5f6001600160a01b0382165b92915050565b5f61010c82610100565b61012581610112565b8114610079575f80fd5b805161010c8161011c565b5f6020828403121561014d5761014d5f80fd5b5f610158848461012f565b949350505050565b6020808252810161010c81602781527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469602082015266616c697a696e6760c81b604082015260600190565b60ff821681526020810161010c565b608051610bfa6101d95f395f8181610145015261056e0152610bfa5ff3fe608060405234801561000f575f80fd5b50600436106100b1575f3560e01c80638129fc1c1161006e5780638129fc1c1461011e5780638da5cb5b14610126578063a4edcd4c14610140578063addd509914610174578063e30c39781461019c578063f2fde38b146101ad575f80fd5b8063310770b5146100b557806341976e09146100de578063539b18a1146100f15780635c38eb3a146100f9578063715018a61461010e57806379ba509714610116575b5f80fd5b6100c86100c336600461089b565b6101c0565b6040516100d591906108f7565b60405180910390f35b6100c86100ec366004610905565b61022d565b6100c8610237565b61010c610107366004610941565b61025f565b005b61010c6102c6565b61010c6102d9565b61010c61031a565b6033546001600160a01b03165b6040516100d5919061097a565b6101677f000000000000000000000000000000000000000000000000000000000000000081565b6040516100d5919061099b565b610167610182366004610905565b60976020525f90815260409020546001600160a01b031681565b6065546001600160a01b0316610133565b61010c6101bb366004610905565b6103e2565b80515f90815b81811015610219576102118482815181106101e3576101e36109a9565b60200260200101515f0151858381518110610200576102006109a9565b602002602001015160200151610453565b6001016101c6565b50610223846104ab565b9150505b92915050565b5f610227826104ab565b60405160200161024690610a08565b6040516020818303038152906040528051906020012081565b6102676105a3565b610270826105cd565b6001600160a01b038281165f8181526097602052604080822080546001600160a01b0319169486169485179055517fe625c7b7d4661988d3a1140f3225faefa7b57c73524adb62fd77dbc945a6db829190a35050565b6102ce6105a3565b6102d75f6105f4565b565b60655433906001600160a01b0316811461030e5760405162461bcd60e51b815260040161030590610a5d565b60405180910390fd5b610317816105f4565b50565b5f54610100900460ff161580801561033857505f54600160ff909116105b806103515750303b15801561035157505f5460ff166001145b61036d5760405162461bcd60e51b815260040161030590610ab7565b5f805460ff19166001179055801561038e575f805461ff0019166101001790555b61039661060d565b8015610317575f805461ff00191690556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906103d790600190610ada565b60405180910390a150565b6103ea6105a3565b606580546001600160a01b0383166001600160a01b0319909116811790915561041b6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f60405160200161046390610a08565b604051602081830303815290604052805190602001208360405160200161048b929190610ae8565b60405160208183030381529060405280519060200120905081815d505050565b5f806104b68361063b565b905080156104c45792915050565b6001600160a01b038084165f90815260976020526040902054168015610557576040516341976e0960e01b81526001600160a01b038216906341976e099061051090879060040161097a565b602060405180830381865afa15801561052b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061054f9190610b15565b949350505050565b6040516341976e0960e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906341976e099061051090879060040161097a565b6033546001600160a01b031633146102d75760405162461bcd60e51b815260040161030590610b33565b6001600160a01b038116610317576040516342bcdf7f60e11b815260040160405180910390fd5b606580546001600160a01b031916905561031781610694565b5f54610100900460ff166106335760405162461bcd60e51b815260040161030590610bb4565b6102d76106e5565b5f8060405160200161064c90610a08565b6040516020818303038152906040528051906020012083604051602001610674929190610ae8565b60408051601f1981840301815291905280516020909101205c9392505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff1661070b5760405162461bcd60e51b815260040161030590610bb4565b6102d7336105f4565b5f6001600160a01b038216610227565b61072d81610714565b8114610317575f80fd5b803561022781610724565b634e487b7160e01b5f52604160045260245ffd5b601f19601f830116810181811067ffffffffffffffff8211171561077c5761077c610742565b6040525050565b5f61078d60405190565b90506107998282610756565b919050565b5f67ffffffffffffffff8211156107b7576107b7610742565b5060209081020190565b8061072d565b8035610227816107c1565b5f604082840312156107e5576107e55f80fd5b6107ef6040610783565b90505f6107fc8484610737565b825250602061080d848483016107c7565b60208301525092915050565b5f61082b6108268461079e565b610783565b83815290506020810160408402830185811115610849576108495f80fd5b835b8181101561086f578061085e88826107d2565b84525060209092019160400161084b565b5050509392505050565b5f82601f83011261088b5761088b5f80fd5b8135610223848260208601610819565b5f80604083850312156108af576108af5f80fd5b5f6108ba8585610737565b925050602083013567ffffffffffffffff8111156108d9576108d95f80fd5b6108e585828601610879565b9150509250929050565b805b82525050565b6020810161022782846108ef565b5f60208284031215610918576109185f80fd5b5f6102238484610737565b5f61022782610714565b61072d81610923565b80356102278161092d565b5f8060408385031215610955576109555f80fd5b5f6109608585610737565b92505060206108e585828601610936565b6108f181610714565b602081016102278284610971565b5f61022782610923565b6108f181610988565b602081016102278284610992565b634e487b7160e01b5f52603260045260245ffd5b602c81525f602082017f76656e75732d70726f746f636f6c2f6f7261636c652f5265666572656e63654f81526b7261636c652f70726963657360a01b602082015291505b5060400190565b60208082528101610227816109bd565b602981525f602082017f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865208152683732bb9037bbb732b960b91b60208201529150610a01565b6020808252810161022781610a18565b602e81525f602082017f496e697469616c697a61626c653a20636f6e747261637420697320616c72656181526d191e481a5b9a5d1a585b1a5e995960921b60208201529150610a01565b6020808252810161022781610a6d565b5f60ff8216610227565b6108f181610ac7565b602081016102278284610ad1565b60408101610af682856108ef565b610b036020830184610971565b9392505050565b8051610227816107c1565b5f60208284031215610b2857610b285f80fd5b5f6102238484610b0a565b60208082528181019081527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604083015260608201610227565b602b81525f602082017f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206981526a6e697469616c697a696e6760a81b60208201529150610a01565b6020808252810161022781610b6d56fea2646970667358221220179f8fdf6f4485927c403f147287801a87787a13179f6a259a5940d6c839054e64736f6c63430008190033",
  "deployedBytecode": "0x608060405234801561000f575f80fd5b50600436106100b1575f3560e01c80638129fc1c1161006e5780638129fc1c1461011e5780638da5cb5b14610126578063a4edcd4c14610140578063addd509914610174578063e30c39781461019c578063f2fde38b146101ad575f80fd5b8063310770b5146100b557806341976e09146100de578063539b18a1146100f15780635c38eb3a146100f9578063715018a61461010e57806379ba509714610116575b5f80fd5b6100c86100c336600461089b565b6101c0565b6040516100d591906108f7565b60405180910390f35b6100c86100ec366004610905565b61022d565b6100c8610237565b61010c610107366004610941565b61025f565b005b61010c6102c6565b61010c6102d9565b61010c61031a565b6033546001600160a01b03165b6040516100d5919061097a565b6101677f000000000000000000000000000000000000000000000000000000000000000081565b6040516100d5919061099b565b610167610182366004610905565b60976020525f90815260409020546001600160a01b031681565b6065546001600160a01b0316610133565b61010c6101bb366004610905565b6103e2565b80515f90815b81811015610219576102118482815181106101e3576101e36109a9565b60200260200101515f0151858381518110610200576102006109a9565b602002602001015160200151610453565b6001016101c6565b50610223846104ab565b9150505b92915050565b5f610227826104ab565b60405160200161024690610a08565b6040516020818303038152906040528051906020012081565b6102676105a3565b610270826105cd565b6001600160a01b038281165f8181526097602052604080822080546001600160a01b0319169486169485179055517fe625c7b7d4661988d3a1140f3225faefa7b57c73524adb62fd77dbc945a6db829190a35050565b6102ce6105a3565b6102d75f6105f4565b565b60655433906001600160a01b0316811461030e5760405162461bcd60e51b815260040161030590610a5d565b60405180910390fd5b610317816105f4565b50565b5f54610100900460ff161580801561033857505f54600160ff909116105b806103515750303b15801561035157505f5460ff166001145b61036d5760405162461bcd60e51b815260040161030590610ab7565b5f805460ff19166001179055801561038e575f805461ff0019166101001790555b61039661060d565b8015610317575f805461ff00191690556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906103d790600190610ada565b60405180910390a150565b6103ea6105a3565b606580546001600160a01b0383166001600160a01b0319909116811790915561041b6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f60405160200161046390610a08565b604051602081830303815290604052805190602001208360405160200161048b929190610ae8565b60405160208183030381529060405280519060200120905081815d505050565b5f806104b68361063b565b905080156104c45792915050565b6001600160a01b038084165f90815260976020526040902054168015610557576040516341976e0960e01b81526001600160a01b038216906341976e099061051090879060040161097a565b602060405180830381865afa15801561052b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061054f9190610b15565b949350505050565b6040516341976e0960e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906341976e099061051090879060040161097a565b6033546001600160a01b031633146102d75760405162461bcd60e51b815260040161030590610b33565b6001600160a01b038116610317576040516342bcdf7f60e11b815260040160405180910390fd5b606580546001600160a01b031916905561031781610694565b5f54610100900460ff166106335760405162461bcd60e51b815260040161030590610bb4565b6102d76106e5565b5f8060405160200161064c90610a08565b6040516020818303038152906040528051906020012083604051602001610674929190610ae8565b60408051601f1981840301815291905280516020909101205c9392505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff1661070b5760405162461bcd60e51b815260040161030590610bb4565b6102d7336105f4565b5f6001600160a01b038216610227565b61072d81610714565b8114610317575f80fd5b803561022781610724565b634e487b7160e01b5f52604160045260245ffd5b601f19601f830116810181811067ffffffffffffffff8211171561077c5761077c610742565b6040525050565b5f61078d60405190565b90506107998282610756565b919050565b5f67ffffffffffffffff8211156107b7576107b7610742565b5060209081020190565b8061072d565b8035610227816107c1565b5f604082840312156107e5576107e55f80fd5b6107ef6040610783565b90505f6107fc8484610737565b825250602061080d848483016107c7565b60208301525092915050565b5f61082b6108268461079e565b610783565b83815290506020810160408402830185811115610849576108495f80fd5b835b8181101561086f578061085e88826107d2565b84525060209092019160400161084b565b5050509392505050565b5f82601f83011261088b5761088b5f80fd5b8135610223848260208601610819565b5f80604083850312156108af576108af5f80fd5b5f6108ba8585610737565b925050602083013567ffffffffffffffff8111156108d9576108d95f80fd5b6108e585828601610879565b9150509250929050565b805b82525050565b6020810161022782846108ef565b5f60208284031215610918576109185f80fd5b5f6102238484610737565b5f61022782610714565b61072d81610923565b80356102278161092d565b5f8060408385031215610955576109555f80fd5b5f6109608585610737565b92505060206108e585828601610936565b6108f181610714565b602081016102278284610971565b5f61022782610923565b6108f181610988565b602081016102278284610992565b634e487b7160e01b5f52603260045260245ffd5b602c81525f602082017f76656e75732d70726f746f636f6c2f6f7261636c652f5265666572656e63654f81526b7261636c652f70726963657360a01b602082015291505b5060400190565b60208082528101610227816109bd565b602981525f602082017f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865208152683732bb9037bbb732b960b91b60208201529150610a01565b6020808252810161022781610a18565b602e81525f602082017f496e697469616c697a61626c653a20636f6e747261637420697320616c72656181526d191e481a5b9a5d1a585b1a5e995960921b60208201529150610a01565b6020808252810161022781610a6d565b5f60ff8216610227565b6108f181610ac7565b602081016102278284610ad1565b60408101610af682856108ef565b610b036020830184610971565b9392505050565b8051610227816107c1565b5f60208284031215610b2857610b285f80fd5b5f6102238484610b0a565b60208082528181019081527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604083015260608201610227565b602b81525f602082017f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206981526a6e697469616c697a696e6760a81b60208201529150610a01565b6020808252810161022781610b6d56fea2646970667358221220179f8fdf6f4485927c403f147287801a87787a13179f6a259a5940d6c839054e64736f6c63430008190033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
