[
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_validTimePeriod",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_singleUpdateFeeInWei",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "constructor"
  },
  {
    "inputs": [],
    "name": "InsufficientFee",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "InvalidArgument",
    "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": "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": "conf",
        "type": "uint64"
      }
    ],
    "name": "PriceFeedUpdate",
    "type": "event"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "id",
        "type": "bytes32"
      },
      {
        "internalType": "int64",
        "name": "price",
        "type": "int64"
      },
      {
        "internalType": "uint64",
        "name": "conf",
        "type": "uint64"
      },
      {
        "internalType": "int32",
        "name": "expo",
        "type": "int32"
      },
      {
        "internalType": "int64",
        "name": "emaPrice",
        "type": "int64"
      },
      {
        "internalType": "uint64",
        "name": "emaConf",
        "type": "uint64"
      },
      {
        "internalType": "uint64",
        "name": "publishTime",
        "type": "uint64"
      },
      {
        "internalType": "uint64",
        "name": "prevPublishTime",
        "type": "uint64"
      }
    ],
    "name": "createPriceFeedUpdateData",
    "outputs": [
      {
        "internalType": "bytes",
        "name": "priceFeedData",
        "type": "bytes"
      }
    ],
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "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 PythStructs.Price",
        "name": "price",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "id",
        "type": "bytes32"
      },
      {
        "internalType": "uint256",
        "name": "age",
        "type": "uint256"
      }
    ],
    "name": "getEmaPriceNoOlderThan",
    "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 PythStructs.Price",
        "name": "price",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "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 PythStructs.Price",
        "name": "price",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "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 PythStructs.Price",
        "name": "price",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "id",
        "type": "bytes32"
      },
      {
        "internalType": "uint256",
        "name": "age",
        "type": "uint256"
      }
    ],
    "name": "getPriceNoOlderThan",
    "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 PythStructs.Price",
        "name": "price",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "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 PythStructs.Price",
        "name": "price",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes[]",
        "name": "updateData",
        "type": "bytes[]"
      }
    ],
    "name": "getUpdateFee",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "feeAmount",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getValidTimePeriod",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes[]",
        "name": "updateData",
        "type": "bytes[]"
      },
      {
        "internalType": "bytes32[]",
        "name": "priceIds",
        "type": "bytes32[]"
      },
      {
        "internalType": "uint64",
        "name": "minPublishTime",
        "type": "uint64"
      },
      {
        "internalType": "uint64",
        "name": "maxPublishTime",
        "type": "uint64"
      }
    ],
    "name": "parsePriceFeedUpdates",
    "outputs": [
      {
        "components": [
          {
            "internalType": "bytes32",
            "name": "id",
            "type": "bytes32"
          },
          {
            "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 PythStructs.Price",
            "name": "price",
            "type": "tuple"
          },
          {
            "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 PythStructs.Price",
            "name": "emaPrice",
            "type": "tuple"
          }
        ],
        "internalType": "struct PythStructs.PriceFeed[]",
        "name": "feeds",
        "type": "tuple[]"
      }
    ],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes[]",
        "name": "updateData",
        "type": "bytes[]"
      },
      {
        "internalType": "bytes32[]",
        "name": "priceIds",
        "type": "bytes32[]"
      },
      {
        "internalType": "uint64",
        "name": "minPublishTime",
        "type": "uint64"
      },
      {
        "internalType": "uint64",
        "name": "maxPublishTime",
        "type": "uint64"
      }
    ],
    "name": "parsePriceFeedUpdatesUnique",
    "outputs": [
      {
        "components": [
          {
            "internalType": "bytes32",
            "name": "id",
            "type": "bytes32"
          },
          {
            "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 PythStructs.Price",
            "name": "price",
            "type": "tuple"
          },
          {
            "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 PythStructs.Price",
            "name": "emaPrice",
            "type": "tuple"
          }
        ],
        "internalType": "struct PythStructs.PriceFeed[]",
        "name": "feeds",
        "type": "tuple[]"
      }
    ],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "id",
        "type": "bytes32"
      }
    ],
    "name": "priceFeedExists",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "id",
        "type": "bytes32"
      }
    ],
    "name": "queryPriceFeed",
    "outputs": [
      {
        "components": [
          {
            "internalType": "bytes32",
            "name": "id",
            "type": "bytes32"
          },
          {
            "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 PythStructs.Price",
            "name": "price",
            "type": "tuple"
          },
          {
            "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 PythStructs.Price",
            "name": "emaPrice",
            "type": "tuple"
          }
        ],
        "internalType": "struct PythStructs.PriceFeed",
        "name": "priceFeed",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes[]",
        "name": "updateData",
        "type": "bytes[]"
      }
    ],
    "name": "updatePriceFeeds",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes[]",
        "name": "updateData",
        "type": "bytes[]"
      },
      {
        "internalType": "bytes32[]",
        "name": "priceIds",
        "type": "bytes32[]"
      },
      {
        "internalType": "uint64[]",
        "name": "publishTimes",
        "type": "uint64[]"
      }
    ],
    "name": "updatePriceFeedsIfNecessary",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  }
]
