{
  "contractName": "IWitPriceFeeds",
  "abi": [
    {
      "inputs": [],
      "name": "DeviantPrice",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "HotPrice",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidArgument",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidGovernanceTarget",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidUpdateData",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidUpdateDataSource",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "NoFreshUpdate",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "PriceFeedNotFound",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "PriceFeedNotFoundWithinRange",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "StalePrice",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "IWitPriceFeedsTypes.ID4",
          "name": "id4",
          "type": "bytes4"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "caption",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "int8",
          "name": "exponent",
          "type": "int8"
        },
        {
          "indexed": false,
          "internalType": "enum IWitPriceFeedsTypes.Mappers",
          "name": "mapper",
          "type": "uint8"
        },
        {
          "indexed": false,
          "internalType": "string[]",
          "name": "dependencies",
          "type": "string[]"
        }
      ],
      "name": "PriceFeedMapper",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "IWitPriceFeedsTypes.ID4",
          "name": "id4",
          "type": "bytes4"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "caption",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "int8",
          "name": "exponent",
          "type": "int8"
        },
        {
          "indexed": false,
          "internalType": "enum IWitPriceFeedsTypes.Oracles",
          "name": "oracle",
          "type": "uint8"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "oracleAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "oracleSources",
          "type": "bytes32"
        }
      ],
      "name": "PriceFeedOracle",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "IWitPriceFeedsTypes.ID4",
          "name": "id4",
          "type": "bytes4"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "caption",
          "type": "string"
        }
      ],
      "name": "PriceFeedRemoved",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "IWitPriceFeedsTypes.ID4",
          "name": "ID4",
          "type": "bytes4"
        },
        {
          "indexed": false,
          "internalType": "Witnet.Timestamp",
          "name": "timestamp",
          "type": "uint64"
        },
        {
          "indexed": false,
          "internalType": "Witnet.TransactionHash",
          "name": "trail",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint64",
          "name": "price",
          "type": "uint64"
        },
        {
          "indexed": false,
          "internalType": "int56",
          "name": "deltaPrice",
          "type": "int56"
        },
        {
          "indexed": false,
          "internalType": "int8",
          "name": "exponent",
          "type": "int8"
        }
      ],
      "name": "PriceFeedUpdate",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "id",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint64",
          "name": "publishTime",
          "type": "uint64"
        },
        {
          "indexed": false,
          "internalType": "int64",
          "name": "price",
          "type": "int64"
        },
        {
          "indexed": false,
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "name": "PriceFeedUpdate",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "IWitPriceFeedsTypes.ID4",
          "name": "id4",
          "type": "bytes4"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "caption",
          "type": "string"
        },
        {
          "components": [
            {
              "internalType": "uint24",
              "name": "callbackGas",
              "type": "uint24"
            },
            {
              "internalType": "bool",
              "name": "computeEma",
              "type": "bool"
            },
            {
              "internalType": "uint24",
              "name": "cooldownSecs",
              "type": "uint24"
            },
            {
              "internalType": "uint24",
              "name": "heartbeatSecs",
              "type": "uint24"
            },
            {
              "internalType": "uint16",
              "name": "maxDeviation1000",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "minWitnesses",
              "type": "uint16"
            }
          ],
          "indexed": false,
          "internalType": "struct IWitPriceFeedsTypes.UpdateConditions",
          "name": "conditions",
          "type": "tuple"
        }
      ],
      "name": "PriceFeedUpdateConditions",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "acceptOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "IWitPyth.ID",
          "name": "id",
          "type": "bytes32"
        }
      ],
      "name": "getEmaPrice",
      "outputs": [
        {
          "components": [
            {
              "internalType": "int64",
              "name": "price",
              "type": "int64"
            },
            {
              "internalType": "uint64",
              "name": "conf",
              "type": "uint64"
            },
            {
              "internalType": "int32",
              "name": "expo",
              "type": "int32"
            },
            {
              "internalType": "uint256",
              "name": "publishTime",
              "type": "uint256"
            }
          ],
          "internalType": "struct IWitPyth.PythPrice",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "IWitPyth.ID",
          "name": "id",
          "type": "bytes32"
        },
        {
          "internalType": "uint64",
          "name": "age",
          "type": "uint64"
        }
      ],
      "name": "getEmaPriceNotOlderThan",
      "outputs": [
        {
          "components": [
            {
              "internalType": "int64",
              "name": "price",
              "type": "int64"
            },
            {
              "internalType": "uint64",
              "name": "conf",
              "type": "uint64"
            },
            {
              "internalType": "int32",
              "name": "expo",
              "type": "int32"
            },
            {
              "internalType": "uint256",
              "name": "publishTime",
              "type": "uint256"
            }
          ],
          "internalType": "struct IWitPyth.PythPrice",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "IWitPyth.ID",
          "name": "id",
          "type": "bytes32"
        }
      ],
      "name": "getEmaPriceUnsafe",
      "outputs": [
        {
          "components": [
            {
              "internalType": "int64",
              "name": "price",
              "type": "int64"
            },
            {
              "internalType": "uint64",
              "name": "conf",
              "type": "uint64"
            },
            {
              "internalType": "int32",
              "name": "expo",
              "type": "int32"
            },
            {
              "internalType": "uint256",
              "name": "publishTime",
              "type": "uint256"
            }
          ],
          "internalType": "struct IWitPyth.PythPrice",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "name": "getUpdateFee",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "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": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        },
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "name": "removePriceFeed",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "settleConsumer",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint24",
              "name": "callbackGas",
              "type": "uint24"
            },
            {
              "internalType": "bool",
              "name": "computeEma",
              "type": "bool"
            },
            {
              "internalType": "uint24",
              "name": "cooldownSecs",
              "type": "uint24"
            },
            {
              "internalType": "uint24",
              "name": "heartbeatSecs",
              "type": "uint24"
            },
            {
              "internalType": "uint16",
              "name": "maxDeviation1000",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "minWitnesses",
              "type": "uint16"
            }
          ],
          "internalType": "struct IWitPriceFeedsTypes.UpdateConditions",
          "name": "",
          "type": "tuple"
        }
      ],
      "name": "settleDefaultUpdateConditions",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "caption",
          "type": "string"
        },
        {
          "internalType": "int8",
          "name": "exponent",
          "type": "int8"
        },
        {
          "internalType": "enum IWitPriceFeedsTypes.Mappers",
          "name": "mapper",
          "type": "uint8"
        },
        {
          "internalType": "string[]",
          "name": "deps",
          "type": "string[]"
        }
      ],
      "name": "settlePriceFeedMapper",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "caption",
          "type": "string"
        },
        {
          "internalType": "int8",
          "name": "exponent",
          "type": "int8"
        },
        {
          "internalType": "enum IWitPriceFeedsTypes.Oracles",
          "name": "oracle",
          "type": "uint8"
        },
        {
          "internalType": "address",
          "name": "target",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "sources",
          "type": "bytes32"
        }
      ],
      "name": "settlePriceFeedOracle",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "caption",
          "type": "string"
        },
        {
          "internalType": "int8",
          "name": "exponent",
          "type": "int8"
        },
        {
          "internalType": "bytes",
          "name": "radonBytecode",
          "type": "bytes"
        }
      ],
      "name": "settlePriceFeedRadonBytecode",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "caption",
          "type": "string"
        },
        {
          "internalType": "int8",
          "name": "exponent",
          "type": "int8"
        },
        {
          "internalType": "Witnet.RadonHash",
          "name": "radonHash",
          "type": "bytes32"
        }
      ],
      "name": "settlePriceFeedRadonHash",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "caption",
          "type": "string"
        },
        {
          "components": [
            {
              "internalType": "uint24",
              "name": "callbackGas",
              "type": "uint24"
            },
            {
              "internalType": "bool",
              "name": "computeEma",
              "type": "bool"
            },
            {
              "internalType": "uint24",
              "name": "cooldownSecs",
              "type": "uint24"
            },
            {
              "internalType": "uint24",
              "name": "heartbeatSecs",
              "type": "uint24"
            },
            {
              "internalType": "uint16",
              "name": "maxDeviation1000",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "minWitnesses",
              "type": "uint16"
            }
          ],
          "internalType": "struct IWitPriceFeedsTypes.UpdateConditions",
          "name": "conditions",
          "type": "tuple"
        }
      ],
      "name": "settlePriceFeedUpdateConditions",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "base",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "curator",
          "type": "address"
        }
      ],
      "name": "clone",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "consumer",
      "outputs": [
        {
          "internalType": "contract IWitPriceFeedsConsumer",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "symbol",
          "type": "string"
        }
      ],
      "name": "createChainlinkAggregator",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "defaultUpdateConditions",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint24",
              "name": "callbackGas",
              "type": "uint24"
            },
            {
              "internalType": "bool",
              "name": "computeEma",
              "type": "bool"
            },
            {
              "internalType": "uint24",
              "name": "cooldownSecs",
              "type": "uint24"
            },
            {
              "internalType": "uint24",
              "name": "heartbeatSecs",
              "type": "uint24"
            },
            {
              "internalType": "uint16",
              "name": "maxDeviation1000",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "minWitnesses",
              "type": "uint16"
            }
          ],
          "internalType": "struct IWitPriceFeedsTypes.UpdateConditions",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "footprint",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "symbol",
          "type": "string"
        }
      ],
      "name": "hash",
      "outputs": [
        {
          "internalType": "IWitPyth.ID",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "IWitPyth.ID",
          "name": "id",
          "type": "bytes32"
        }
      ],
      "name": "getPrice",
      "outputs": [
        {
          "components": [
            {
              "internalType": "int64",
              "name": "price",
              "type": "int64"
            },
            {
              "internalType": "uint64",
              "name": "conf",
              "type": "uint64"
            },
            {
              "internalType": "int32",
              "name": "expo",
              "type": "int32"
            },
            {
              "internalType": "uint256",
              "name": "publishTime",
              "type": "uint256"
            }
          ],
          "internalType": "struct IWitPyth.PythPrice",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "IWitPriceFeedsTypes.ID4",
          "name": "id4",
          "type": "bytes4"
        }
      ],
      "name": "getPrice",
      "outputs": [
        {
          "components": [
            {
              "internalType": "int8",
              "name": "exponent",
              "type": "int8"
            },
            {
              "internalType": "uint64",
              "name": "price",
              "type": "uint64"
            },
            {
              "internalType": "int56",
              "name": "deltaPrice",
              "type": "int56"
            },
            {
              "internalType": "Witnet.Timestamp",
              "name": "timestamp",
              "type": "uint64"
            },
            {
              "internalType": "Witnet.TransactionHash",
              "name": "trail",
              "type": "bytes32"
            }
          ],
          "internalType": "struct IWitPriceFeedsTypes.Price",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "IWitPyth.ID",
          "name": "id",
          "type": "bytes32"
        },
        {
          "internalType": "uint64",
          "name": "age",
          "type": "uint64"
        }
      ],
      "name": "getPriceNotOlderThan",
      "outputs": [
        {
          "components": [
            {
              "internalType": "int64",
              "name": "price",
              "type": "int64"
            },
            {
              "internalType": "uint64",
              "name": "conf",
              "type": "uint64"
            },
            {
              "internalType": "int32",
              "name": "expo",
              "type": "int32"
            },
            {
              "internalType": "uint256",
              "name": "publishTime",
              "type": "uint256"
            }
          ],
          "internalType": "struct IWitPyth.PythPrice",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "IWitPriceFeedsTypes.ID4",
          "name": "id4",
          "type": "bytes4"
        },
        {
          "internalType": "uint24",
          "name": "age",
          "type": "uint24"
        }
      ],
      "name": "getPriceNotOlderThan",
      "outputs": [
        {
          "components": [
            {
              "internalType": "int8",
              "name": "exponent",
              "type": "int8"
            },
            {
              "internalType": "uint64",
              "name": "price",
              "type": "uint64"
            },
            {
              "internalType": "int56",
              "name": "deltaPrice",
              "type": "int56"
            },
            {
              "internalType": "Witnet.Timestamp",
              "name": "timestamp",
              "type": "uint64"
            },
            {
              "internalType": "Witnet.TransactionHash",
              "name": "trail",
              "type": "bytes32"
            }
          ],
          "internalType": "struct IWitPriceFeedsTypes.Price",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "IWitPyth.ID",
          "name": "id",
          "type": "bytes32"
        }
      ],
      "name": "getPriceUnsafe",
      "outputs": [
        {
          "components": [
            {
              "internalType": "int64",
              "name": "price",
              "type": "int64"
            },
            {
              "internalType": "uint64",
              "name": "conf",
              "type": "uint64"
            },
            {
              "internalType": "int32",
              "name": "expo",
              "type": "int32"
            },
            {
              "internalType": "uint256",
              "name": "publishTime",
              "type": "uint256"
            }
          ],
          "internalType": "struct IWitPyth.PythPrice",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "IWitPriceFeedsTypes.ID4",
          "name": "id4",
          "type": "bytes4"
        }
      ],
      "name": "getPriceUnsafe",
      "outputs": [
        {
          "components": [
            {
              "internalType": "int8",
              "name": "exponent",
              "type": "int8"
            },
            {
              "internalType": "uint64",
              "name": "price",
              "type": "uint64"
            },
            {
              "internalType": "int56",
              "name": "deltaPrice",
              "type": "int56"
            },
            {
              "internalType": "Witnet.Timestamp",
              "name": "timestamp",
              "type": "uint64"
            },
            {
              "internalType": "Witnet.TransactionHash",
              "name": "trail",
              "type": "bytes32"
            }
          ],
          "internalType": "struct IWitPriceFeedsTypes.Price",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "IWitPriceFeedsTypes.ID4",
          "name": "id4",
          "type": "bytes4"
        }
      ],
      "name": "lookupPriceFeed",
      "outputs": [
        {
          "components": [
            {
              "internalType": "IWitPyth.ID",
              "name": "id",
              "type": "bytes32"
            },
            {
              "internalType": "int8",
              "name": "exponent",
              "type": "int8"
            },
            {
              "internalType": "string",
              "name": "symbol",
              "type": "string"
            },
            {
              "components": [
                {
                  "internalType": "enum IWitPriceFeedsTypes.Mappers",
                  "name": "class",
                  "type": "uint8"
                },
                {
                  "internalType": "string[]",
                  "name": "deps",
                  "type": "string[]"
                }
              ],
              "internalType": "struct IWitPriceFeedsTypes.Mapper",
              "name": "mapper",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "enum IWitPriceFeedsTypes.Oracles",
                  "name": "class",
                  "type": "uint8"
                },
                {
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "sources",
                  "type": "bytes32"
                }
              ],
              "internalType": "struct IWitPriceFeedsTypes.Oracle",
              "name": "oracle",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint24",
                  "name": "callbackGas",
                  "type": "uint24"
                },
                {
                  "internalType": "bool",
                  "name": "computeEma",
                  "type": "bool"
                },
                {
                  "internalType": "uint24",
                  "name": "cooldownSecs",
                  "type": "uint24"
                },
                {
                  "internalType": "uint24",
                  "name": "heartbeatSecs",
                  "type": "uint24"
                },
                {
                  "internalType": "uint16",
                  "name": "maxDeviation1000",
                  "type": "uint16"
                },
                {
                  "internalType": "uint16",
                  "name": "minWitnesses",
                  "type": "uint16"
                }
              ],
              "internalType": "struct IWitPriceFeedsTypes.UpdateConditions",
              "name": "updateConditions",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "int8",
                  "name": "exponent",
                  "type": "int8"
                },
                {
                  "internalType": "uint64",
                  "name": "price",
                  "type": "uint64"
                },
                {
                  "internalType": "int56",
                  "name": "deltaPrice",
                  "type": "int56"
                },
                {
                  "internalType": "Witnet.Timestamp",
                  "name": "timestamp",
                  "type": "uint64"
                },
                {
                  "internalType": "Witnet.TransactionHash",
                  "name": "trail",
                  "type": "bytes32"
                }
              ],
              "internalType": "struct IWitPriceFeedsTypes.Price",
              "name": "lastUpdate",
              "type": "tuple"
            }
          ],
          "internalType": "struct IWitPriceFeedsTypes.Info",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "IWitPriceFeedsTypes.ID4",
          "name": "id4",
          "type": "bytes4"
        }
      ],
      "name": "lookupPriceFeedCaption",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "IWitPriceFeedsTypes.ID4",
          "name": "id4",
          "type": "bytes4"
        }
      ],
      "name": "lookupPriceFeedExponent",
      "outputs": [
        {
          "internalType": "int8",
          "name": "",
          "type": "int8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "IWitPriceFeedsTypes.ID4",
          "name": "id4",
          "type": "bytes4"
        }
      ],
      "name": "lookupPriceFeedID",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "lookupPriceFeeds",
      "outputs": [
        {
          "components": [
            {
              "internalType": "IWitPyth.ID",
              "name": "id",
              "type": "bytes32"
            },
            {
              "internalType": "int8",
              "name": "exponent",
              "type": "int8"
            },
            {
              "internalType": "string",
              "name": "symbol",
              "type": "string"
            },
            {
              "components": [
                {
                  "internalType": "enum IWitPriceFeedsTypes.Mappers",
                  "name": "class",
                  "type": "uint8"
                },
                {
                  "internalType": "string[]",
                  "name": "deps",
                  "type": "string[]"
                }
              ],
              "internalType": "struct IWitPriceFeedsTypes.Mapper",
              "name": "mapper",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "enum IWitPriceFeedsTypes.Oracles",
                  "name": "class",
                  "type": "uint8"
                },
                {
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "sources",
                  "type": "bytes32"
                }
              ],
              "internalType": "struct IWitPriceFeedsTypes.Oracle",
              "name": "oracle",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint24",
                  "name": "callbackGas",
                  "type": "uint24"
                },
                {
                  "internalType": "bool",
                  "name": "computeEma",
                  "type": "bool"
                },
                {
                  "internalType": "uint24",
                  "name": "cooldownSecs",
                  "type": "uint24"
                },
                {
                  "internalType": "uint24",
                  "name": "heartbeatSecs",
                  "type": "uint24"
                },
                {
                  "internalType": "uint16",
                  "name": "maxDeviation1000",
                  "type": "uint16"
                },
                {
                  "internalType": "uint16",
                  "name": "minWitnesses",
                  "type": "uint16"
                }
              ],
              "internalType": "struct IWitPriceFeedsTypes.UpdateConditions",
              "name": "updateConditions",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "int8",
                  "name": "exponent",
                  "type": "int8"
                },
                {
                  "internalType": "uint64",
                  "name": "price",
                  "type": "uint64"
                },
                {
                  "internalType": "int56",
                  "name": "deltaPrice",
                  "type": "int56"
                },
                {
                  "internalType": "Witnet.Timestamp",
                  "name": "timestamp",
                  "type": "uint64"
                },
                {
                  "internalType": "Witnet.TransactionHash",
                  "name": "trail",
                  "type": "bytes32"
                }
              ],
              "internalType": "struct IWitPriceFeedsTypes.Price",
              "name": "lastUpdate",
              "type": "tuple"
            }
          ],
          "internalType": "struct IWitPriceFeedsTypes.Info[]",
          "name": "",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "caption",
          "type": "string"
        }
      ],
      "name": "supportsCaption",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "witOracle",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"DeviantPrice\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HotPrice\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidArgument\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidGovernanceTarget\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidUpdateData\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidUpdateDataSource\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFreshUpdate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PriceFeedNotFound\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PriceFeedNotFoundWithinRange\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"StalePrice\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"IWitPriceFeedsTypes.ID4\",\"name\":\"id4\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"caption\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int8\",\"name\":\"exponent\",\"type\":\"int8\"},{\"indexed\":false,\"internalType\":\"enum IWitPriceFeedsTypes.Mappers\",\"name\":\"mapper\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"string[]\",\"name\":\"dependencies\",\"type\":\"string[]\"}],\"name\":\"PriceFeedMapper\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"IWitPriceFeedsTypes.ID4\",\"name\":\"id4\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"caption\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int8\",\"name\":\"exponent\",\"type\":\"int8\"},{\"indexed\":false,\"internalType\":\"enum IWitPriceFeedsTypes.Oracles\",\"name\":\"oracle\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oracleAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"oracleSources\",\"type\":\"bytes32\"}],\"name\":\"PriceFeedOracle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"IWitPriceFeedsTypes.ID4\",\"name\":\"id4\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"caption\",\"type\":\"string\"}],\"name\":\"PriceFeedRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"IWitPriceFeedsTypes.ID4\",\"name\":\"ID4\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"Witnet.Timestamp\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"Witnet.TransactionHash\",\"name\":\"trail\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"price\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"int56\",\"name\":\"deltaPrice\",\"type\":\"int56\"},{\"indexed\":false,\"internalType\":\"int8\",\"name\":\"exponent\",\"type\":\"int8\"}],\"name\":\"PriceFeedUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"publishTime\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"int64\",\"name\":\"price\",\"type\":\"int64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"PriceFeedUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"IWitPriceFeedsTypes.ID4\",\"name\":\"id4\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"caption\",\"type\":\"string\"},{\"components\":[{\"internalType\":\"uint24\",\"name\":\"callbackGas\",\"type\":\"uint24\"},{\"internalType\":\"bool\",\"name\":\"computeEma\",\"type\":\"bool\"},{\"internalType\":\"uint24\",\"name\":\"cooldownSecs\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"heartbeatSecs\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"maxDeviation1000\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"minWitnesses\",\"type\":\"uint16\"}],\"indexed\":false,\"internalType\":\"struct IWitPriceFeedsTypes.UpdateConditions\",\"name\":\"conditions\",\"type\":\"tuple\"}],\"name\":\"PriceFeedUpdateConditions\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"base\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"curator\",\"type\":\"address\"}],\"name\":\"clone\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"consumer\",\"outputs\":[{\"internalType\":\"contract IWitPriceFeedsConsumer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"}],\"name\":\"createChainlinkAggregator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultUpdateConditions\",\"outputs\":[{\"components\":[{\"internalType\":\"uint24\",\"name\":\"callbackGas\",\"type\":\"uint24\"},{\"internalType\":\"bool\",\"name\":\"computeEma\",\"type\":\"bool\"},{\"internalType\":\"uint24\",\"name\":\"cooldownSecs\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"heartbeatSecs\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"maxDeviation1000\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"minWitnesses\",\"type\":\"uint16\"}],\"internalType\":\"struct IWitPriceFeedsTypes.UpdateConditions\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"footprint\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"IWitPyth.ID\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"getEmaPrice\",\"outputs\":[{\"components\":[{\"internalType\":\"int64\",\"name\":\"price\",\"type\":\"int64\"},{\"internalType\":\"uint64\",\"name\":\"conf\",\"type\":\"uint64\"},{\"internalType\":\"int32\",\"name\":\"expo\",\"type\":\"int32\"},{\"internalType\":\"uint256\",\"name\":\"publishTime\",\"type\":\"uint256\"}],\"internalType\":\"struct IWitPyth.PythPrice\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"IWitPyth.ID\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"age\",\"type\":\"uint64\"}],\"name\":\"getEmaPriceNotOlderThan\",\"outputs\":[{\"components\":[{\"internalType\":\"int64\",\"name\":\"price\",\"type\":\"int64\"},{\"internalType\":\"uint64\",\"name\":\"conf\",\"type\":\"uint64\"},{\"internalType\":\"int32\",\"name\":\"expo\",\"type\":\"int32\"},{\"internalType\":\"uint256\",\"name\":\"publishTime\",\"type\":\"uint256\"}],\"internalType\":\"struct IWitPyth.PythPrice\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"IWitPyth.ID\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"getEmaPriceUnsafe\",\"outputs\":[{\"components\":[{\"internalType\":\"int64\",\"name\":\"price\",\"type\":\"int64\"},{\"internalType\":\"uint64\",\"name\":\"conf\",\"type\":\"uint64\"},{\"internalType\":\"int32\",\"name\":\"expo\",\"type\":\"int32\"},{\"internalType\":\"uint256\",\"name\":\"publishTime\",\"type\":\"uint256\"}],\"internalType\":\"struct IWitPyth.PythPrice\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"IWitPyth.ID\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"getPrice\",\"outputs\":[{\"components\":[{\"internalType\":\"int64\",\"name\":\"price\",\"type\":\"int64\"},{\"internalType\":\"uint64\",\"name\":\"conf\",\"type\":\"uint64\"},{\"internalType\":\"int32\",\"name\":\"expo\",\"type\":\"int32\"},{\"internalType\":\"uint256\",\"name\":\"publishTime\",\"type\":\"uint256\"}],\"internalType\":\"struct IWitPyth.PythPrice\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"IWitPriceFeedsTypes.ID4\",\"name\":\"id4\",\"type\":\"bytes4\"}],\"name\":\"getPrice\",\"outputs\":[{\"components\":[{\"internalType\":\"int8\",\"name\":\"exponent\",\"type\":\"int8\"},{\"internalType\":\"uint64\",\"name\":\"price\",\"type\":\"uint64\"},{\"internalType\":\"int56\",\"name\":\"deltaPrice\",\"type\":\"int56\"},{\"internalType\":\"Witnet.Timestamp\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"Witnet.TransactionHash\",\"name\":\"trail\",\"type\":\"bytes32\"}],\"internalType\":\"struct IWitPriceFeedsTypes.Price\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"IWitPyth.ID\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"age\",\"type\":\"uint64\"}],\"name\":\"getPriceNotOlderThan\",\"outputs\":[{\"components\":[{\"internalType\":\"int64\",\"name\":\"price\",\"type\":\"int64\"},{\"internalType\":\"uint64\",\"name\":\"conf\",\"type\":\"uint64\"},{\"internalType\":\"int32\",\"name\":\"expo\",\"type\":\"int32\"},{\"internalType\":\"uint256\",\"name\":\"publishTime\",\"type\":\"uint256\"}],\"internalType\":\"struct IWitPyth.PythPrice\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"IWitPriceFeedsTypes.ID4\",\"name\":\"id4\",\"type\":\"bytes4\"},{\"internalType\":\"uint24\",\"name\":\"age\",\"type\":\"uint24\"}],\"name\":\"getPriceNotOlderThan\",\"outputs\":[{\"components\":[{\"internalType\":\"int8\",\"name\":\"exponent\",\"type\":\"int8\"},{\"internalType\":\"uint64\",\"name\":\"price\",\"type\":\"uint64\"},{\"internalType\":\"int56\",\"name\":\"deltaPrice\",\"type\":\"int56\"},{\"internalType\":\"Witnet.Timestamp\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"Witnet.TransactionHash\",\"name\":\"trail\",\"type\":\"bytes32\"}],\"internalType\":\"struct IWitPriceFeedsTypes.Price\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"IWitPyth.ID\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"getPriceUnsafe\",\"outputs\":[{\"components\":[{\"internalType\":\"int64\",\"name\":\"price\",\"type\":\"int64\"},{\"internalType\":\"uint64\",\"name\":\"conf\",\"type\":\"uint64\"},{\"internalType\":\"int32\",\"name\":\"expo\",\"type\":\"int32\"},{\"internalType\":\"uint256\",\"name\":\"publishTime\",\"type\":\"uint256\"}],\"internalType\":\"struct IWitPyth.PythPrice\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"IWitPriceFeedsTypes.ID4\",\"name\":\"id4\",\"type\":\"bytes4\"}],\"name\":\"getPriceUnsafe\",\"outputs\":[{\"components\":[{\"internalType\":\"int8\",\"name\":\"exponent\",\"type\":\"int8\"},{\"internalType\":\"uint64\",\"name\":\"price\",\"type\":\"uint64\"},{\"internalType\":\"int56\",\"name\":\"deltaPrice\",\"type\":\"int56\"},{\"internalType\":\"Witnet.Timestamp\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"Witnet.TransactionHash\",\"name\":\"trail\",\"type\":\"bytes32\"}],\"internalType\":\"struct IWitPriceFeedsTypes.Price\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"getUpdateFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"}],\"name\":\"hash\",\"outputs\":[{\"internalType\":\"IWitPyth.ID\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"IWitPriceFeedsTypes.ID4\",\"name\":\"id4\",\"type\":\"bytes4\"}],\"name\":\"lookupPriceFeed\",\"outputs\":[{\"components\":[{\"internalType\":\"IWitPyth.ID\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"int8\",\"name\":\"exponent\",\"type\":\"int8\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"components\":[{\"internalType\":\"enum IWitPriceFeedsTypes.Mappers\",\"name\":\"class\",\"type\":\"uint8\"},{\"internalType\":\"string[]\",\"name\":\"deps\",\"type\":\"string[]\"}],\"internalType\":\"struct IWitPriceFeedsTypes.Mapper\",\"name\":\"mapper\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum IWitPriceFeedsTypes.Oracles\",\"name\":\"class\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"sources\",\"type\":\"bytes32\"}],\"internalType\":\"struct IWitPriceFeedsTypes.Oracle\",\"name\":\"oracle\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint24\",\"name\":\"callbackGas\",\"type\":\"uint24\"},{\"internalType\":\"bool\",\"name\":\"computeEma\",\"type\":\"bool\"},{\"internalType\":\"uint24\",\"name\":\"cooldownSecs\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"heartbeatSecs\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"maxDeviation1000\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"minWitnesses\",\"type\":\"uint16\"}],\"internalType\":\"struct IWitPriceFeedsTypes.UpdateConditions\",\"name\":\"updateConditions\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"int8\",\"name\":\"exponent\",\"type\":\"int8\"},{\"internalType\":\"uint64\",\"name\":\"price\",\"type\":\"uint64\"},{\"internalType\":\"int56\",\"name\":\"deltaPrice\",\"type\":\"int56\"},{\"internalType\":\"Witnet.Timestamp\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"Witnet.TransactionHash\",\"name\":\"trail\",\"type\":\"bytes32\"}],\"internalType\":\"struct IWitPriceFeedsTypes.Price\",\"name\":\"lastUpdate\",\"type\":\"tuple\"}],\"internalType\":\"struct IWitPriceFeedsTypes.Info\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"IWitPriceFeedsTypes.ID4\",\"name\":\"id4\",\"type\":\"bytes4\"}],\"name\":\"lookupPriceFeedCaption\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"IWitPriceFeedsTypes.ID4\",\"name\":\"id4\",\"type\":\"bytes4\"}],\"name\":\"lookupPriceFeedExponent\",\"outputs\":[{\"internalType\":\"int8\",\"name\":\"\",\"type\":\"int8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"IWitPriceFeedsTypes.ID4\",\"name\":\"id4\",\"type\":\"bytes4\"}],\"name\":\"lookupPriceFeedID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lookupPriceFeeds\",\"outputs\":[{\"components\":[{\"internalType\":\"IWitPyth.ID\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"int8\",\"name\":\"exponent\",\"type\":\"int8\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"components\":[{\"internalType\":\"enum IWitPriceFeedsTypes.Mappers\",\"name\":\"class\",\"type\":\"uint8\"},{\"internalType\":\"string[]\",\"name\":\"deps\",\"type\":\"string[]\"}],\"internalType\":\"struct IWitPriceFeedsTypes.Mapper\",\"name\":\"mapper\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum IWitPriceFeedsTypes.Oracles\",\"name\":\"class\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"sources\",\"type\":\"bytes32\"}],\"internalType\":\"struct IWitPriceFeedsTypes.Oracle\",\"name\":\"oracle\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint24\",\"name\":\"callbackGas\",\"type\":\"uint24\"},{\"internalType\":\"bool\",\"name\":\"computeEma\",\"type\":\"bool\"},{\"internalType\":\"uint24\",\"name\":\"cooldownSecs\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"heartbeatSecs\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"maxDeviation1000\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"minWitnesses\",\"type\":\"uint16\"}],\"internalType\":\"struct IWitPriceFeedsTypes.UpdateConditions\",\"name\":\"updateConditions\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"int8\",\"name\":\"exponent\",\"type\":\"int8\"},{\"internalType\":\"uint64\",\"name\":\"price\",\"type\":\"uint64\"},{\"internalType\":\"int56\",\"name\":\"deltaPrice\",\"type\":\"int56\"},{\"internalType\":\"Witnet.Timestamp\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"Witnet.TransactionHash\",\"name\":\"trail\",\"type\":\"bytes32\"}],\"internalType\":\"struct IWitPriceFeedsTypes.Price\",\"name\":\"lastUpdate\",\"type\":\"tuple\"}],\"internalType\":\"struct IWitPriceFeedsTypes.Info[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"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\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"name\":\"removePriceFeed\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"settleConsumer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint24\",\"name\":\"callbackGas\",\"type\":\"uint24\"},{\"internalType\":\"bool\",\"name\":\"computeEma\",\"type\":\"bool\"},{\"internalType\":\"uint24\",\"name\":\"cooldownSecs\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"heartbeatSecs\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"maxDeviation1000\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"minWitnesses\",\"type\":\"uint16\"}],\"internalType\":\"struct IWitPriceFeedsTypes.UpdateConditions\",\"name\":\"\",\"type\":\"tuple\"}],\"name\":\"settleDefaultUpdateConditions\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"caption\",\"type\":\"string\"},{\"internalType\":\"int8\",\"name\":\"exponent\",\"type\":\"int8\"},{\"internalType\":\"enum IWitPriceFeedsTypes.Mappers\",\"name\":\"mapper\",\"type\":\"uint8\"},{\"internalType\":\"string[]\",\"name\":\"deps\",\"type\":\"string[]\"}],\"name\":\"settlePriceFeedMapper\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"caption\",\"type\":\"string\"},{\"internalType\":\"int8\",\"name\":\"exponent\",\"type\":\"int8\"},{\"internalType\":\"enum IWitPriceFeedsTypes.Oracles\",\"name\":\"oracle\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"sources\",\"type\":\"bytes32\"}],\"name\":\"settlePriceFeedOracle\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"caption\",\"type\":\"string\"},{\"internalType\":\"int8\",\"name\":\"exponent\",\"type\":\"int8\"},{\"internalType\":\"bytes\",\"name\":\"radonBytecode\",\"type\":\"bytes\"}],\"name\":\"settlePriceFeedRadonBytecode\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"caption\",\"type\":\"string\"},{\"internalType\":\"int8\",\"name\":\"exponent\",\"type\":\"int8\"},{\"internalType\":\"Witnet.RadonHash\",\"name\":\"radonHash\",\"type\":\"bytes32\"}],\"name\":\"settlePriceFeedRadonHash\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"caption\",\"type\":\"string\"},{\"components\":[{\"internalType\":\"uint24\",\"name\":\"callbackGas\",\"type\":\"uint24\"},{\"internalType\":\"bool\",\"name\":\"computeEma\",\"type\":\"bool\"},{\"internalType\":\"uint24\",\"name\":\"cooldownSecs\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"heartbeatSecs\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"maxDeviation1000\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"minWitnesses\",\"type\":\"uint16\"}],\"internalType\":\"struct IWitPriceFeedsTypes.UpdateConditions\",\"name\":\"conditions\",\"type\":\"tuple\"}],\"name\":\"settlePriceFeedUpdateConditions\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"caption\",\"type\":\"string\"}],\"name\":\"supportsCaption\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"witOracle\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"DeviantPrice()\":[{\"details\":\"Signature: 0x7b0d2bb5\"}],\"HotPrice()\":[{\"details\":\"Signature: 0x0fbbc581\"}],\"InvalidArgument()\":[{\"details\":\"Signature: 0xa9cb9e0d\"}],\"InvalidUpdateData()\":[{\"details\":\"Signature: 0xe69ffece\"}],\"InvalidUpdateDataSource()\":[{\"details\":\"Signature: 0xe60dce71\"}],\"NoFreshUpdate()\":[{\"details\":\"Signature: 0xde2c57fa\"}],\"PriceFeedNotFound()\":[{\"details\":\"Signature: 0x14aebe68\"}],\"PriceFeedNotFoundWithinRange()\":[{\"details\":\"Signature: 0x45805f5d\"}],\"StalePrice()\":[{\"details\":\"Signature: 0x19abf40e\"}]},\"events\":{\"PriceFeedUpdate(bytes32,uint64,int64,uint64)\":{\"details\":\"Emitted when the price feed with `id` has received a fresh update.\",\"params\":{\"id\":\"The Pyth Price Feed ID.\",\"price\":\"Price of the given price update.\",\"publishTime\":\"Publish time of the given price update.\"}}},\"kind\":\"dev\",\"methods\":{\"clone(address)\":{\"params\":{\"curator\":\"Address that will have rights to manage price feeds on the new light-proxy clone.\"}},\"consumer()\":{\"details\":\"If zero, new price updates will not be reported to any other external address.The consumer contract must implement the `IWitPriceFeedsConsumer` interface, and accept this instance as source of truth.It can only be settled by a curator on cloned instances.\"},\"createChainlinkAggregator(string)\":{\"details\":\"Reverts if symbol is not supported.\"},\"getEmaPrice(bytes32)\":{\"details\":\"Reverts if the EMA price is not available.\",\"params\":{\"id\":\"The Price Feed ID of which to fetch the EMA price.\"}},\"getEmaPriceNotOlderThan(bytes32,uint64)\":{\"details\":\"This function is a sanity-checked version of `getEmaPriceUnsafe` which is useful in applications that require a sufficiently-recent price. Reverts if the price wasn't updated sufficiently recently.\"},\"getEmaPriceUnsafe(bytes32)\":{\"details\":\"This function returns the same price as `getEmaPrice` in the case where the price is available. However, if the price is not recent this function returns the latest available price. The returned price can be from arbitrarily far in the past; this function makes no guarantees that the returned price is recent or useful for any particular application. Users of this function should check the `timestamp` in the price to ensure that the returned price is sufficiently recent for their application. If you are considering using this function, it may be safer / easier to use either `getEmaPrice` or `getEmaPriceNoOlderThan`.\"},\"getPrice(bytes32)\":{\"details\":\"Reverts if the price has not been updated within the last `heartbeatSecs`. \",\"params\":{\"id\":\"The Price Feed ID of which to fetch the price.\"}},\"getPrice(bytes4)\":{\"details\":\"Reverts if: - `StalePrice()`: the price feed has not been updated within the last `UpdateConditions.heartbeatSecs`, - `DeviantPrice()`: a deviation greater than `UpdateConditions.maxDeviation1000` was detected upon last update attempt. - `InvalidGovernanceTarget()`: no EMA is curretly settled to be computed for this price feed.\",\"params\":{\"id4\":\"Unique ID4 identifier of a price feed supported by this contract.\"}},\"getPriceNotOlderThan(bytes32,uint64)\":{\"details\":\"This function is a sanity-checked version of `getPriceUnsafe` which is useful in applications that require a sufficiently-recent price.  Reverts if the price wasn't updated sufficiently recently.\"},\"getPriceNotOlderThan(bytes4,uint24)\":{\"details\":\"Reverts if: - `StalePrice()`: the price feed has not been updated within the last `_age` seconds, - `InvalidGovernanceTarget()`: no EMA is settled to be computed for specified price feed. \",\"params\":{\"age\":\"Maximum age of acceptable price value.\",\"id4\":\"Unique ID4 identifier of a price feed supported by this contract.\"}},\"getPriceUnsafe(bytes32)\":{\"details\":\"This function returns the most recent price update in this contract without any recency checks. This function is unsafe as the returned price update may be arbitrarily far in the past.  Users of this function should check the `timestamp` in the price to ensure that the returned price is sufficiently recent for their application. If you are considering using this function, it may be safer / easier to use either `getPrice` or `getPriceNoOlderThan`.\"},\"getPriceUnsafe(bytes4)\":{\"details\":\"Reverts if: - `InvalidGovernanceTarget()`: no EMA is settled to be computed for specified price feed. \",\"params\":{\"id4\":\"Unique ID4 identifier of a price feed supported by this contract.\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"DeviantPrice()\":[{\"notice\":\"Requested price deviated too much after previous update.\"}],\"HotPrice()\":[{\"notice\":\"Attempting to update a price before cooldown period expires.\"}],\"InvalidArgument()\":[{\"notice\":\"Function arguments are invalid (e.g., the arguments lengths mismatch)\"}],\"InvalidGovernanceTarget()\":[{\"notice\":\"Either the number of witnesses that solved a price update is not within the settled range in this contract, or an EMA is being asked for a price feed that's not settled for the EMA to be computed. \"}],\"InvalidUpdateData()\":[{\"notice\":\"Update data is invalid (e.g. badly serialized, or bad proof was provided).\"}],\"InvalidUpdateDataSource()\":[{\"notice\":\"Update data is coming from an invalid Wit/Oracle Radon Hash.\"}],\"NoFreshUpdate()\":[{\"notice\":\"There is no fresh update, whereas expected fresh updates.\"}],\"PriceFeedNotFound()\":[{\"notice\":\"Price feed not found or it is not pushed on-chain yet.\"}],\"PriceFeedNotFoundWithinRange()\":[{\"notice\":\"There is no price feed found within the given range or it does not exist.\"}],\"StalePrice()\":[{\"notice\":\"Requested price is stale.\"}]},\"events\":{\"PriceFeedMapper(address,bytes4,string,int8,uint8,string[])\":{\"notice\":\"Emitted when a new routed price feed gets settled.\"},\"PriceFeedOracle(address,bytes4,string,int8,uint8,address,bytes32)\":{\"notice\":\"Emitted when a new oraclized price feed gets settled.\"},\"PriceFeedRemoved(address,bytes4,string)\":{\"notice\":\"Emitted when a price feeds gets removed from the list of supported price feeds.\"},\"PriceFeedUpdateConditions(address,bytes4,string,(uint24,bool,uint24,uint24,uint16,uint16))\":{\"notice\":\"Emitted when the update conditions of some existing price feed get altered.\"}},\"kind\":\"user\",\"methods\":{\"base()\":{\"notice\":\"Address of the underlying logic contract.\"},\"clone(address)\":{\"notice\":\"Creates a light-proxy clone to the `base()` contract address, to be owned by the specified `curator` address.  Curators of cloned contracts can optionally settle one single `IWitPriceFeedConsumer` consuming contract.  The consuming contract, if settled, will be immediately reported every time a new Witnet-certified price update gets pushed into the cloned instance. Either way, price feeds data will be stored in the `WitPriceFeeds` storage. \"},\"consumer()\":{\"notice\":\"Returns the consumer address where all price updates will be reported to.\"},\"createChainlinkAggregator(string)\":{\"notice\":\"Creates a Chainlink Aggregator proxy to the specified symbol.\"},\"defaultUpdateConditions()\":{\"notice\":\"Default update conditions that apply to brand new price feeds.\"},\"footprint()\":{\"notice\":\"Returns a unique hash determined by the combination of data sources being used by  supported non-routed price feeds, and dependencies of all supported routed  price feeds. The footprint changes if any price feed is modified, added, removed  or if the dependency tree of any routed price feed is altered.\"},\"getEmaPrice(bytes32)\":{\"notice\":\"Returns the exponentially-weighted moving average price.\"},\"getEmaPriceNotOlderThan(bytes32,uint64)\":{\"notice\":\"Returns the exponentially-weighted moving average price that is no older than `age` seconds of the current time.\"},\"getEmaPriceUnsafe(bytes32)\":{\"notice\":\"Returns the exponentially-weighted moving average price of a price feed without any sanity checks.\"},\"getPrice(bytes32)\":{\"notice\":\"Returns the price and confidence interval.\"},\"getPrice(bytes4)\":{\"notice\":\"Returns last update price for the specified ID4 price feed. Note: This function is sanity-checked version of `getPriceUnsafe` which is useful in applications and smart contracts that require recentl updated price, and no hint of market deviation being currently excessive. \"},\"getPriceNotOlderThan(bytes32,uint64)\":{\"notice\":\"Returns the price that is no older than `age` seconds of the current time.\"},\"getPriceNotOlderThan(bytes4,uint24)\":{\"notice\":\"Returns last updated price if no older than `_age` seconds of the current time. Note: This function is a sanity-checked version of `getPriceUnsafe` which is useful in applications and smart contracts that require last known non-deviant price, last updated within specified time range.\"},\"getPriceUnsafe(bytes32)\":{\"notice\":\"Returns the price of a price feed without any sanity checks.\"},\"getPriceUnsafe(bytes4)\":{\"notice\":\"Returns last updated price without any sanity checks. Note: This function is unsafe as the returned price update may be arbitrarily far in the past. Users of this function should check the `timestamp` of each price feed to ensure that the returned values  are sufficiently recent for their application. If you need safe access to fresh data, please consider using calling to either `getPrice` or `getPriceNoOlderThan` variants. \"},\"getUpdateFee(bytes)\":{\"notice\":\"Legacy-compliant to get the required fee to update an array of price updates, which would be always 0 if relying on the Wit/Oracle bridging framework. \"},\"hash(string)\":{\"notice\":\"Determines unique ID for the specified symbol.\"},\"lookupPriceFeeds()\":{\"notice\":\"Returns last known price updates and deviations for all supported price feeds without any sanity checks.    \"},\"supportsCaption(string)\":{\"notice\":\"Tells whether there is a price feed settled with the specified caption.\"},\"witOracle()\":{\"notice\":\"The Wit/Oracle core address accepted as source of truth.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/interfaces/IWitPriceFeeds.sol\":\"IWitPriceFeeds\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"project:/contracts/interfaces/IWitPriceFeeds.sol\":{\"keccak256\":\"0xb29abe8819699e37e91b41c4cb63273fbb0ab8c482a09c31da6c91d7338cc405\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9325f3cbd3b396216268ec83d583abd86f44a5d656c375485296e256b3c2f2a\",\"dweb:/ipfs/Qme8pjdacDLa8HLKF7Sm3XZa9uUQn1EL7gANLnAbak8y4f\"]},\"project:/contracts/interfaces/IWitPriceFeedsAdmin.sol\":{\"keccak256\":\"0xd05b103840eeb8a4770e140dbe91bd40dd33d92959d226c57a2ae45a5e615355\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29e6104b0b62c676bb797ce8d01512550058f5b6de210b2467ba9bb0dfe8c00f\",\"dweb:/ipfs/QmUAgsVJYHqiRFrrnWCYo5vGJRaN4VsZvcBXJWYJUF5QyV\"]},\"project:/contracts/interfaces/IWitPriceFeedsConsumer.sol\":{\"keccak256\":\"0x2c12c7f4502a2953f352b67688cd8841a1198c9b8e8f9f87ab3fc0163b7533e9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d82ec627ac4c38a7336b03541c118d606e107128ba109097857a26d376e92f33\",\"dweb:/ipfs/QmQBmvL5ziD7fY2vDBNpbDbbhnwi8Cwh4XVthUjTd9ZyCF\"]},\"project:/contracts/interfaces/IWitPriceFeedsEvents.sol\":{\"keccak256\":\"0xf8b1a2ca8dd8dc8a5b8debf18f4c32df404709a4b03353c939e57a92a4e41b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f755b639781013ae0bae92f063b1f5b440c187bbc9a7f938b6982e579114acfe\",\"dweb:/ipfs/QmZafsjeELGnVdbXvsiXeQ82vR7DBFCrwDLGqeopgxBgyC\"]},\"project:/contracts/interfaces/IWitPriceFeedsTypes.sol\":{\"keccak256\":\"0x68e2189e863f50e8d0aad8394a526df00c1e626886c23aa24c915427e5285e46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5ff40355d4144e7c08f033b55e9ef1b5994bbd83bbfbd7a41129b141f164194\",\"dweb:/ipfs/QmXMhM7GXaVXnCQ1VFB4kPhbhbfktuNFKqMGXMtWLgUk3d\"]},\"project:/contracts/interfaces/legacy/IWitPyth.sol\":{\"keccak256\":\"0xa06a34a5e553beae7dbe09a5d1049557190511e696a1b855ab5e1196a06048a2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d2c814b7be5539147c0ba1b55f6cddcad382d5e5e9f9de545d2d428c1989c7de\",\"dweb:/ipfs/QmY8KSV3PW2FBQVzXidLQ21KvDJ1v6y8WHaV8uxsqThJCC\"]},\"project:/contracts/interfaces/legacy/IWitPythErrors.sol\":{\"keccak256\":\"0x7d10dfd625a4914e4017cde140397f9f236f726ea82b4feed1d889f852866c1d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5bbf8dc2bbac36cf0a141f7062b6ed8143cffaee7969a1afc3cf0d1971e8cf18\",\"dweb:/ipfs/QmbLiZwggZwhiTLJurBkAu492xAZZ9MXWiknsuGnLYNXhP\"]},\"project:/contracts/interfaces/legacy/IWitPythEvents.sol\":{\"keccak256\":\"0xacca21f4bb4d740de63f4f2e469e8313b1d8f9a7d2340efcc17981c3510c2800\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da8b0493082593838fbc4df2431c1983a82165ae1f17215e988951c0c1ef3882\",\"dweb:/ipfs/QmNUX9K3UqxiR9igT87iLja8h3u7htp83ZhAGZ6UgD3BZP\"]},\"project:/contracts/libs/Bech32.sol\":{\"keccak256\":\"0x14618323a0efe7586c20906a2e9cee7ad63baa976ff231c57f7f2d7d3707fb8b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a19f05fe84047a7a6d3d6fc39972b432e6e536aa70472386a9d7a6d9aab64a64\",\"dweb:/ipfs/QmcHwUY66yjiotRH4Q3kbRvSzcHyLQ1yHL3KbtQKiMhtZE\"]},\"project:/contracts/libs/Secp256k1.sol\":{\"keccak256\":\"0xbe686002da5004ff39dd70709f3820eba2afe9323ae9cb894009c161e4b1a666\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://18fab91775216de0707cea9ad285b10be09127461a13432fea358bf9cb2a0c2e\",\"dweb:/ipfs/QmeRUGsgstnM4hxM9hpkBf3L6cE5btirEaowcMxmuw3utj\"]},\"project:/contracts/libs/Witnet.sol\":{\"keccak256\":\"0x1d446c3e534e40e676d1763bfb2897fadfac8afed904ab757843d7d6770b0a6c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://338fb1073f17d64e8d31bfe492d9475ce906788ee08e6489ce30413f91dc1328\",\"dweb:/ipfs/QmPe5QX2AGTnQFjse1Xttq4ZYWwYAiXoySb5VUui3PqPhk\"]},\"project:/contracts/libs/WitnetBuffer.sol\":{\"keccak256\":\"0x8e07aebe2954ab3e6f2d8eceedb12db7cf915c1f3e8630f4fa9999cecb1c78ec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed6c54cc901183d61546e8fd15bd5ea8ef238ebc915642946071d435dd7481ea\",\"dweb:/ipfs/Qmcaqta7YjUSBbBUGqoh44bsCS6UqqoyHjBuz4qnKBShXM\"]},\"project:/contracts/libs/WitnetCBOR.sol\":{\"keccak256\":\"0xd99308373575cc10fb7f2ceb0f6a8625f3911275c1fa27811fae498d98d03d97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b4909a999d7b660a2dc54ca957b6eccfa523e2765fc4d6a2574dee7d5cd67b43\",\"dweb:/ipfs/QmWGQT4KDcfSFe1hcHVoWx6E4PhYMaod5iLpJCWBEeShzh\"]}},\"version\":1}",
  "bytecode": "0x",
  "deployedBytecode": "0x",
  "immutableReferences": {},
  "generatedSources": [],
  "deployedGeneratedSources": [],
  "sourceMap": "",
  "deployedSourceMap": "",
  "source": "// SPDX-License-Identifier: MIT\r\n\r\npragma solidity >=0.8.0 <0.9.0;\r\n\r\nimport {IWitPriceFeedsAdmin} from \"./IWitPriceFeedsAdmin.sol\";\r\nimport {IWitPriceFeedsConsumer} from \"./IWitPriceFeedsConsumer.sol\";\r\nimport {IWitPriceFeedsEvents} from \"./IWitPriceFeedsEvents.sol\";\r\nimport {IWitPriceFeedsTypes} from \"./IWitPriceFeedsTypes.sol\";\r\nimport {IWitPyth} from \"./legacy/IWitPyth.sol\";\r\n\r\ninterface IWitPriceFeeds\r\n    is\r\n        IWitPriceFeedsAdmin,\r\n        IWitPriceFeedsEvents, \r\n        IWitPriceFeedsTypes,\r\n        IWitPyth\r\n{\r\n    /// Address of the underlying logic contract.\r\n    function base() external view returns (address);\r\n\r\n    /// Creates a light-proxy clone to the `base()` contract address, to be owned by the specified `curator` address. \r\n    /// Curators of cloned contracts can optionally settle one single `IWitPriceFeedConsumer` consuming contract. \r\n    /// The consuming contract, if settled, will be immediately reported every time a new Witnet-certified price update\r\n    /// gets pushed into the cloned instance. Either way, price feeds data will be stored in the `WitPriceFeeds` storage. \r\n    /// @param curator Address that will have rights to manage price feeds on the new light-proxy clone.\r\n    function clone(address curator) external returns (address);\r\n\r\n    /// Returns the consumer address where all price updates will be reported to.\r\n    /// @dev If zero, new price updates will not be reported to any other external address.\r\n    /// @dev The consumer contract must implement the `IWitPriceFeedsConsumer` interface, \r\n    /// @dev and accept this instance as source of truth.\r\n    /// @dev It can only be settled by a curator on cloned instances.\r\n    function consumer() external view returns (IWitPriceFeedsConsumer);\r\n\r\n    /// Creates a Chainlink Aggregator proxy to the specified symbol.\r\n    /// @dev Reverts if symbol is not supported.\r\n    function createChainlinkAggregator(string calldata symbol) external returns (address);\r\n\r\n    /// Default update conditions that apply to brand new price feeds.\r\n    function defaultUpdateConditions() external view returns (UpdateConditions calldata);\r\n\r\n    /// Returns a unique hash determined by the combination of data sources being used by \r\n    /// supported non-routed price feeds, and dependencies of all supported routed \r\n    /// price feeds. The footprint changes if any price feed is modified, added, removed \r\n    /// or if the dependency tree of any routed price feed is altered.\r\n    function footprint() external view returns (bytes4);\r\n\r\n    /// Determines unique ID for the specified symbol.\r\n    function hash(string calldata symbol) external pure returns (ID);\r\n\r\n    /// @notice Returns last update price for the specified ID4 price feed.\r\n    /// Note: This function is sanity-checked version of `getPriceUnsafe` which is useful in applications and\r\n    /// smart contracts that require recentl updated price, and no hint of market deviation being currently excessive. \r\n    ///\r\n    /// @dev Reverts if:\r\n    /// - `StalePrice()`: the price feed has not been updated within the last `UpdateConditions.heartbeatSecs`,\r\n    /// - `DeviantPrice()`: a deviation greater than `UpdateConditions.maxDeviation1000` was detected upon last update attempt.\r\n    /// - `InvalidGovernanceTarget()`: no EMA is curretly settled to be computed for this price feed.\r\n    ///\r\n    /// @param id4 Unique ID4 identifier of a price feed supported by this contract.\r\n    function getPrice(ID4 id4) external view returns (Price memory);\r\n    \r\n    /// @notice Returns last updated price if no older than `_age` seconds of the current time.\r\n    /// Note: This function is a sanity-checked version of `getPriceUnsafe` which is useful in applications and\r\n    /// smart contracts that require last known non-deviant price, last updated within specified time range.\r\n    ///\r\n    /// @dev Reverts if:\r\n    /// - `StalePrice()`: the price feed has not been updated within the last `_age` seconds,\r\n    /// - `InvalidGovernanceTarget()`: no EMA is settled to be computed for specified price feed.\r\n    /// \r\n    /// @param id4 Unique ID4 identifier of a price feed supported by this contract.\r\n    /// @param age Maximum age of acceptable price value.\r\n    function getPriceNotOlderThan(ID4 id4, uint24 age) external view returns (Price memory);\r\n\r\n    /// @notice Returns last updated price without any sanity checks.\r\n    /// Note: This function is unsafe as the returned price update may be arbitrarily far in the past.\r\n    /// Users of this function should check the `timestamp` of each price feed to ensure that the returned values \r\n    /// are sufficiently recent for their application. If you need safe access to fresh data, please consider\r\n    /// using calling to either `getPrice` or `getPriceNoOlderThan` variants.\r\n    /// \r\n    /// @dev Reverts if:\r\n    /// - `InvalidGovernanceTarget()`: no EMA is settled to be computed for specified price feed.\r\n    /// \r\n    /// @param id4 Unique ID4 identifier of a price feed supported by this contract.\r\n    function getPriceUnsafe(ID4 id4) external view returns (Price memory);\r\n    \r\n    function lookupPriceFeed(ID4 id4) external view returns (Info memory);\r\n    function lookupPriceFeedCaption(ID4 id4) external view returns (string memory);\r\n    function lookupPriceFeedExponent(ID4 id4) external view returns (int8);\r\n    function lookupPriceFeedID(ID4 id4) external view returns (bytes32);\r\n\r\n    /// @notice Returns last known price updates and deviations for all supported price feeds without any sanity checks.    \r\n    function lookupPriceFeeds() external view returns (Info[] memory);\r\n    \r\n    /// Tells whether there is a price feed settled with the specified caption.\r\n    function supportsCaption(string calldata caption) external view returns (bool);\r\n\r\n    /// The Wit/Oracle core address accepted as source of truth.\r\n    function witOracle() external view returns (address);\r\n}\r\n",
  "sourcePath": "C:\\Users\\guill\\github\\guidiaz\\witnet-solidity-bridge\\contracts\\interfaces\\IWitPriceFeeds.sol",
  "ast": {
    "absolutePath": "project:/contracts/interfaces/IWitPriceFeeds.sol",
    "exportedSymbols": {
      "IWitPriceFeeds": [
        27848
      ],
      "IWitPriceFeedsAdmin": [
        27955
      ],
      "IWitPriceFeedsConsumer": [
        27992
      ],
      "IWitPriceFeedsEvents": [
        28075
      ],
      "IWitPriceFeedsTypes": [
        28156
      ],
      "IWitPyth": [
        29643
      ]
    },
    "id": 27849,
    "license": "MIT",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 27691,
        "literals": [
          "solidity",
          ">=",
          "0.8",
          ".0",
          "<",
          "0.9",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "35:31:80"
      },
      {
        "absolutePath": "project:/contracts/interfaces/IWitPriceFeedsAdmin.sol",
        "file": "./IWitPriceFeedsAdmin.sol",
        "id": 27693,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 27849,
        "sourceUnit": 27956,
        "src": "70:62:80",
        "symbolAliases": [
          {
            "foreign": {
              "id": 27692,
              "name": "IWitPriceFeedsAdmin",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 27955,
              "src": "78:19:80",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "project:/contracts/interfaces/IWitPriceFeedsConsumer.sol",
        "file": "./IWitPriceFeedsConsumer.sol",
        "id": 27695,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 27849,
        "sourceUnit": 27993,
        "src": "134:68:80",
        "symbolAliases": [
          {
            "foreign": {
              "id": 27694,
              "name": "IWitPriceFeedsConsumer",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 27992,
              "src": "142:22:80",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "project:/contracts/interfaces/IWitPriceFeedsEvents.sol",
        "file": "./IWitPriceFeedsEvents.sol",
        "id": 27697,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 27849,
        "sourceUnit": 28076,
        "src": "204:64:80",
        "symbolAliases": [
          {
            "foreign": {
              "id": 27696,
              "name": "IWitPriceFeedsEvents",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 28075,
              "src": "212:20:80",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "project:/contracts/interfaces/IWitPriceFeedsTypes.sol",
        "file": "./IWitPriceFeedsTypes.sol",
        "id": 27699,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 27849,
        "sourceUnit": 28157,
        "src": "270:62:80",
        "symbolAliases": [
          {
            "foreign": {
              "id": 27698,
              "name": "IWitPriceFeedsTypes",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 28156,
              "src": "278:19:80",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "project:/contracts/interfaces/legacy/IWitPyth.sol",
        "file": "./legacy/IWitPyth.sol",
        "id": 27701,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 27849,
        "sourceUnit": 29644,
        "src": "334:47:80",
        "symbolAliases": [
          {
            "foreign": {
              "id": 27700,
              "name": "IWitPyth",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 29643,
              "src": "342:8:80",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 27702,
              "name": "IWitPriceFeedsAdmin",
              "nameLocations": [
                "427:19:80"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 27955,
              "src": "427:19:80"
            },
            "id": 27703,
            "nodeType": "InheritanceSpecifier",
            "src": "427:19:80"
          },
          {
            "baseName": {
              "id": 27704,
              "name": "IWitPriceFeedsEvents",
              "nameLocations": [
                "457:20:80"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 28075,
              "src": "457:20:80"
            },
            "id": 27705,
            "nodeType": "InheritanceSpecifier",
            "src": "457:20:80"
          },
          {
            "baseName": {
              "id": 27706,
              "name": "IWitPriceFeedsTypes",
              "nameLocations": [
                "489:19:80"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 28156,
              "src": "489:19:80"
            },
            "id": 27707,
            "nodeType": "InheritanceSpecifier",
            "src": "489:19:80"
          },
          {
            "baseName": {
              "id": 27708,
              "name": "IWitPyth",
              "nameLocations": [
                "519:8:80"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 29643,
              "src": "519:8:80"
            },
            "id": 27709,
            "nodeType": "InheritanceSpecifier",
            "src": "519:8:80"
          }
        ],
        "canonicalName": "IWitPriceFeeds",
        "contractDependencies": [],
        "contractKind": "interface",
        "fullyImplemented": false,
        "id": 27848,
        "linearizedBaseContracts": [
          27848,
          29643,
          29711,
          29697,
          28156,
          28075,
          27955
        ],
        "name": "IWitPriceFeeds",
        "nameLocation": "395:14:80",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "documentation": {
              "id": 27710,
              "nodeType": "StructuredDocumentation",
              "src": "536:45:80",
              "text": "Address of the underlying logic contract."
            },
            "functionSelector": "5001f3b5",
            "id": 27715,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "base",
            "nameLocation": "596:4:80",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 27711,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "600:2:80"
            },
            "returnParameters": {
              "id": 27714,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27713,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 27715,
                  "src": "626:7:80",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 27712,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "626:7:80",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "625:9:80"
            },
            "scope": 27848,
            "src": "587:48:80",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "documentation": {
              "id": 27716,
              "nodeType": "StructuredDocumentation",
              "src": "643:581:80",
              "text": "Creates a light-proxy clone to the `base()` contract address, to be owned by the specified `curator` address. \n Curators of cloned contracts can optionally settle one single `IWitPriceFeedConsumer` consuming contract. \n The consuming contract, if settled, will be immediately reported every time a new Witnet-certified price update\n gets pushed into the cloned instance. Either way, price feeds data will be stored in the `WitPriceFeeds` storage. \n @param curator Address that will have rights to manage price feeds on the new light-proxy clone."
            },
            "functionSelector": "8124b78e",
            "id": 27723,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "clone",
            "nameLocation": "1239:5:80",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 27719,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27718,
                  "mutability": "mutable",
                  "name": "curator",
                  "nameLocation": "1253:7:80",
                  "nodeType": "VariableDeclaration",
                  "scope": 27723,
                  "src": "1245:15:80",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 27717,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1245:7:80",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1244:17:80"
            },
            "returnParameters": {
              "id": 27722,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27721,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 27723,
                  "src": "1280:7:80",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 27720,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1280:7:80",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1279:9:80"
            },
            "scope": 27848,
            "src": "1230:59:80",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "documentation": {
              "id": 27724,
              "nodeType": "StructuredDocumentation",
              "src": "1297:392:80",
              "text": "Returns the consumer address where all price updates will be reported to.\n @dev If zero, new price updates will not be reported to any other external address.\n @dev The consumer contract must implement the `IWitPriceFeedsConsumer` interface, \n @dev and accept this instance as source of truth.\n @dev It can only be settled by a curator on cloned instances."
            },
            "functionSelector": "b4fd7296",
            "id": 27730,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "consumer",
            "nameLocation": "1704:8:80",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 27725,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1712:2:80"
            },
            "returnParameters": {
              "id": 27729,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27728,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 27730,
                  "src": "1738:22:80",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IWitPriceFeedsConsumer_$27992",
                    "typeString": "contract IWitPriceFeedsConsumer"
                  },
                  "typeName": {
                    "id": 27727,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 27726,
                      "name": "IWitPriceFeedsConsumer",
                      "nameLocations": [
                        "1738:22:80"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 27992,
                      "src": "1738:22:80"
                    },
                    "referencedDeclaration": 27992,
                    "src": "1738:22:80",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IWitPriceFeedsConsumer_$27992",
                      "typeString": "contract IWitPriceFeedsConsumer"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1737:24:80"
            },
            "scope": 27848,
            "src": "1695:67:80",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "documentation": {
              "id": 27731,
              "nodeType": "StructuredDocumentation",
              "src": "1770:115:80",
              "text": "Creates a Chainlink Aggregator proxy to the specified symbol.\n @dev Reverts if symbol is not supported."
            },
            "functionSelector": "e56bd315",
            "id": 27738,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "createChainlinkAggregator",
            "nameLocation": "1900:25:80",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 27734,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27733,
                  "mutability": "mutable",
                  "name": "symbol",
                  "nameLocation": "1942:6:80",
                  "nodeType": "VariableDeclaration",
                  "scope": 27738,
                  "src": "1926:22:80",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 27732,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1926:6:80",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1925:24:80"
            },
            "returnParameters": {
              "id": 27737,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27736,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 27738,
                  "src": "1968:7:80",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 27735,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1968:7:80",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1967:9:80"
            },
            "scope": 27848,
            "src": "1891:86:80",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "documentation": {
              "id": 27739,
              "nodeType": "StructuredDocumentation",
              "src": "1985:66:80",
              "text": "Default update conditions that apply to brand new price feeds."
            },
            "functionSelector": "9190795f",
            "id": 27745,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "defaultUpdateConditions",
            "nameLocation": "2066:23:80",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 27740,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2089:2:80"
            },
            "returnParameters": {
              "id": 27744,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27743,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 27745,
                  "src": "2115:25:80",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UpdateConditions_$28153_calldata_ptr",
                    "typeString": "struct IWitPriceFeedsTypes.UpdateConditions"
                  },
                  "typeName": {
                    "id": 27742,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 27741,
                      "name": "UpdateConditions",
                      "nameLocations": [
                        "2115:16:80"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 28153,
                      "src": "2115:16:80"
                    },
                    "referencedDeclaration": 28153,
                    "src": "2115:16:80",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UpdateConditions_$28153_storage_ptr",
                      "typeString": "struct IWitPriceFeedsTypes.UpdateConditions"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2114:27:80"
            },
            "scope": 27848,
            "src": "2057:85:80",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "documentation": {
              "id": 27746,
              "nodeType": "StructuredDocumentation",
              "src": "2150:334:80",
              "text": "Returns a unique hash determined by the combination of data sources being used by \n supported non-routed price feeds, and dependencies of all supported routed \n price feeds. The footprint changes if any price feed is modified, added, removed \n or if the dependency tree of any routed price feed is altered."
            },
            "functionSelector": "8a416ea9",
            "id": 27751,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "footprint",
            "nameLocation": "2499:9:80",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 27747,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2508:2:80"
            },
            "returnParameters": {
              "id": 27750,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27749,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 27751,
                  "src": "2534:6:80",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 27748,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "2534:6:80",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2533:8:80"
            },
            "scope": 27848,
            "src": "2490:52:80",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "documentation": {
              "id": 27752,
              "nodeType": "StructuredDocumentation",
              "src": "2550:50:80",
              "text": "Determines unique ID for the specified symbol."
            },
            "functionSelector": "b411ee94",
            "id": 27760,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "hash",
            "nameLocation": "2615:4:80",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 27755,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27754,
                  "mutability": "mutable",
                  "name": "symbol",
                  "nameLocation": "2636:6:80",
                  "nodeType": "VariableDeclaration",
                  "scope": 27760,
                  "src": "2620:22:80",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 27753,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2620:6:80",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2619:24:80"
            },
            "returnParameters": {
              "id": 27759,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27758,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 27760,
                  "src": "2667:2:80",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_ID_$29561",
                    "typeString": "IWitPyth.ID"
                  },
                  "typeName": {
                    "id": 27757,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 27756,
                      "name": "ID",
                      "nameLocations": [
                        "2667:2:80"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 29561,
                      "src": "2667:2:80"
                    },
                    "referencedDeclaration": 29561,
                    "src": "2667:2:80",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_ID_$29561",
                      "typeString": "IWitPyth.ID"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2666:4:80"
            },
            "scope": 27848,
            "src": "2606:65:80",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "documentation": {
              "id": 27761,
              "nodeType": "StructuredDocumentation",
              "src": "2679:778:80",
              "text": "@notice Returns last update price for the specified ID4 price feed.\n Note: This function is sanity-checked version of `getPriceUnsafe` which is useful in applications and\n smart contracts that require recentl updated price, and no hint of market deviation being currently excessive. \n @dev Reverts if:\n - `StalePrice()`: the price feed has not been updated within the last `UpdateConditions.heartbeatSecs`,\n - `DeviantPrice()`: a deviation greater than `UpdateConditions.maxDeviation1000` was detected upon last update attempt.\n - `InvalidGovernanceTarget()`: no EMA is curretly settled to be computed for this price feed.\n @param id4 Unique ID4 identifier of a price feed supported by this contract."
            },
            "functionSelector": "c66f4c0a",
            "id": 27770,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getPrice",
            "nameLocation": "3472:8:80",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 27765,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27764,
                  "mutability": "mutable",
                  "name": "id4",
                  "nameLocation": "3485:3:80",
                  "nodeType": "VariableDeclaration",
                  "scope": 27770,
                  "src": "3481:7:80",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                    "typeString": "IWitPriceFeedsTypes.ID4"
                  },
                  "typeName": {
                    "id": 27763,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 27762,
                      "name": "ID4",
                      "nameLocations": [
                        "3481:3:80"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 28155,
                      "src": "3481:3:80"
                    },
                    "referencedDeclaration": 28155,
                    "src": "3481:3:80",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                      "typeString": "IWitPriceFeedsTypes.ID4"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3480:9:80"
            },
            "returnParameters": {
              "id": 27769,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27768,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 27770,
                  "src": "3513:12:80",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Price_$28105_memory_ptr",
                    "typeString": "struct IWitPriceFeedsTypes.Price"
                  },
                  "typeName": {
                    "id": 27767,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 27766,
                      "name": "Price",
                      "nameLocations": [
                        "3513:5:80"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 28105,
                      "src": "3513:5:80"
                    },
                    "referencedDeclaration": 28105,
                    "src": "3513:5:80",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Price_$28105_storage_ptr",
                      "typeString": "struct IWitPriceFeedsTypes.Price"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3512:14:80"
            },
            "scope": 27848,
            "src": "3463:64:80",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "documentation": {
              "id": 27771,
              "nodeType": "StructuredDocumentation",
              "src": "3539:698:80",
              "text": "@notice Returns last updated price if no older than `_age` seconds of the current time.\n Note: This function is a sanity-checked version of `getPriceUnsafe` which is useful in applications and\n smart contracts that require last known non-deviant price, last updated within specified time range.\n @dev Reverts if:\n - `StalePrice()`: the price feed has not been updated within the last `_age` seconds,\n - `InvalidGovernanceTarget()`: no EMA is settled to be computed for specified price feed.\n \n @param id4 Unique ID4 identifier of a price feed supported by this contract.\n @param age Maximum age of acceptable price value."
            },
            "functionSelector": "d9ea438f",
            "id": 27782,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getPriceNotOlderThan",
            "nameLocation": "4252:20:80",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 27777,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27774,
                  "mutability": "mutable",
                  "name": "id4",
                  "nameLocation": "4277:3:80",
                  "nodeType": "VariableDeclaration",
                  "scope": 27782,
                  "src": "4273:7:80",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                    "typeString": "IWitPriceFeedsTypes.ID4"
                  },
                  "typeName": {
                    "id": 27773,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 27772,
                      "name": "ID4",
                      "nameLocations": [
                        "4273:3:80"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 28155,
                      "src": "4273:3:80"
                    },
                    "referencedDeclaration": 28155,
                    "src": "4273:3:80",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                      "typeString": "IWitPriceFeedsTypes.ID4"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27776,
                  "mutability": "mutable",
                  "name": "age",
                  "nameLocation": "4289:3:80",
                  "nodeType": "VariableDeclaration",
                  "scope": 27782,
                  "src": "4282:10:80",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint24",
                    "typeString": "uint24"
                  },
                  "typeName": {
                    "id": 27775,
                    "name": "uint24",
                    "nodeType": "ElementaryTypeName",
                    "src": "4282:6:80",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint24",
                      "typeString": "uint24"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4272:21:80"
            },
            "returnParameters": {
              "id": 27781,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27780,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 27782,
                  "src": "4317:12:80",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Price_$28105_memory_ptr",
                    "typeString": "struct IWitPriceFeedsTypes.Price"
                  },
                  "typeName": {
                    "id": 27779,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 27778,
                      "name": "Price",
                      "nameLocations": [
                        "4317:5:80"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 28105,
                      "src": "4317:5:80"
                    },
                    "referencedDeclaration": 28105,
                    "src": "4317:5:80",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Price_$28105_storage_ptr",
                      "typeString": "struct IWitPriceFeedsTypes.Price"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4316:14:80"
            },
            "scope": 27848,
            "src": "4243:88:80",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "documentation": {
              "id": 27783,
              "nodeType": "StructuredDocumentation",
              "src": "4339:706:80",
              "text": "@notice Returns last updated price without any sanity checks.\n Note: This function is unsafe as the returned price update may be arbitrarily far in the past.\n Users of this function should check the `timestamp` of each price feed to ensure that the returned values \n are sufficiently recent for their application. If you need safe access to fresh data, please consider\n using calling to either `getPrice` or `getPriceNoOlderThan` variants.\n \n @dev Reverts if:\n - `InvalidGovernanceTarget()`: no EMA is settled to be computed for specified price feed.\n \n @param id4 Unique ID4 identifier of a price feed supported by this contract."
            },
            "functionSelector": "97445409",
            "id": 27792,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getPriceUnsafe",
            "nameLocation": "5060:14:80",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 27787,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27786,
                  "mutability": "mutable",
                  "name": "id4",
                  "nameLocation": "5079:3:80",
                  "nodeType": "VariableDeclaration",
                  "scope": 27792,
                  "src": "5075:7:80",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                    "typeString": "IWitPriceFeedsTypes.ID4"
                  },
                  "typeName": {
                    "id": 27785,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 27784,
                      "name": "ID4",
                      "nameLocations": [
                        "5075:3:80"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 28155,
                      "src": "5075:3:80"
                    },
                    "referencedDeclaration": 28155,
                    "src": "5075:3:80",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                      "typeString": "IWitPriceFeedsTypes.ID4"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5074:9:80"
            },
            "returnParameters": {
              "id": 27791,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27790,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 27792,
                  "src": "5107:12:80",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Price_$28105_memory_ptr",
                    "typeString": "struct IWitPriceFeedsTypes.Price"
                  },
                  "typeName": {
                    "id": 27789,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 27788,
                      "name": "Price",
                      "nameLocations": [
                        "5107:5:80"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 28105,
                      "src": "5107:5:80"
                    },
                    "referencedDeclaration": 28105,
                    "src": "5107:5:80",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Price_$28105_storage_ptr",
                      "typeString": "struct IWitPriceFeedsTypes.Price"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5106:14:80"
            },
            "scope": 27848,
            "src": "5051:70:80",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "0683bcd2",
            "id": 27801,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "lookupPriceFeed",
            "nameLocation": "5142:15:80",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 27796,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27795,
                  "mutability": "mutable",
                  "name": "id4",
                  "nameLocation": "5162:3:80",
                  "nodeType": "VariableDeclaration",
                  "scope": 27801,
                  "src": "5158:7:80",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                    "typeString": "IWitPriceFeedsTypes.ID4"
                  },
                  "typeName": {
                    "id": 27794,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 27793,
                      "name": "ID4",
                      "nameLocations": [
                        "5158:3:80"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 28155,
                      "src": "5158:3:80"
                    },
                    "referencedDeclaration": 28155,
                    "src": "5158:3:80",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                      "typeString": "IWitPriceFeedsTypes.ID4"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5157:9:80"
            },
            "returnParameters": {
              "id": 27800,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27799,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 27801,
                  "src": "5190:11:80",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Info_$28125_memory_ptr",
                    "typeString": "struct IWitPriceFeedsTypes.Info"
                  },
                  "typeName": {
                    "id": 27798,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 27797,
                      "name": "Info",
                      "nameLocations": [
                        "5190:4:80"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 28125,
                      "src": "5190:4:80"
                    },
                    "referencedDeclaration": 28125,
                    "src": "5190:4:80",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Info_$28125_storage_ptr",
                      "typeString": "struct IWitPriceFeedsTypes.Info"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5189:13:80"
            },
            "scope": 27848,
            "src": "5133:70:80",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "e27b1088",
            "id": 27809,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "lookupPriceFeedCaption",
            "nameLocation": "5218:22:80",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 27805,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27804,
                  "mutability": "mutable",
                  "name": "id4",
                  "nameLocation": "5245:3:80",
                  "nodeType": "VariableDeclaration",
                  "scope": 27809,
                  "src": "5241:7:80",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                    "typeString": "IWitPriceFeedsTypes.ID4"
                  },
                  "typeName": {
                    "id": 27803,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 27802,
                      "name": "ID4",
                      "nameLocations": [
                        "5241:3:80"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 28155,
                      "src": "5241:3:80"
                    },
                    "referencedDeclaration": 28155,
                    "src": "5241:3:80",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                      "typeString": "IWitPriceFeedsTypes.ID4"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5240:9:80"
            },
            "returnParameters": {
              "id": 27808,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27807,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 27809,
                  "src": "5273:13:80",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 27806,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5273:6:80",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5272:15:80"
            },
            "scope": 27848,
            "src": "5209:79:80",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "274d45db",
            "id": 27817,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "lookupPriceFeedExponent",
            "nameLocation": "5303:23:80",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 27813,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27812,
                  "mutability": "mutable",
                  "name": "id4",
                  "nameLocation": "5331:3:80",
                  "nodeType": "VariableDeclaration",
                  "scope": 27817,
                  "src": "5327:7:80",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                    "typeString": "IWitPriceFeedsTypes.ID4"
                  },
                  "typeName": {
                    "id": 27811,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 27810,
                      "name": "ID4",
                      "nameLocations": [
                        "5327:3:80"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 28155,
                      "src": "5327:3:80"
                    },
                    "referencedDeclaration": 28155,
                    "src": "5327:3:80",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                      "typeString": "IWitPriceFeedsTypes.ID4"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5326:9:80"
            },
            "returnParameters": {
              "id": 27816,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27815,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 27817,
                  "src": "5359:4:80",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int8",
                    "typeString": "int8"
                  },
                  "typeName": {
                    "id": 27814,
                    "name": "int8",
                    "nodeType": "ElementaryTypeName",
                    "src": "5359:4:80",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int8",
                      "typeString": "int8"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5358:6:80"
            },
            "scope": 27848,
            "src": "5294:71:80",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "e36a1d9e",
            "id": 27825,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "lookupPriceFeedID",
            "nameLocation": "5380:17:80",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 27821,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27820,
                  "mutability": "mutable",
                  "name": "id4",
                  "nameLocation": "5402:3:80",
                  "nodeType": "VariableDeclaration",
                  "scope": 27825,
                  "src": "5398:7:80",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                    "typeString": "IWitPriceFeedsTypes.ID4"
                  },
                  "typeName": {
                    "id": 27819,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 27818,
                      "name": "ID4",
                      "nameLocations": [
                        "5398:3:80"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 28155,
                      "src": "5398:3:80"
                    },
                    "referencedDeclaration": 28155,
                    "src": "5398:3:80",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_ID4_$28155",
                      "typeString": "IWitPriceFeedsTypes.ID4"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5397:9:80"
            },
            "returnParameters": {
              "id": 27824,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27823,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 27825,
                  "src": "5430:7:80",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 27822,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5430:7:80",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5429:9:80"
            },
            "scope": 27848,
            "src": "5371:68:80",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "documentation": {
              "id": 27826,
              "nodeType": "StructuredDocumentation",
              "src": "5447:120:80",
              "text": "@notice Returns last known price updates and deviations for all supported price feeds without any sanity checks.    "
            },
            "functionSelector": "3108e1b8",
            "id": 27833,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "lookupPriceFeeds",
            "nameLocation": "5582:16:80",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 27827,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5598:2:80"
            },
            "returnParameters": {
              "id": 27832,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27831,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 27833,
                  "src": "5624:13:80",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_Info_$28125_memory_ptr_$dyn_memory_ptr",
                    "typeString": "struct IWitPriceFeedsTypes.Info[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 27829,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 27828,
                        "name": "Info",
                        "nameLocations": [
                          "5624:4:80"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 28125,
                        "src": "5624:4:80"
                      },
                      "referencedDeclaration": 28125,
                      "src": "5624:4:80",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Info_$28125_storage_ptr",
                        "typeString": "struct IWitPriceFeedsTypes.Info"
                      }
                    },
                    "id": 27830,
                    "nodeType": "ArrayTypeName",
                    "src": "5624:6:80",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_Info_$28125_storage_$dyn_storage_ptr",
                      "typeString": "struct IWitPriceFeedsTypes.Info[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5623:15:80"
            },
            "scope": 27848,
            "src": "5573:66:80",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "documentation": {
              "id": 27834,
              "nodeType": "StructuredDocumentation",
              "src": "5651:75:80",
              "text": "Tells whether there is a price feed settled with the specified caption."
            },
            "functionSelector": "c5010d17",
            "id": 27841,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "supportsCaption",
            "nameLocation": "5741:15:80",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 27837,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27836,
                  "mutability": "mutable",
                  "name": "caption",
                  "nameLocation": "5773:7:80",
                  "nodeType": "VariableDeclaration",
                  "scope": 27841,
                  "src": "5757:23:80",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 27835,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5757:6:80",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5756:25:80"
            },
            "returnParameters": {
              "id": 27840,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27839,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 27841,
                  "src": "5805:4:80",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 27838,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "5805:4:80",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5804:6:80"
            },
            "scope": 27848,
            "src": "5732:79:80",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "documentation": {
              "id": 27842,
              "nodeType": "StructuredDocumentation",
              "src": "5819:60:80",
              "text": "The Wit/Oracle core address accepted as source of truth."
            },
            "functionSelector": "1014d375",
            "id": 27847,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "witOracle",
            "nameLocation": "5894:9:80",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 27843,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5903:2:80"
            },
            "returnParameters": {
              "id": 27846,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27845,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 27847,
                  "src": "5929:7:80",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 27844,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5929:7:80",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5928:9:80"
            },
            "scope": 27848,
            "src": "5885:53:80",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 27849,
        "src": "385:5556:80",
        "usedErrors": [
          29669,
          29672,
          29675,
          29678,
          29681,
          29684,
          29687,
          29690,
          29693,
          29696
        ],
        "usedEvents": [
          28015,
          28034,
          28044,
          28061,
          28074,
          29710
        ]
      }
    ],
    "src": "35:5908:80"
  },
  "compiler": {
    "name": "solc",
    "version": "0.8.30+commit.73712a01.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.4.16",
  "updatedAt": "2025-10-15T14:34:45.909Z",
  "devdoc": {
    "errors": {
      "DeviantPrice()": [
        {
          "details": "Signature: 0x7b0d2bb5"
        }
      ],
      "HotPrice()": [
        {
          "details": "Signature: 0x0fbbc581"
        }
      ],
      "InvalidArgument()": [
        {
          "details": "Signature: 0xa9cb9e0d"
        }
      ],
      "InvalidUpdateData()": [
        {
          "details": "Signature: 0xe69ffece"
        }
      ],
      "InvalidUpdateDataSource()": [
        {
          "details": "Signature: 0xe60dce71"
        }
      ],
      "NoFreshUpdate()": [
        {
          "details": "Signature: 0xde2c57fa"
        }
      ],
      "PriceFeedNotFound()": [
        {
          "details": "Signature: 0x14aebe68"
        }
      ],
      "PriceFeedNotFoundWithinRange()": [
        {
          "details": "Signature: 0x45805f5d"
        }
      ],
      "StalePrice()": [
        {
          "details": "Signature: 0x19abf40e"
        }
      ]
    },
    "events": {
      "PriceFeedUpdate(bytes32,uint64,int64,uint64)": {
        "details": "Emitted when the price feed with `id` has received a fresh update.",
        "params": {
          "id": "The Pyth Price Feed ID.",
          "price": "Price of the given price update.",
          "publishTime": "Publish time of the given price update."
        }
      }
    },
    "kind": "dev",
    "methods": {
      "clone(address)": {
        "params": {
          "curator": "Address that will have rights to manage price feeds on the new light-proxy clone."
        }
      },
      "consumer()": {
        "details": "If zero, new price updates will not be reported to any other external address.The consumer contract must implement the `IWitPriceFeedsConsumer` interface, and accept this instance as source of truth.It can only be settled by a curator on cloned instances."
      },
      "createChainlinkAggregator(string)": {
        "details": "Reverts if symbol is not supported."
      },
      "getEmaPrice(bytes32)": {
        "details": "Reverts if the EMA price is not available.",
        "params": {
          "id": "The Price Feed ID of which to fetch the EMA price."
        }
      },
      "getEmaPriceNotOlderThan(bytes32,uint64)": {
        "details": "This function is a sanity-checked version of `getEmaPriceUnsafe` which is useful in applications that require a sufficiently-recent price. Reverts if the price wasn't updated sufficiently recently."
      },
      "getEmaPriceUnsafe(bytes32)": {
        "details": "This function returns the same price as `getEmaPrice` in the case where the price is available. However, if the price is not recent this function returns the latest available price. The returned price can be from arbitrarily far in the past; this function makes no guarantees that the returned price is recent or useful for any particular application. Users of this function should check the `timestamp` in the price to ensure that the returned price is sufficiently recent for their application. If you are considering using this function, it may be safer / easier to use either `getEmaPrice` or `getEmaPriceNoOlderThan`."
      },
      "getPrice(bytes32)": {
        "details": "Reverts if the price has not been updated within the last `heartbeatSecs`. ",
        "params": {
          "id": "The Price Feed ID of which to fetch the price."
        }
      },
      "getPrice(bytes4)": {
        "details": "Reverts if: - `StalePrice()`: the price feed has not been updated within the last `UpdateConditions.heartbeatSecs`, - `DeviantPrice()`: a deviation greater than `UpdateConditions.maxDeviation1000` was detected upon last update attempt. - `InvalidGovernanceTarget()`: no EMA is curretly settled to be computed for this price feed.",
        "params": {
          "id4": "Unique ID4 identifier of a price feed supported by this contract."
        }
      },
      "getPriceNotOlderThan(bytes32,uint64)": {
        "details": "This function is a sanity-checked version of `getPriceUnsafe` which is useful in applications that require a sufficiently-recent price.  Reverts if the price wasn't updated sufficiently recently."
      },
      "getPriceNotOlderThan(bytes4,uint24)": {
        "details": "Reverts if: - `StalePrice()`: the price feed has not been updated within the last `_age` seconds, - `InvalidGovernanceTarget()`: no EMA is settled to be computed for specified price feed. ",
        "params": {
          "age": "Maximum age of acceptable price value.",
          "id4": "Unique ID4 identifier of a price feed supported by this contract."
        }
      },
      "getPriceUnsafe(bytes32)": {
        "details": "This function returns the most recent price update in this contract without any recency checks. This function is unsafe as the returned price update may be arbitrarily far in the past.  Users of this function should check the `timestamp` in the price to ensure that the returned price is sufficiently recent for their application. If you are considering using this function, it may be safer / easier to use either `getPrice` or `getPriceNoOlderThan`."
      },
      "getPriceUnsafe(bytes4)": {
        "details": "Reverts if: - `InvalidGovernanceTarget()`: no EMA is settled to be computed for specified price feed. ",
        "params": {
          "id4": "Unique ID4 identifier of a price feed supported by this contract."
        }
      }
    },
    "version": 1
  },
  "userdoc": {
    "errors": {
      "DeviantPrice()": [
        {
          "notice": "Requested price deviated too much after previous update."
        }
      ],
      "HotPrice()": [
        {
          "notice": "Attempting to update a price before cooldown period expires."
        }
      ],
      "InvalidArgument()": [
        {
          "notice": "Function arguments are invalid (e.g., the arguments lengths mismatch)"
        }
      ],
      "InvalidGovernanceTarget()": [
        {
          "notice": "Either the number of witnesses that solved a price update is not within the settled range in this contract, or an EMA is being asked for a price feed that's not settled for the EMA to be computed. "
        }
      ],
      "InvalidUpdateData()": [
        {
          "notice": "Update data is invalid (e.g. badly serialized, or bad proof was provided)."
        }
      ],
      "InvalidUpdateDataSource()": [
        {
          "notice": "Update data is coming from an invalid Wit/Oracle Radon Hash."
        }
      ],
      "NoFreshUpdate()": [
        {
          "notice": "There is no fresh update, whereas expected fresh updates."
        }
      ],
      "PriceFeedNotFound()": [
        {
          "notice": "Price feed not found or it is not pushed on-chain yet."
        }
      ],
      "PriceFeedNotFoundWithinRange()": [
        {
          "notice": "There is no price feed found within the given range or it does not exist."
        }
      ],
      "StalePrice()": [
        {
          "notice": "Requested price is stale."
        }
      ]
    },
    "events": {
      "PriceFeedMapper(address,bytes4,string,int8,uint8,string[])": {
        "notice": "Emitted when a new routed price feed gets settled."
      },
      "PriceFeedOracle(address,bytes4,string,int8,uint8,address,bytes32)": {
        "notice": "Emitted when a new oraclized price feed gets settled."
      },
      "PriceFeedRemoved(address,bytes4,string)": {
        "notice": "Emitted when a price feeds gets removed from the list of supported price feeds."
      },
      "PriceFeedUpdateConditions(address,bytes4,string,(uint24,bool,uint24,uint24,uint16,uint16))": {
        "notice": "Emitted when the update conditions of some existing price feed get altered."
      }
    },
    "kind": "user",
    "methods": {
      "base()": {
        "notice": "Address of the underlying logic contract."
      },
      "clone(address)": {
        "notice": "Creates a light-proxy clone to the `base()` contract address, to be owned by the specified `curator` address.  Curators of cloned contracts can optionally settle one single `IWitPriceFeedConsumer` consuming contract.  The consuming contract, if settled, will be immediately reported every time a new Witnet-certified price update gets pushed into the cloned instance. Either way, price feeds data will be stored in the `WitPriceFeeds` storage. "
      },
      "consumer()": {
        "notice": "Returns the consumer address where all price updates will be reported to."
      },
      "createChainlinkAggregator(string)": {
        "notice": "Creates a Chainlink Aggregator proxy to the specified symbol."
      },
      "defaultUpdateConditions()": {
        "notice": "Default update conditions that apply to brand new price feeds."
      },
      "footprint()": {
        "notice": "Returns a unique hash determined by the combination of data sources being used by  supported non-routed price feeds, and dependencies of all supported routed  price feeds. The footprint changes if any price feed is modified, added, removed  or if the dependency tree of any routed price feed is altered."
      },
      "getEmaPrice(bytes32)": {
        "notice": "Returns the exponentially-weighted moving average price."
      },
      "getEmaPriceNotOlderThan(bytes32,uint64)": {
        "notice": "Returns the exponentially-weighted moving average price that is no older than `age` seconds of the current time."
      },
      "getEmaPriceUnsafe(bytes32)": {
        "notice": "Returns the exponentially-weighted moving average price of a price feed without any sanity checks."
      },
      "getPrice(bytes32)": {
        "notice": "Returns the price and confidence interval."
      },
      "getPrice(bytes4)": {
        "notice": "Returns last update price for the specified ID4 price feed. Note: This function is sanity-checked version of `getPriceUnsafe` which is useful in applications and smart contracts that require recentl updated price, and no hint of market deviation being currently excessive. "
      },
      "getPriceNotOlderThan(bytes32,uint64)": {
        "notice": "Returns the price that is no older than `age` seconds of the current time."
      },
      "getPriceNotOlderThan(bytes4,uint24)": {
        "notice": "Returns last updated price if no older than `_age` seconds of the current time. Note: This function is a sanity-checked version of `getPriceUnsafe` which is useful in applications and smart contracts that require last known non-deviant price, last updated within specified time range."
      },
      "getPriceUnsafe(bytes32)": {
        "notice": "Returns the price of a price feed without any sanity checks."
      },
      "getPriceUnsafe(bytes4)": {
        "notice": "Returns last updated price without any sanity checks. Note: This function is unsafe as the returned price update may be arbitrarily far in the past. Users of this function should check the `timestamp` of each price feed to ensure that the returned values  are sufficiently recent for their application. If you need safe access to fresh data, please consider using calling to either `getPrice` or `getPriceNoOlderThan` variants. "
      },
      "getUpdateFee(bytes)": {
        "notice": "Legacy-compliant to get the required fee to update an array of price updates, which would be always 0 if relying on the Wit/Oracle bridging framework. "
      },
      "hash(string)": {
        "notice": "Determines unique ID for the specified symbol."
      },
      "lookupPriceFeeds()": {
        "notice": "Returns last known price updates and deviations for all supported price feeds without any sanity checks.    "
      },
      "supportsCaption(string)": {
        "notice": "Tells whether there is a price feed settled with the specified caption."
      },
      "witOracle()": {
        "notice": "The Wit/Oracle core address accepted as source of truth."
      }
    },
    "version": 1
  }
}