hpl_interface/igp/
oracle.rs1use cosmwasm_schema::{cw_serde, QueryResponses};
2use cosmwasm_std::Uint128;
3
4use crate::ownable::{OwnableMsg, OwnableQueryMsg};
5
6#[cw_serde]
7pub struct InstantiateMsg {
8 pub owner: String,
9}
10
11#[cw_serde]
12pub struct RemoteGasDataConfig {
13 pub remote_domain: u32,
14 pub token_exchange_rate: Uint128,
15 pub gas_price: Uint128,
16}
17
18#[cw_serde]
19pub enum ExecuteMsg {
20 Ownership(OwnableMsg),
22
23 SetRemoteGasDataConfigs { configs: Vec<RemoteGasDataConfig> },
25 SetRemoteGasData { config: RemoteGasDataConfig },
26}
27
28#[cw_serde]
29#[derive(QueryResponses)]
30#[query_responses(nested)]
31pub enum QueryMsg {
32 Ownable(OwnableQueryMsg),
34
35 Oracle(IgpGasOracleQueryMsg),
37}
38
39#[cw_serde]
40#[derive(QueryResponses)]
41pub enum IgpGasOracleQueryMsg {
42 #[returns(GetExchangeRateAndGasPriceResponse)]
43 GetExchangeRateAndGasPrice { dest_domain: u32 },
44}
45
46impl IgpGasOracleQueryMsg {
47 pub fn wrap(self) -> QueryMsg {
48 QueryMsg::Oracle(self)
49 }
50}
51
52#[cw_serde]
53pub struct GetExchangeRateAndGasPriceResponse {
54 pub gas_price: Uint128,
55 pub exchange_rate: Uint128,
56}