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(
12 Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema, cw_schema::Schemaifier,
13)]
14#[serde(rename_all = "snake_case")]
15pub enum DistributionQuery {
16 DelegatorWithdrawAddress { delegator_address: String },
18 #[cfg(feature = "cosmwasm_1_4")]
20 DelegationRewards {
21 delegator_address: String,
22 validator_address: String,
23 },
24 #[cfg(feature = "cosmwasm_1_4")]
26 DelegationTotalRewards { delegator_address: String },
27 #[cfg(feature = "cosmwasm_1_4")]
29 DelegatorValidators { delegator_address: String },
30}
31
32#[derive(
34 Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema, cw_schema::Schemaifier,
35)]
36#[serde(rename_all = "snake_case")]
37#[non_exhaustive]
38pub struct DelegatorWithdrawAddressResponse {
39 pub withdraw_address: Addr,
40}
41
42impl_hidden_constructor!(DelegatorWithdrawAddressResponse, withdraw_address: Addr);
43impl QueryResponseType for DelegatorWithdrawAddressResponse {}
44
45#[derive(
47 Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema, cw_schema::Schemaifier,
48)]
49#[serde(rename_all = "snake_case")]
50#[non_exhaustive]
51pub struct DelegationRewardsResponse {
52 pub rewards: Vec<DecCoin>,
53}
54
55impl_hidden_constructor!(DelegationRewardsResponse, rewards: Vec<DecCoin>);
56impl QueryResponseType for DelegationRewardsResponse {}
57
58#[derive(
68 Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema, cw_schema::Schemaifier,
69)]
70#[serde(rename_all = "snake_case")]
71pub struct DecCoin {
72 pub denom: String,
73 pub amount: Decimal256,
78}
79
80impl DecCoin {
81 pub fn new(amount: impl Into<Decimal256>, denom: impl Into<String>) -> Self {
82 Self {
83 denom: denom.into(),
84 amount: amount.into(),
85 }
86 }
87}
88
89#[derive(
91 Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema, cw_schema::Schemaifier,
92)]
93#[non_exhaustive]
94pub struct DelegationTotalRewardsResponse {
95 pub rewards: Vec<DelegatorReward>,
96 pub total: Vec<DecCoin>,
97}
98
99impl_hidden_constructor!(
100 DelegationTotalRewardsResponse,
101 rewards: Vec<DelegatorReward>,
102 total: Vec<DecCoin>
103);
104impl QueryResponseType for DelegationTotalRewardsResponse {}
105
106#[derive(
107 Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema, cw_schema::Schemaifier,
108)]
109#[non_exhaustive]
110pub struct DelegatorReward {
111 pub validator_address: String,
112 pub reward: Vec<DecCoin>,
113}
114impl_hidden_constructor!(
115 DelegatorReward,
116 validator_address: String,
117 reward: Vec<DecCoin>
118);
119
120#[derive(
122 Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema, cw_schema::Schemaifier,
123)]
124#[non_exhaustive]
125pub struct DelegatorValidatorsResponse {
126 pub validators: Vec<String>,
127}
128
129impl_hidden_constructor!(DelegatorValidatorsResponse, validators: Vec<String>);
130impl QueryResponseType for DelegatorValidatorsResponse {}