use cosmwasm_schema::{cw_serde, QueryResponses};
use cosmwasm_std::Uint128;
use cw20::{Cw20ReceiveMsg, Denom};
pub use cw_controllers::ClaimsResponse;
use cw_utils::Duration;
#[cw_serde]
pub struct InstantiateMsg {
pub denom: Denom,
pub tokens_per_weight: Uint128,
pub min_bond: Uint128,
pub unbonding_period: Duration,
pub admin: Option<String>,
}
#[cw_serde]
pub enum ExecuteMsg {
Bond {},
Unbond { tokens: Uint128 },
Claim {},
UpdateAdmin { admin: Option<String> },
AddHook { addr: String },
RemoveHook { addr: String },
Receive(Cw20ReceiveMsg),
}
#[cw_serde]
pub enum ReceiveMsg {
Bond {},
}
#[cw_serde]
#[derive(QueryResponses)]
pub enum QueryMsg {
#[returns(cw_controllers::ClaimsResponse)]
Claims { address: String },
#[returns(StakedResponse)]
Staked { address: String },
#[returns(cw_controllers::AdminResponse)]
Admin {},
#[returns(cw4::TotalWeightResponse)]
TotalWeight {},
#[returns(cw4::MemberListResponse)]
ListMembers {
start_after: Option<String>,
limit: Option<u32>,
},
#[returns(cw4::MemberResponse)]
Member {
addr: String,
at_height: Option<u64>,
},
#[returns(cw_controllers::HooksResponse)]
Hooks {},
}
#[cw_serde]
pub struct StakedResponse {
pub stake: Uint128,
pub denom: Denom,
}