cosmwasm_std/query/
distribution.rs1use schemars::JsonSchema;
2use serde::{Deserialize, Serialize};
3
4use crate::Addr;
5
6use super::query_response::QueryResponseType;
7
8#[non_exhaustive]
9#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
10#[serde(rename_all = "snake_case")]
11pub enum DistributionQuery {
12 DelegatorWithdrawAddress { delegator_address: String },
14 #[cfg(feature = "cosmwasm_1_4")]
16 DelegationRewards {
17 delegator_address: String,
18 validator_address: String,
19 },
20 #[cfg(feature = "cosmwasm_1_4")]
22 DelegationTotalRewards { delegator_address: String },
23 #[cfg(feature = "cosmwasm_1_4")]
25 DelegatorValidators { delegator_address: String },
26}
27
28#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
30#[serde(rename_all = "snake_case")]
31#[non_exhaustive]
32pub struct DelegatorWithdrawAddressResponse {
33 pub withdraw_address: Addr,
34}
35
36impl_response_constructor!(DelegatorWithdrawAddressResponse, withdraw_address: Addr);
37impl QueryResponseType for DelegatorWithdrawAddressResponse {}
38
39#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
41#[serde(rename_all = "snake_case")]
42pub struct DelegationRewardsResponse {
43 pub rewards: Vec<DecCoin>,
44}
45
46impl_response_constructor!(DelegationRewardsResponse, rewards: Vec<DecCoin>);
47impl QueryResponseType for DelegationRewardsResponse {}
48
49#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
59#[serde(rename_all = "snake_case")]
60pub struct DecCoin {
61 pub denom: String,
62 pub amount: crate::Decimal256,
67}
68
69impl DecCoin {
70 pub fn new(amount: crate::Decimal256, denom: impl Into<String>) -> Self {
71 Self {
72 denom: denom.into(),
73 amount,
74 }
75 }
76}
77
78#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
80#[non_exhaustive]
81pub struct DelegationTotalRewardsResponse {
82 pub rewards: Vec<DelegatorReward>,
83 pub total: Vec<DecCoin>,
84}
85
86impl_response_constructor!(
87 DelegationTotalRewardsResponse,
88 rewards: Vec<DelegatorReward>,
89 total: Vec<DecCoin>
90);
91impl QueryResponseType for DelegationTotalRewardsResponse {}
92
93#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
94pub struct DelegatorReward {
95 pub validator_address: String,
96 pub reward: Vec<DecCoin>,
97}
98
99#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
101pub struct DelegatorValidatorsResponse {
102 pub validators: Vec<String>,
103}
104
105impl_response_constructor!(DelegatorValidatorsResponse, validators: Vec<String>);
106impl QueryResponseType for DelegatorValidatorsResponse {}