hpl_interface/ism/
aggregate.rs

1use 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}