hpl_interface/hook/
fee.rs1use cosmwasm_schema::{cw_serde, QueryResponses};
2use cosmwasm_std::{Addr, Coin};
3
4use crate::ownable::{OwnableMsg, OwnableQueryMsg};
5
6use super::{HookQueryMsg, PostDispatchMsg};
7
8pub const TREE_DEPTH: usize = 32;
9
10#[cw_serde]
11pub struct InstantiateMsg {
12 pub owner: String,
13 pub fee: Coin,
14}
15
16#[cw_serde]
17pub enum ExecuteMsg {
18 Ownable(OwnableMsg),
19 PostDispatch(PostDispatchMsg),
20 FeeHook(FeeHookMsg),
21}
22
23#[cw_serde]
24pub enum FeeHookMsg {
25 SetFee {
26 fee: Coin,
27 },
28 Claim {
29 recipient: Option<Addr>
30 }
31}
32
33#[cw_serde]
34#[derive(QueryResponses)]
35#[query_responses(nested)]
36pub enum QueryMsg {
37 Ownable(OwnableQueryMsg),
38 Hook(HookQueryMsg),
39 FeeHook(FeeHookQueryMsg),
40}
41
42#[cw_serde]
43#[derive(QueryResponses)]
44pub enum FeeHookQueryMsg {
45 #[returns(FeeResponse)]
46 Fee {}
47}
48
49#[cw_serde]
50pub struct FeeResponse {
51 pub fee: Coin,
52}
53
54#[cfg(test)]
55mod test {
56 use cosmwasm_std::HexBinary;
57
58 use super::*;
59 use crate::{
60 hook::{ExpectedHookQueryMsg, PostDispatchMsg, QuoteDispatchMsg},
61 msg_checker,
62 };
63
64 #[test]
65 fn test_hook_interface() {
66 let _checked: ExecuteMsg = msg_checker(
67 PostDispatchMsg {
68 metadata: HexBinary::default(),
69 message: HexBinary::default(),
70 }
71 .wrap(),
72 );
73
74 let _checked: QueryMsg = msg_checker(ExpectedHookQueryMsg::Hook(HookQueryMsg::Mailbox {}));
75 let _checked: QueryMsg = msg_checker(
76 QuoteDispatchMsg {
77 metadata: HexBinary::default(),
78 message: HexBinary::default(),
79 }
80 .request(),
81 );
82 }
83}