1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
use crate::bindings::types::{InterchainQueryResult, RegisteredQuery};
use cosmwasm_std::{Binary, CustomQuery};
use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
#[serde(rename_all = "snake_case")]
/// The queries to interact with neutron specific blockchain modules.
pub enum InterchainQueries {
/// Query a result of registered interchain query on remote chain
InterchainQueryResult {
/// **query_id** is an ID registered interchain query
query_id: u64,
},
/// Query a registered interchain account address for a specific connection_id
/// Every contract may have as many interchain accounts as necessary.
InterchainAccountAddress {
/// **owner_address** is an address of contract which registered interchain account
owner_address: String,
/// **interchain_account_id** is an identifier of your interchain account. Can be any string
/// This identifier allows contracts to have multiple interchain accounts on remote chains
interchain_account_id: String,
/// **connection_id** is an IBC connection identifier between Neutron and remote chain
connection_id: String,
},
/// Query all registered interchain queries on all remote chains
RegisteredInterchainQueries {
owners: Vec<String>,
connection_id: String,
pagination: PageRequest,
},
/// Query registered interchain query with a specific query_id
RegisteredInterchainQuery {
/// **query_id** is an ID registered interchain query
query_id: u64,
},
/// Query total amount of burned neutron fees
TotalBurnedNeutronsAmount {},
/// Query minimum IBC fee
MinIbcFee {},
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub struct PageRequest {
/// **key** is a value returned in PageResponse.next_key to begin
/// querying the next page most efficiently. Only one of offset or key
/// should be set.
key: Binary,
/// **offset** is a numeric offset that can be used when key is unavailable.
/// It is less efficient than using key. Only one of offset or key should
/// be set.
offset: u64,
/// **limit** is the total number of results to be returned in the result page.
/// If left empty it will default to a value to be set by each app.
limit: u64,
/// **count_total** is set to true to indicate that the result set should include
/// a count of the total number of items available for pagination in UIs.
/// count_total is only respected when offset is used. It is ignored when key
/// is set.
count_total: bool,
/// reverse is set to true if results are to be returned in the descending order.
reverse: bool,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub struct QueryRegisteredQueriesResponse {
/// **registered_queries** is a list of registered queries
pub registered_queries: Vec<RegisteredQuery>,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub struct QueryRegisteredQueryResponse {
/// **registered_query** is a registered query
pub registered_query: RegisteredQuery,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub struct QueryRegisteredQueryResultResponse {
pub result: InterchainQueryResult,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub struct QueryInterchainAccountAddressResponse {
/// **interchain_account_address** is a interchain account address on the remote chain
pub interchain_account_address: String,
}
impl CustomQuery for InterchainQueries {}