abstract_cw4_group/
msg.rs

1use abstract_cw4::Member;
2use cosmwasm_schema::{cw_serde, QueryResponses};
3
4#[cw_serde]
5pub struct InstantiateMsg {
6    /// The admin is the only account that can update the group state.
7    /// Omit it to make the group immutable.
8    pub admin: Option<String>,
9    pub members: Vec<Member>,
10}
11
12#[cw_serde]
13#[derive(cw_orch::ExecuteFns)]
14pub enum ExecuteMsg {
15    /// Change the admin
16    UpdateAdmin { admin: Option<String> },
17    /// apply a diff to the existing members.
18    /// remove is applied after add, so if an address is in both, it is removed
19    UpdateMembers {
20        remove: Vec<String>,
21        add: Vec<Member>,
22    },
23    /// Add a new hook to be informed of all membership changes. Must be called by Admin
24    AddHook { addr: String },
25    /// Remove a hook. Must be called by Admin
26    RemoveHook { addr: String },
27}
28
29#[cw_serde]
30#[derive(QueryResponses, cw_orch::QueryFns)]
31pub enum QueryMsg {
32    #[returns(cw_controllers::AdminResponse)]
33    Admin {},
34    #[returns(abstract_cw4::TotalWeightResponse)]
35    TotalWeight { at_height: Option<u64> },
36    #[returns(abstract_cw4::MemberListResponse)]
37    ListMembers {
38        start_after: Option<String>,
39        limit: Option<u32>,
40    },
41    #[returns(abstract_cw4::MemberResponse)]
42    Member {
43        addr: String,
44        at_height: Option<u64>,
45    },
46    /// Shows all registered hooks.
47    #[returns(cw_controllers::HooksResponse)]
48    Hooks {},
49}