hpl_interface/hook/
routing.rs

1use cosmwasm_schema::{cw_serde, QueryResponses};
2use cosmwasm_std::Addr;
3
4use crate::{
5    ownable::{OwnableMsg, OwnableQueryMsg},
6    router::{RouterMsg, RouterQuery},
7};
8
9use super::{HookQueryMsg, PostDispatchMsg};
10
11#[cw_serde]
12pub struct InstantiateMsg {
13    pub owner: String,
14}
15
16#[cw_serde]
17pub enum ExecuteMsg {
18    Ownable(OwnableMsg),
19    PostDispatch(PostDispatchMsg),
20    Router(RouterMsg<Addr>),
21}
22
23#[cw_serde]
24#[derive(QueryResponses)]
25#[query_responses(nested)]
26pub enum QueryMsg {
27    Ownable(OwnableQueryMsg),
28    Router(RouterQuery<Addr>),
29    Hook(HookQueryMsg),
30}
31
32#[cfg(test)]
33mod test {
34    use cosmwasm_std::HexBinary;
35
36    use super::*;
37    use crate::{
38        hook::{ExpectedHookQueryMsg, PostDispatchMsg, QuoteDispatchMsg},
39        msg_checker,
40    };
41
42    #[test]
43    fn test_hook_interface() {
44        let _checked: ExecuteMsg = msg_checker(
45            PostDispatchMsg {
46                metadata: HexBinary::default(),
47                message: HexBinary::default(),
48            }
49            .wrap(),
50        );
51
52        let _checked: QueryMsg = msg_checker(ExpectedHookQueryMsg::Hook(HookQueryMsg::Mailbox {}));
53        let _checked: QueryMsg = msg_checker(
54            QuoteDispatchMsg {
55                metadata: HexBinary::default(),
56                message: HexBinary::default(),
57            }
58            .request(),
59        );
60    }
61}