hpl_interface/hook/
aggregate.rs

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