router_wasm_bindings/
msg.rs

1use schemars::JsonSchema;
2use serde::{Deserialize, Serialize};
3
4use cosmwasm_std::{Binary, Coin, CosmosMsg, CustomMsg, Empty, Uint128};
5
6use crate::Bytes;
7
8#[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug)]
9#[serde(rename_all = "snake_case")]
10/// A number of Custom messages that can call into the Router bindings
11pub enum RouterMsg {
12    // Contract can send Outbound Batch Requests to Router chain
13    CrosschainCall {
14        version: u64,
15        route_amount: Uint128,
16        route_recipient: String,
17        dest_chain_id: String,
18        request_metadata: Bytes,
19        request_packet: Bytes,
20    },
21    TxlookupCall {
22        chain_ids: Vec<String>,
23        tx_hashes: Vec<String>,
24        metadata: Vec<Binary>,
25        middleware_contract_address: String,
26        fee: Uint128,
27        cw_gas_limit: u64,
28    },
29}
30
31impl RouterMsg {
32    pub fn send_outbound_batch_requests(
33        version: u64,
34        route_amount: Uint128,
35        route_recipient: String,
36        dest_chain_id: String,
37        request_metadata: Bytes,
38        request_packet: Bytes,
39    ) -> Self {
40        RouterMsg::CrosschainCall {
41            version,
42            route_amount,
43            route_recipient,
44            dest_chain_id,
45            request_metadata,
46            request_packet,
47        }
48    }
49    pub fn send_txlookup_requests(
50        chain_ids: Vec<String>,
51        tx_hashes: Vec<String>,
52        metadata: Vec<Binary>,
53        middleware_contract_address: String,
54        fee: Uint128,
55        cw_gas_limit: u64,
56    ) -> Self {
57        RouterMsg::TxlookupCall {
58            chain_ids,
59            tx_hashes,
60            metadata,
61            middleware_contract_address,
62            fee,
63            cw_gas_limit,
64        }
65    }
66}
67
68impl From<RouterMsg> for CosmosMsg<RouterMsg> {
69    fn from(msg: RouterMsg) -> CosmosMsg<RouterMsg> {
70        CosmosMsg::Custom(msg)
71    }
72}
73
74impl CustomMsg for RouterMsg {}
75
76impl From<RouterMsg> for Empty {
77    fn from(_value: RouterMsg) -> Empty {
78        Empty {}
79    }
80}
81
82#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
83#[serde(rename_all = "snake_case")]
84pub enum SudoMsg {
85    HandleIReceive {
86        request_sender: String,
87        src_chain_id: String,
88        request_identifier: u64,
89        payload: Binary,
90    },
91    HandleIAck {
92        request_identifier: u64,
93        exec_flag: bool,
94        exec_data: Binary,
95        refund_amount: Coin,
96    },
97}