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