use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
use cosmwasm_std::{Binary, Decimal, Uint128};
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
pub struct InstantiateMsg {
pub token_code_id: u64,
pub base_denom: String,
pub distribution_schedule: Vec<(u64, u64, Uint128)>, }
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum ExecuteMsg {
PostInitialize {
owner: String,
terraswap_factory: String,
mirror_token: String,
staking_contract: String,
oracle_contract: String,
mint_contract: String,
commission_collector: String,
},
UpdateConfig {
owner: Option<String>,
token_code_id: Option<u64>,
distribution_schedule: Option<Vec<(u64, u64, Uint128)>>, },
UpdateWeight {
asset_token: String,
weight: u32,
},
Whitelist {
name: String,
symbol: String,
oracle_feeder: String,
params: Params,
},
PassCommand {
contract_addr: String,
msg: Binary,
},
RevokeAsset {
asset_token: String,
end_price: Option<Decimal>,
},
MigrateAsset {
name: String,
symbol: String,
from_token: String,
end_price: Decimal,
},
Distribute {},
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum QueryMsg {
Config {},
DistributionInfo {},
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
pub struct ConfigResponse {
pub owner: String,
pub mirror_token: String,
pub mint_contract: String,
pub staking_contract: String,
pub commission_collector: String,
pub oracle_contract: String,
pub terraswap_factory: String,
pub token_code_id: u64,
pub base_denom: String,
pub genesis_time: u64,
pub distribution_schedule: Vec<(u64, u64, Uint128)>,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
pub struct DistributionInfoResponse {
pub weights: Vec<(String, u32)>,
pub last_distributed: u64,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
pub struct MigrateMsg {}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub struct Params {
pub auction_discount: Decimal,
pub min_collateral_ratio: Decimal,
pub weight: Option<u32>,
pub mint_period: Option<u64>,
pub min_collateral_ratio_after_ipo: Option<Decimal>,
pub pre_ipo_price: Option<Decimal>,
}