hpl_interface/ism/
routing.rs1use cosmwasm_schema::{cw_serde, QueryResponses};
2use cosmwasm_std::HexBinary;
3
4use crate::ownable::{OwnableMsg, OwnableQueryMsg};
5
6use super::IsmQueryMsg;
7#[allow(unused_imports)]
8use super::{ModuleTypeResponse, VerifyResponse};
9
10#[cw_serde]
11pub struct IsmSet {
12 pub domain: u32,
13 pub address: String,
14}
15
16#[cw_serde]
17pub struct InstantiateMsg {
18 pub owner: String,
19 pub isms: Vec<IsmSet>,
20}
21
22#[cw_serde]
23pub enum ExecuteMsg {
24 Ownable(OwnableMsg),
25
26 Set { ism: IsmSet },
27 Unset { domains: Vec<u32> },
28}
29
30#[cw_serde]
31#[derive(QueryResponses)]
32#[query_responses(nested)]
33pub enum QueryMsg {
34 Ownable(OwnableQueryMsg),
35 Ism(IsmQueryMsg),
36 RoutingIsm(RoutingIsmQueryMsg),
37}
38
39#[cw_serde]
40#[derive(QueryResponses)]
41pub enum RoutingIsmQueryMsg {
42 #[returns(RouteResponse)]
43 Route { message: HexBinary },
44}
45
46#[cw_serde]
47pub struct RouteResponse {
48 pub ism: String,
49}
50
51#[cfg(test)]
52mod test {
53 use cosmwasm_std::HexBinary;
54
55 use super::*;
56 use crate::{ism::IsmQueryMsg, msg_checker};
57
58 #[test]
59 fn test_ism_interface() {
60 let _checked: QueryMsg = msg_checker(IsmQueryMsg::ModuleType {}.wrap());
61 let _checked: QueryMsg = msg_checker(
62 IsmQueryMsg::Verify {
63 metadata: HexBinary::default(),
64 message: HexBinary::default(),
65 }
66 .wrap(),
67 );
68 let _checked: QueryMsg = msg_checker(
69 IsmQueryMsg::VerifyInfo {
70 message: HexBinary::default(),
71 }
72 .wrap(),
73 );
74 }
75}