hpl_interface/ism/
multisig.rs1use cosmwasm_schema::{cw_serde, QueryResponses};
2use cosmwasm_std::HexBinary;
3
4use crate::ownable::{OwnableMsg, OwnableQueryMsg};
5
6use super::IsmQueryMsg;
7#[allow(unused_imports)]
8use super::{ModuleTypeResponse, VerifyInfoResponse, VerifyResponse};
9
10#[cw_serde]
11pub struct InstantiateMsg {
12 pub owner: String,
13}
14
15#[cw_serde]
16pub struct ValidatorSet {
17 pub domain: u32,
18 pub validator: HexBinary,
19}
20
21#[cw_serde]
22pub enum ExecuteMsg {
23 Ownable(OwnableMsg),
24
25 SetValidators {
26 domain: u32,
27 threshold: u8,
28 validators: Vec<HexBinary>, },
30 UnsetDomain {
31 domain: u32,
32 },
33}
34
35#[cw_serde]
36#[derive(QueryResponses)]
37#[query_responses(nested)]
38pub enum QueryMsg {
39 Ownable(OwnableQueryMsg),
40 Ism(IsmQueryMsg),
41 MultisigIsm(MultisigIsmQueryMsg),
42}
43
44#[cw_serde]
45#[derive(QueryResponses)]
46pub enum MultisigIsmQueryMsg {
47 #[returns(EnrolledValidatorsResponse)]
48 EnrolledValidators { domain: u32 },
49}
50
51#[cw_serde]
52pub struct EnrolledValidatorsResponse {
53 pub validators: Vec<HexBinary>,
54 pub threshold: u8,
55}
56
57#[cfg(test)]
58mod test {
59 use super::*;
60 use crate::msg_checker;
61
62 #[test]
63 fn test_ism_interface() {
64 let _checked: QueryMsg = msg_checker(IsmQueryMsg::ModuleType {}.wrap());
65 let _checked: QueryMsg = msg_checker(
66 IsmQueryMsg::Verify {
67 metadata: HexBinary::default(),
68 message: HexBinary::default(),
69 }
70 .wrap(),
71 );
72 let _checked: QueryMsg = msg_checker(
73 IsmQueryMsg::VerifyInfo {
74 message: HexBinary::default(),
75 }
76 .wrap(),
77 );
78 }
79}