cosmwasm_std/query/
distribution.rs1use schemars::JsonSchema;
2use serde::{Deserialize, Serialize};
3
4use crate::prelude::*;
5use crate::{Addr, Decimal256};
6
7use super::query_response::QueryResponseType;
8use crate::utils::impl_hidden_constructor;
9
10#[non_exhaustive]
11#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
12#[serde(rename_all = "snake_case")]
13pub enum DistributionQuery {
14 DelegatorWithdrawAddress { delegator_address: String },
16 #[cfg(feature = "cosmwasm_1_4")]
18 DelegationRewards {
19 delegator_address: String,
20 validator_address: String,
21 },
22 #[cfg(feature = "cosmwasm_1_4")]
24 DelegationTotalRewards { delegator_address: String },
25 #[cfg(feature = "cosmwasm_1_4")]
27 DelegatorValidators { delegator_address: String },
28}
29
30#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
32#[serde(rename_all = "snake_case")]
33#[non_exhaustive]
34pub struct DelegatorWithdrawAddressResponse {
35 pub withdraw_address: Addr,
36}
37
38impl_hidden_constructor!(DelegatorWithdrawAddressResponse, withdraw_address: Addr);
39impl QueryResponseType for DelegatorWithdrawAddressResponse {}
40
41#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
43#[serde(rename_all = "snake_case")]
44#[non_exhaustive]
45pub struct DelegationRewardsResponse {
46 pub rewards: Vec<DecCoin>,
47}
48
49impl_hidden_constructor!(DelegationRewardsResponse, rewards: Vec<DecCoin>);
50impl QueryResponseType for DelegationRewardsResponse {}
51
52#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
62#[serde(rename_all = "snake_case")]
63pub struct DecCoin {
64 pub denom: String,
65 pub amount: Decimal256,
70}
71
72impl DecCoin {
73 pub fn new(amount: impl Into<Decimal256>, denom: impl Into<String>) -> Self {
74 Self {
75 denom: denom.into(),
76 amount: amount.into(),
77 }
78 }
79}
80
81#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
83#[non_exhaustive]
84pub struct DelegationTotalRewardsResponse {
85 pub rewards: Vec<DelegatorReward>,
86 pub total: Vec<DecCoin>,
87}
88
89impl_hidden_constructor!(
90 DelegationTotalRewardsResponse,
91 rewards: Vec<DelegatorReward>,
92 total: Vec<DecCoin>
93);
94impl QueryResponseType for DelegationTotalRewardsResponse {}
95
96#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
97#[non_exhaustive]
98pub struct DelegatorReward {
99 pub validator_address: String,
100 pub reward: Vec<DecCoin>,
101}
102impl_hidden_constructor!(
103 DelegatorReward,
104 validator_address: String,
105 reward: Vec<DecCoin>
106);
107
108#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
110#[non_exhaustive]
111pub struct DelegatorValidatorsResponse {
112 pub validators: Vec<String>,
113}
114
115impl_hidden_constructor!(DelegatorValidatorsResponse, validators: Vec<String>);
116impl QueryResponseType for DelegatorValidatorsResponse {}