hpl_interface/ism/
aggregate.rs1use cosmwasm_schema::{cw_serde, QueryResponses};
2
3use crate::ownable::{OwnableMsg, OwnableQueryMsg};
4
5use super::IsmQueryMsg;
6
7#[cw_serde]
8pub struct InstantiateMsg {
9 pub owner: String,
10 pub isms: Vec<String>,
11 pub threshold: u8,
12}
13
14#[cw_serde]
15pub enum ExecuteMsg {
16 Ownable(OwnableMsg),
17
18 SetIsms { isms: Vec<String>, threshold: u8 },
19}
20
21#[cw_serde]
22#[derive(QueryResponses)]
23#[query_responses(nested)]
24pub enum QueryMsg {
25 Ownable(OwnableQueryMsg),
26
27 Ism(IsmQueryMsg),
28
29 AggregateIsm(AggregateIsmQueryMsg),
30}
31
32#[cw_serde]
33#[derive(QueryResponses)]
34pub enum AggregateIsmQueryMsg {
35 #[returns(IsmsResponse)]
36 Isms {},
37}
38
39#[cw_serde]
40pub struct IsmsResponse {
41 pub isms: Vec<String>,
42 pub threshold: u8,
43}
44
45#[cfg(test)]
46mod test {
47 use cosmwasm_std::HexBinary;
48
49 use super::*;
50 use crate::{ism::IsmQueryMsg, msg_checker};
51
52 #[test]
53 fn test_ism_interface() {
54 let _checked: QueryMsg = msg_checker(IsmQueryMsg::ModuleType {}.wrap());
55 let _checked: QueryMsg = msg_checker(
56 IsmQueryMsg::Verify {
57 metadata: HexBinary::default(),
58 message: HexBinary::default(),
59 }
60 .wrap(),
61 );
62 let _checked: QueryMsg = msg_checker(
63 IsmQueryMsg::VerifyInfo {
64 message: HexBinary::default(),
65 }
66 .wrap(),
67 );
68 }
69}