whitelist_updatable/
msg.rs

1use cosmwasm_schema::{cw_serde, QueryResponses};
2
3use crate::state::Config;
4
5#[cw_serde]
6pub struct InstantiateMsg {
7    pub addresses: Vec<String>,
8    pub per_address_limit: u32,
9    pub mint_discount_bps: Option<u64>,
10}
11
12#[cw_serde]
13pub enum ExecuteMsg {
14    UpdateAdmin {
15        new_admin: String,
16    },
17    AddAddresses {
18        addresses: Vec<String>,
19    },
20    RemoveAddresses {
21        addresses: Vec<String>,
22    },
23    /// Only callable by minter contract. Increment mint count on whitelist map.
24    ProcessAddress {
25        address: String,
26    },
27    UpdatePerAddressLimit {
28        limit: u32,
29    },
30    UpdateMinterContract {
31        minter_contract: String,
32    },
33    Purge {},
34}
35
36#[cw_serde]
37#[derive(QueryResponses)]
38pub enum QueryMsg {
39    #[returns(ConfigResponse)]
40    Config {},
41    #[returns(bool)]
42    IncludesAddress { address: String },
43    #[returns(u64)]
44    MintCount { address: String },
45    /// Avoid processing addresses that will fail. Includes address and under per address limit
46    #[returns(IsProcessableResponse)]
47    IsProcessable { address: String },
48    #[returns(cw_controllers::AdminResponse)]
49    Admin {},
50    #[returns(u64)]
51    AddressCount {},
52    #[returns(PerAddressLimitResponse)]
53    PerAddressLimit {},
54}
55
56#[cw_serde]
57pub struct ConfigResponse {
58    pub config: Config,
59}
60
61#[cw_serde]
62pub struct PerAddressLimitResponse {
63    pub limit: u64,
64}
65
66#[cw_serde]
67pub struct IsProcessableResponse {
68    pub processable: bool,
69}