hpl_interface/hook/
pausable.rs

1use cosmwasm_schema::{cw_serde, QueryResponses};
2
3use crate::{
4    ownable::{OwnableMsg, OwnableQueryMsg},
5    pausable::{PausableMsg, PausableQueryMsg},
6};
7
8use super::{HookQueryMsg, PostDispatchMsg};
9
10#[cw_serde]
11pub struct InstantiateMsg {
12    pub owner: String,
13    pub paused: bool,
14}
15
16#[cw_serde]
17pub enum ExecuteMsg {
18    Ownable(OwnableMsg),
19    Pausable(PausableMsg),
20    PostDispatch(PostDispatchMsg),
21}
22
23#[cw_serde]
24#[derive(QueryResponses)]
25#[query_responses(nested)]
26pub enum QueryMsg {
27    Pausable(PausableQueryMsg),
28    Ownable(OwnableQueryMsg),
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}