dao_stake_cw20/
msg.rs

1use cosmwasm_std::{Addr, Uint128};
2use cw20::Cw20ReceiveMsg;
3use schemars::JsonSchema;
4use serde::{Deserialize, Serialize};
5
6use cw_utils::Duration;
7
8pub use cw_controllers::ClaimsResponse;
9
10#[derive(Serialize, Deserialize, JsonSchema, Debug, Clone, PartialEq)]
11pub struct InstantiateMsg {
12    pub admin: Option<String>,
13    pub token_address: String,
14    pub unstaking_duration: Option<Duration>,
15}
16
17#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
18#[serde(rename_all = "snake_case")]
19pub enum ExecuteMsg {
20    Receive(Cw20ReceiveMsg),
21    Unstake {
22        amount: Uint128,
23    },
24    Claim {},
25    UpdateConfig {
26        admin: Option<String>,
27        duration: Option<Duration>,
28    },
29}
30#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
31#[serde(rename_all = "snake_case")]
32pub enum ReceiveMsg {
33    Stake {},
34    Fund {},
35}
36
37#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
38#[serde(rename_all = "snake_case")]
39pub enum QueryMsg {
40    StakedBalanceAtHeight {
41        address: String,
42        height: Option<u64>,
43    },
44    TotalStakedAtHeight {
45        height: Option<u64>,
46    },
47    StakedValue {
48        address: String,
49    },
50    TotalValue {},
51    GetConfig {},
52    Claims {
53        address: String,
54    },
55}
56
57#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
58#[serde(rename_all = "snake_case")]
59pub struct StakedBalanceAtHeightResponse {
60    pub balance: Uint128,
61    pub height: u64,
62}
63
64#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
65#[serde(rename_all = "snake_case")]
66pub struct TotalStakedAtHeightResponse {
67    pub total: Uint128,
68    pub height: u64,
69}
70
71#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
72#[serde(rename_all = "snake_case")]
73pub struct StakedValueResponse {
74    pub value: Uint128,
75}
76
77#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
78#[serde(rename_all = "snake_case")]
79pub struct TotalValueResponse {
80    pub total: Uint128,
81}
82
83#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
84#[serde(rename_all = "snake_case")]
85pub struct GetConfigResponse {
86    pub admin: Option<Addr>,
87    pub token_address: Addr,
88    pub unstaking_duration: Option<Duration>,
89}