use cosmwasm_std::{Coin, Timestamp};
use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
use sg721::msg::InstantiateMsg as Sg721InstantiateMsg;
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
pub struct InstantiateMsg {
pub base_token_uri: String,
pub num_tokens: u32,
pub sg721_code_id: u64,
pub sg721_instantiate_msg: Sg721InstantiateMsg,
pub start_time: Timestamp,
pub per_address_limit: u32,
pub unit_price: Coin,
pub whitelist: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum ExecuteMsg {
Mint {},
SetWhitelist { whitelist: String },
UpdateStartTime(Timestamp),
UpdatePerAddressLimit { per_address_limit: u32 },
MintTo { recipient: String },
MintFor { token_id: u32, recipient: String },
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum QueryMsg {
Config {},
MintableNumTokens {},
StartTime {},
MintPrice {},
MintCount { address: String },
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
pub struct ConfigResponse {
pub admin: String,
pub base_token_uri: String,
pub num_tokens: u32,
pub per_address_limit: u32,
pub sg721_address: String,
pub sg721_code_id: u64,
pub start_time: Timestamp,
pub unit_price: Coin,
pub whitelist: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
pub struct MintableNumTokensResponse {
pub count: u32,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
pub struct StartTimeResponse {
pub start_time: String,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
pub struct MintPriceResponse {
pub public_price: Coin,
pub whitelist_price: Option<Coin>,
pub current_price: Coin,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
pub struct MintCountResponse {
pub address: String,
pub count: u32,
}