1use cosmwasm_std::{
2 to_binary,
3 Addr,
4 QuerierWrapper,
5 QueryRequest,
6 StdResult,
7 WasmQuery,
8};
9use schemars::JsonSchema;
10use serde::{
11 Deserialize,
12 Serialize,
13};
14
15pub use pyth_sdk::{
16 Price,
17 PriceFeed,
18 PriceIdentifier,
19 PriceStatus,
20 ProductIdentifier,
21};
22
23#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
24#[serde(rename_all = "snake_case")]
25pub enum QueryMsg {
26 PriceFeed { id: PriceIdentifier },
27}
28
29#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
30#[serde(rename_all = "snake_case")]
31pub struct PriceFeedResponse {
32 pub price_feed: PriceFeed,
34}
35
36pub fn query_price_feed(
38 querier: &QuerierWrapper,
39 contract_addr: Addr,
40 id: PriceIdentifier,
41) -> StdResult<PriceFeedResponse> {
42 let price_feed_response = querier.query(&QueryRequest::Wasm(WasmQuery::Smart {
43 contract_addr: contract_addr.into_string(),
44 msg: to_binary(&QueryMsg::PriceFeed { id })?,
45 }))?;
46 Ok(price_feed_response)
47}