hpl_interface/hook/
aggregate.rs1use 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}