use crate::asset::{Asset, AssetInfo};
use cosmwasm_schema::{cw_serde, QueryResponses};
use cosmwasm_std::{Addr, Uint128};
#[cw_serde]
pub struct InstantiateMsg {
pub owner: Addr,
pub vault_address: Addr,
}
#[cw_serde]
pub struct Config {
pub owner: Addr,
pub vault_address: Addr,
}
#[cw_serde]
pub struct ConfigV1 {
pub owner: Addr
}
#[cw_serde]
pub enum ExecuteMsg {
Withdraw {
asset: AssetInfo,
amount: Uint128,
recipient: Option<Addr>,
},
ExitLPTokens {
lp_token_address: String,
amount: Uint128,
min_assets_received: Option<Vec<Asset>>,
},
SwapAsset{
offer_asset: Asset,
ask_asset_info: AssetInfo,
min_ask_amount: Option<Uint128>,
pool_id: Uint128
},
ProposeNewOwner {
owner: String,
expires_in: u64,
},
DropOwnershipProposal {},
ClaimOwnership {},
}
#[cw_serde]
#[derive(QueryResponses)]
pub enum QueryMsg {
#[returns(ConfigResponse)]
Config {},
#[returns(BalancesResponse)]
Balances { assets: Vec<AssetInfo> },
}
#[cw_serde]
pub enum MigrateMsg {
V2 {
vault_address: String,
}
}
pub type ConfigResponse = Config;
#[cw_serde]
pub struct BalancesResponse {
pub balances: Vec<Asset>,
}