abstract_cw4_stake/
msg.rs1use cosmwasm_schema::{cw_serde, QueryResponses};
2use cosmwasm_std::Uint128;
3
4use abstract_cw20::{Cw20ReceiveMsg, Denom};
5pub use cw_controllers::ClaimsResponse;
6use cw_utils::Duration;
7
8#[cw_serde]
9pub struct InstantiateMsg {
10 pub denom: Denom,
12 pub tokens_per_weight: Uint128,
13 pub min_bond: Uint128,
14 pub unbonding_period: Duration,
15
16 pub admin: Option<String>,
18}
19
20#[cw_serde]
21#[derive(cw_orch::ExecuteFns)]
22pub enum ExecuteMsg {
23 Bond {},
25 Unbond { tokens: Uint128 },
29 Claim {},
32
33 UpdateAdmin { admin: Option<String> },
35 AddHook { addr: String },
37 RemoveHook { addr: String },
39
40 Receive(Cw20ReceiveMsg),
42}
43
44#[cw_serde]
45pub enum ReceiveMsg {
46 Bond {},
48}
49
50#[cw_serde]
51#[derive(QueryResponses, cw_orch::QueryFns)]
52pub enum QueryMsg {
53 #[returns(cw_controllers::ClaimsResponse)]
55 Claims { address: String },
56 #[returns(StakedResponse)]
58 Staked { address: String },
59
60 #[returns(cw_controllers::AdminResponse)]
61 Admin {},
62 #[returns(abstract_cw4::TotalWeightResponse)]
63 TotalWeight {},
64 #[returns(abstract_cw4::MemberListResponse)]
65 ListMembers {
66 start_after: Option<String>,
67 limit: Option<u32>,
68 },
69 #[returns(abstract_cw4::MemberResponse)]
70 Member {
71 addr: String,
72 at_height: Option<u64>,
73 },
74 #[returns(cw_controllers::HooksResponse)]
76 Hooks {},
77}
78
79#[cw_serde]
80pub struct StakedResponse {
81 pub stake: Uint128,
82 pub denom: Denom,
83}