use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
use cosmwasm_std::{Binary, Decimal, HumanAddr, Uint128};
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
pub struct InitMsg {
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 HandleMsg {
PostInitialize {
owner: HumanAddr,
terraswap_factory: HumanAddr,
mirror_token: HumanAddr,
staking_contract: HumanAddr,
oracle_contract: HumanAddr,
mint_contract: HumanAddr,
commission_collector: HumanAddr,
},
UpdateConfig {
owner: Option<HumanAddr>,
token_code_id: Option<u64>,
distribution_schedule: Option<Vec<(u64, u64, Uint128)>>,
},
UpdateWeight {
asset_token: HumanAddr,
weight: u32,
},
Whitelist {
name: String,
symbol: String,
oracle_feeder: HumanAddr,
params: Params,
},
TokenCreationHook {
oracle_feeder: HumanAddr,
},
TerraswapCreationHook {
asset_token: HumanAddr,
},
PassCommand {
contract_addr: HumanAddr,
msg: Binary,
},
RevokeAsset {
asset_token: HumanAddr,
end_price: Decimal,
},
MigrateAsset {
name: String,
symbol: String,
from_token: HumanAddr,
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: HumanAddr,
pub mirror_token: HumanAddr,
pub mint_contract: HumanAddr,
pub staking_contract: HumanAddr,
pub commission_collector: HumanAddr,
pub oracle_contract: HumanAddr,
pub terraswap_factory: HumanAddr,
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<(HumanAddr, 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>,
}