dao_voting_native_staked/
msg.rs

1use cosmwasm_schema::{cw_serde, QueryResponses};
2use cosmwasm_std::Uint128;
3use cw_utils::Duration;
4use dao_dao_macros::voting_module_query;
5use dao_interface::state::Admin;
6
7#[cw_serde]
8pub struct InstantiateMsg {
9    // Owner can update all configs including changing the owner. This will generally be a DAO.
10    pub owner: Option<Admin>,
11    // Manager can update all configs except changing the owner. This will generally be an operations multisig for a DAO.
12    pub manager: Option<String>,
13    // Token denom e.g. ujuno, or some ibc denom
14    pub denom: String,
15    // How long until the tokens become liquid again
16    pub unstaking_duration: Option<Duration>,
17}
18
19#[cw_serde]
20pub enum ExecuteMsg {
21    Stake {},
22    Unstake {
23        amount: Uint128,
24    },
25    UpdateConfig {
26        owner: Option<String>,
27        manager: Option<String>,
28        duration: Option<Duration>,
29    },
30    Claim {},
31}
32
33#[voting_module_query]
34#[cw_serde]
35#[derive(QueryResponses)]
36pub enum QueryMsg {
37    #[returns(crate::state::Config)]
38    GetConfig {},
39    #[returns(cw_controllers::ClaimsResponse)]
40    Claims { address: String },
41    #[returns(ListStakersResponse)]
42    ListStakers {
43        start_after: Option<String>,
44        limit: Option<u32>,
45    },
46}
47
48#[cw_serde]
49pub struct MigrateMsg {}
50
51#[cw_serde]
52pub struct ListStakersResponse {
53    pub stakers: Vec<StakerBalanceResponse>,
54}
55
56#[cw_serde]
57pub struct StakerBalanceResponse {
58    pub address: String,
59    pub balance: Uint128,
60}