router_wasm_bindings/
msg.rs1use 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")]
10pub enum RouterMsg {
12 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}