blokli_client/api/v1/graphql/
balances.rs1use super::{InvalidAddressError, MissingFilterError, QueryFailedError, Token, Uint64, schema};
2use crate::{api::types::TokenValueString, errors::BlokliClientError};
3
4#[derive(cynic::QueryVariables)]
5pub struct BalanceVariables {
6 pub address: String,
7 pub token: Option<Token>,
8}
9
10#[derive(cynic::InputObject, Debug, Default, Clone)]
11#[cynic(graphql_type = "RedeemedStatsFilter")]
12pub struct RedeemedStatsFilter {
13 #[cynic(rename = "safeAddress")]
14 pub safe_address: Option<String>,
15 #[cynic(rename = "nodeAddress")]
16 pub node_address: Option<String>,
17}
18
19#[derive(cynic::QueryVariables, Default)]
20pub struct RedeemedStatsVariables {
21 pub filter: RedeemedStatsFilter,
22}
23
24#[derive(cynic::QueryFragment, Debug)]
25#[cynic(graphql_type = "QueryRoot", variables = "BalanceVariables")]
26pub struct QueryHoprBalance {
27 #[arguments(address: $address, token: $token)]
28 pub hopr_balance: HoprBalanceResult,
29}
30
31#[derive(cynic::QueryFragment, Debug)]
32#[cynic(graphql_type = "QueryRoot", variables = "BalanceVariables")]
33pub struct QueryNativeBalance {
34 #[arguments(address: $address)]
35 pub native_balance: NativeBalanceResult,
36}
37
38#[derive(cynic::InlineFragments, Debug)]
39pub enum HoprBalanceResult {
40 HoprBalance(HoprBalance),
41 InvalidAddressError(InvalidAddressError),
42 QueryFailedError(QueryFailedError),
43 #[cynic(fallback)]
44 Unknown,
45}
46
47impl From<HoprBalanceResult> for Result<HoprBalance, BlokliClientError> {
48 fn from(value: HoprBalanceResult) -> Self {
49 match value {
50 HoprBalanceResult::HoprBalance(balance) => Ok(balance),
51 HoprBalanceResult::InvalidAddressError(e) => Err(e.into()),
52 HoprBalanceResult::QueryFailedError(e) => Err(e.into()),
53 HoprBalanceResult::Unknown => Err(crate::errors::ErrorKind::NoData.into()),
54 }
55 }
56}
57
58#[derive(cynic::QueryFragment, Debug, Clone, PartialEq, Eq)]
60#[cfg_attr(feature = "serde", derive(serde::Serialize))]
61pub struct HoprBalance {
62 pub __typename: String,
64 pub balance: TokenValueString,
66}
67
68#[derive(cynic::InlineFragments, Debug)]
69pub enum NativeBalanceResult {
70 NativeBalance(NativeBalance),
71 InvalidAddressError(InvalidAddressError),
72 QueryFailedError(QueryFailedError),
73 #[cynic(fallback)]
74 Unknown,
75}
76
77impl From<NativeBalanceResult> for Result<NativeBalance, BlokliClientError> {
78 fn from(value: NativeBalanceResult) -> Self {
79 match value {
80 NativeBalanceResult::NativeBalance(balance) => Ok(balance),
81 NativeBalanceResult::InvalidAddressError(e) => Err(e.into()),
82 NativeBalanceResult::QueryFailedError(e) => Err(e.into()),
83 NativeBalanceResult::Unknown => Err(crate::errors::ErrorKind::NoData.into()),
84 }
85 }
86}
87
88#[derive(cynic::QueryFragment, Debug, Clone, PartialEq, Eq)]
90#[cfg_attr(feature = "serde", derive(serde::Serialize))]
91pub struct NativeBalance {
92 pub __typename: String,
94 pub balance: TokenValueString,
96}
97
98#[derive(cynic::QueryFragment, Debug, Clone, PartialEq, Eq)]
100#[cfg_attr(feature = "serde", derive(serde::Serialize))]
101pub struct SafeHoprAllowance {
102 pub __typename: String,
104 pub allowance: TokenValueString,
106}
107
108#[derive(cynic::QueryFragment, Debug)]
109#[cynic(graphql_type = "QueryRoot", variables = "BalanceVariables")]
110pub struct QuerySafeAllowance {
111 #[arguments(address: $address)]
112 pub safe_hopr_allowance: SafeHoprAllowanceResult,
113}
114
115#[derive(cynic::InlineFragments, Debug)]
116pub enum SafeHoprAllowanceResult {
117 SafeHoprAllowance(SafeHoprAllowance),
118 InvalidAddressError(InvalidAddressError),
119 QueryFailedError(QueryFailedError),
120 #[cynic(fallback)]
121 Unknown,
122}
123
124impl From<SafeHoprAllowanceResult> for Result<SafeHoprAllowance, BlokliClientError> {
125 fn from(value: SafeHoprAllowanceResult) -> Self {
126 match value {
127 SafeHoprAllowanceResult::SafeHoprAllowance(allowance) => Ok(allowance),
128 SafeHoprAllowanceResult::InvalidAddressError(e) => Err(e.into()),
129 SafeHoprAllowanceResult::QueryFailedError(e) => Err(e.into()),
130 SafeHoprAllowanceResult::Unknown => Err(crate::errors::ErrorKind::NoData.into()),
131 }
132 }
133}
134
135#[derive(cynic::QueryFragment, Debug, Clone, PartialEq, Eq)]
137#[cfg_attr(feature = "serde", derive(serde::Serialize))]
138pub struct RedeemedStats {
139 pub __typename: String,
141 pub redeemed_amount: TokenValueString,
143 pub redemption_count: Uint64,
145 pub rejected_amount: TokenValueString,
147 pub rejection_count: Uint64,
149}
150
151#[derive(cynic::QueryFragment, Debug)]
152#[cynic(graphql_type = "QueryRoot", variables = "RedeemedStatsVariables")]
153pub struct QueryRedeemedStats {
154 #[arguments(filter: $filter)]
155 #[cynic(rename = "ticketRedemptionStats")]
156 pub ticket_redemption_stats: RedeemedStatsResult,
157}
158
159#[derive(cynic::InlineFragments, Debug)]
160pub enum RedeemedStatsResult {
161 RedeemedStats(RedeemedStats),
162 MissingFilterError(MissingFilterError),
163 InvalidAddressError(InvalidAddressError),
164 QueryFailedError(QueryFailedError),
165 #[cynic(fallback)]
166 Unknown,
167}
168
169impl From<RedeemedStatsResult> for Result<RedeemedStats, BlokliClientError> {
170 fn from(value: RedeemedStatsResult) -> Self {
171 match value {
172 RedeemedStatsResult::RedeemedStats(stats) => Ok(stats),
173 RedeemedStatsResult::MissingFilterError(e) => Err(e.into()),
174 RedeemedStatsResult::InvalidAddressError(e) => Err(e.into()),
175 RedeemedStatsResult::QueryFailedError(e) => Err(e.into()),
176 RedeemedStatsResult::Unknown => Err(crate::errors::ErrorKind::NoData.into()),
177 }
178 }
179}