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