hpl_interface/ism/
routing.rs

1use 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}