cw_core_interface/
voting.rs

1use cosmwasm_std::Uint128;
2use cw2::ContractVersion;
3use cw_core_macros::{active_query, token_query, voting_query};
4use schemars::JsonSchema;
5use serde::{Deserialize, Serialize};
6
7#[token_query]
8#[voting_query]
9#[active_query]
10#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
11#[serde(rename_all = "snake_case")]
12pub enum Query {}
13
14#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
15pub struct VotingPowerAtHeightResponse {
16    pub power: Uint128,
17    pub height: u64,
18}
19
20#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
21pub struct TotalPowerAtHeightResponse {
22    pub power: Uint128,
23    pub height: u64,
24}
25
26#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
27pub struct InfoResponse {
28    pub info: ContractVersion,
29}
30
31#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
32pub struct IsActiveResponse {
33    pub active: bool,
34}
35
36mod tests {
37    /// Make sure the enum has all of the fields we expect. This will
38    /// fail to compile if not.
39    #[test]
40    fn test_macro_expansion() {
41        use cw_core_macros::{active_query, token_query, voting_query};
42        use schemars::JsonSchema;
43        use serde::{Deserialize, Serialize};
44
45        #[token_query]
46        #[voting_query]
47        #[active_query]
48        #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
49        #[serde(rename_all = "snake_case")]
50        enum Query {}
51
52        let query = Query::TokenContract {};
53
54        match query {
55            Query::TokenContract {} => (),
56            Query::VotingPowerAtHeight { .. } => (),
57            Query::TotalPowerAtHeight { .. } => (),
58            Query::IsActive {} => (),
59            Query::Info {} => (),
60        }
61    }
62}