neutron_sdk/sudo/
msg.rs

1use crate::bindings::types::Height;
2use cosmwasm_std::Binary;
3use schemars::JsonSchema;
4use serde::{Deserialize, Serialize};
5
6#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
7pub struct RequestPacket {
8    pub sequence: Option<u64>,
9    pub source_port: Option<String>,
10    pub source_channel: Option<String>,
11    pub destination_port: Option<String>,
12    pub destination_channel: Option<String>,
13    pub data: Option<Binary>,
14    pub timeout_height: Option<RequestPacketTimeoutHeight>,
15    pub timeout_timestamp: Option<u64>,
16}
17#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
18pub struct RequestPacketTimeoutHeight {
19    pub revision_number: Option<u64>,
20    pub revision_height: Option<u64>,
21}
22
23#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
24#[serde(rename_all = "snake_case")]
25pub enum SudoMsg {
26    Response {
27        request: RequestPacket,
28        data: Binary,
29    },
30    Error {
31        request: RequestPacket,
32        details: String,
33    },
34    Timeout {
35        request: RequestPacket,
36    },
37    OpenAck {
38        port_id: String,
39        channel_id: String,
40        counterparty_channel_id: String,
41        counterparty_version: String,
42    },
43    TxQueryResult {
44        query_id: u64,
45        height: Height,
46        data: Binary,
47    },
48    #[serde(rename = "kv_query_result")]
49    KVQueryResult {
50        query_id: u64,
51    },
52}
53
54/// TransferSudoMsg is a sudo response payload for a native ibc transfer
55/// SudoMsg for ibc transfer has fewer methods than SudoMsg for ica txs
56/// so we describe standalone type to not confuse users with useless variants
57#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
58#[serde(rename_all = "snake_case")]
59pub enum TransferSudoMsg {
60    Response {
61        request: RequestPacket,
62        data: Binary,
63    },
64    Error {
65        request: RequestPacket,
66        details: String,
67    },
68    Timeout {
69        request: RequestPacket,
70    },
71}