1use cosmwasm_schema::cw_serde;
2use cosmwasm_std::{Coin, Timestamp};
3use vending_factory::{msg::VendingMinterCreateMsg, state::VendingMinterParams};
4
5#[cw_serde]
6pub struct InstantiateMsg {
7 pub create_msg: VendingMinterCreateMsg,
8 pub params: VendingMinterParams,
9}
10
11#[cw_serde]
12pub enum ExecuteMsg {
13 Mint {},
14 SetWhitelist {
15 whitelist: String,
16 },
17 Purge {},
18 UpdateMintPrice {
19 price: u128,
20 },
21 UpdateStartTime(Timestamp),
22 UpdateStartTradingTime(Option<Timestamp>),
24 UpdatePerAddressLimit {
25 per_address_limit: u32,
26 },
27 MintTo {
28 recipient: String,
29 },
30 MintFor {
31 token_id: u32,
32 recipient: String,
33 },
34 Shuffle {},
35 BurnRemaining {},
36 UpdateDiscountPrice {
37 price: u128,
38 },
39 RemoveDiscountPrice {},
40}
41
42#[cw_serde]
43pub enum QueryMsg {
44 Config {},
45 MintableNumTokens {},
46 StartTime {},
47 MintPrice {},
48 MintCount { address: String },
49 Status {},
50}
51
52#[cw_serde]
53pub struct ConfigResponse {
54 pub admin: String,
55 pub base_token_uri: String,
56 pub num_tokens: u32,
57 pub per_address_limit: u32,
58 pub sg721_address: String,
59 pub sg721_code_id: u64,
60 pub start_time: Timestamp,
61 pub mint_price: Coin,
62 pub whitelist: Option<String>,
63 pub factory: String,
64 pub discount_price: Option<Coin>,
65}
66
67#[cw_serde]
68pub struct MintableNumTokensResponse {
69 pub count: u32,
70}
71
72#[cw_serde]
73pub struct StartTimeResponse {
74 pub start_time: String,
75}
76
77#[cw_serde]
78pub struct MintPriceResponse {
79 pub public_price: Coin,
80 pub airdrop_price: Coin,
81 pub whitelist_price: Option<Coin>,
82 pub current_price: Coin,
83 pub discount_price: Option<Coin>,
84}
85
86#[cw_serde]
87pub struct MintCountResponse {
88 pub address: String,
89 pub count: u32,
90}