pyth-crosschain/target-chains/cosmwasm/contracts/pyth/src/msg.rs

62 lines
1.5 KiB
Rust

use {
crate::{
state::PythDataSource,
PriceFeed,
PriceIdentifier,
},
cosmwasm_std::{
Binary,
Coin,
},
schemars::JsonSchema,
serde::{
Deserialize,
Serialize,
},
};
type HumanAddr = String;
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub struct InstantiateMsg {
pub wormhole_contract: HumanAddr,
pub data_sources: Vec<PythDataSource>,
pub governance_source: PythDataSource,
pub governance_source_index: u32,
pub governance_sequence_number: u64,
pub chain_id: u16,
pub valid_time_period_secs: u16,
pub fee: Coin,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum ExecuteMsg {
// TODO: add UpdatePriceFeeds if necessary
UpdatePriceFeeds { data: Vec<Binary> },
ExecuteGovernanceInstruction { data: Binary },
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub struct MigrateMsg {}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum QueryMsg {
PriceFeed { id: PriceIdentifier },
GetUpdateFee { vaas: Vec<Binary> },
GetValidTimePeriod,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub struct PriceFeedResponse {
pub price_feed: PriceFeed,
}