1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
use cosmwasm_schema::{cw_serde, QueryResponses};
use cosmwasm_std::Addr;
use sg_controllers::ContractInstantiateMsg;

#[cw_serde]
pub enum Group {
    Cw4Instantiate(ContractInstantiateMsg),
    Cw4Address(String),
}

#[cw_serde]
pub struct InstantiateMsg {
    pub admin: Option<String>,
    pub group: Group,
}

#[cw_serde]
pub enum ExecuteMsg {
    UpdateAdmin { admin: Option<String> },
    Distribute {},
}

#[cw_serde]
#[derive(QueryResponses)]
pub enum QueryMsg {
    #[returns(cw_controllers::AdminResponse)]
    Admin {},

    #[returns(Addr)]
    Group {},

    #[returns(cw4::MemberResponse)]
    Member { address: String },

    #[returns(cw4::MemberListResponse)]
    ListMembers {
        start_after: Option<String>,
        limit: Option<u32>,
    },
}