sg_whitelist_flex/
msg.rs

1use cosmwasm_schema::{cw_serde, QueryResponses};
2use cosmwasm_std::{Coin, CosmosMsg, Empty, Timestamp};
3
4#[cw_serde]
5pub struct Member {
6    pub address: String,
7    pub mint_count: u32,
8}
9
10#[cw_serde]
11pub struct InstantiateMsg {
12    pub members: Vec<Member>,
13    pub start_time: Timestamp,
14    pub end_time: Timestamp,
15    pub mint_price: Coin,
16    pub member_limit: u32,
17    pub admins: Vec<String>,
18    pub admins_mutable: bool,
19    pub whale_cap: Option<u32>,
20}
21
22#[cw_serde]
23pub enum ExecuteMsg {
24    UpdateStartTime(Timestamp),
25    UpdateEndTime(Timestamp),
26    AddMembers(AddMembersMsg),
27    RemoveMembers(RemoveMembersMsg),
28    IncreaseMemberLimit(u32),
29    UpdateAdmins { admins: Vec<String> },
30    Freeze {},
31}
32
33#[cw_serde]
34pub struct AdminListResponse {
35    pub admins: Vec<String>,
36    pub mutable: bool,
37}
38
39#[cw_serde]
40pub struct AddMembersMsg {
41    pub to_add: Vec<Member>,
42}
43
44#[cw_serde]
45pub struct RemoveMembersMsg {
46    pub to_remove: Vec<String>,
47}
48
49#[cw_serde]
50#[derive(QueryResponses)]
51pub enum QueryMsg {
52    #[returns(HasStartedResponse)]
53    HasStarted {},
54    #[returns(HasEndedResponse)]
55    HasEnded {},
56    #[returns(IsActiveResponse)]
57    IsActive {},
58    #[returns(MembersResponse)]
59    Members {
60        start_after: Option<String>,
61        limit: Option<u32>,
62    },
63    #[returns(HasMemberResponse)]
64    HasMember { member: String },
65    #[returns(MemberResponse)]
66    Member { member: String },
67    #[returns(ConfigResponse)]
68    Config {},
69    #[returns(AdminListResponse)]
70    AdminList {},
71    #[returns(CanExecuteResponse)]
72    CanExecute {
73        sender: String,
74        msg: CosmosMsg<Empty>,
75    },
76}
77
78#[cw_serde]
79pub struct MembersResponse {
80    pub members: Vec<Member>,
81}
82
83#[cw_serde]
84pub struct HasMemberResponse {
85    pub has_member: bool,
86}
87
88#[cw_serde]
89pub struct MemberResponse {
90    pub member: Member,
91}
92
93#[cw_serde]
94pub struct HasEndedResponse {
95    pub has_ended: bool,
96}
97
98#[cw_serde]
99pub struct HasStartedResponse {
100    pub has_started: bool,
101}
102
103#[cw_serde]
104pub struct IsActiveResponse {
105    pub is_active: bool,
106}
107
108#[cw_serde]
109pub struct MintPriceResponse {
110    pub mint_price: Coin,
111}
112
113#[cw_serde]
114pub struct ConfigResponse {
115    pub num_members: u32,
116    pub member_limit: u32,
117    pub start_time: Timestamp,
118    pub end_time: Timestamp,
119    pub mint_price: Coin,
120    pub is_active: bool,
121    pub whale_cap: Option<u32>,
122}
123
124#[cw_serde]
125pub enum SudoMsg {
126    /// Add a new operator
127    AddOperator { operator: String },
128    /// Remove operator
129    RemoveOperator { operator: String },
130}
131
132#[cw_serde]
133pub struct CanExecuteResponse {
134    pub can_execute: bool,
135}