blokli_client/api/v1/graphql/
info.rs1use super::{QueryFailedError, ReadinessState, TokenValueString, Uint64, schema};
2
3#[derive(cynic::QueryFragment, Debug)]
4#[cynic(graphql_type = "QueryRoot")]
5pub struct QueryChainInfo {
6 pub chain_info: ChainInfoResult,
7}
8
9#[derive(cynic::QueryFragment, Debug, Clone, PartialEq)]
11#[cfg_attr(feature = "serde", derive(serde::Serialize))]
12pub struct ChainInfo {
13 pub channel_closure_grace_period: Uint64,
15 pub channel_dst: Option<String>,
17 pub block_number: i32,
19 pub chain_id: i32,
21 pub gas_price: Option<String>,
23 pub ledger_dst: Option<String>,
25 pub max_fee_per_gas: Option<String>,
27 pub max_priority_fee_per_gas: Option<String>,
29 pub min_ticket_winning_probability: f64,
31 pub key_binding_fee: TokenValueString,
33 pub safe_registry_dst: Option<String>,
35 pub ticket_price: TokenValueString,
37 pub network: String,
39 pub contract_addresses: ContractAddressMap,
41 pub expected_block_time: Uint64,
43 pub finality: Uint64,
45}
46
47#[derive(cynic::Scalar, Debug, Clone, PartialEq, Eq)]
49pub struct ContractAddressMap(pub String);
50
51#[derive(cynic::InlineFragments, Debug)]
52pub enum ChainInfoResult {
53 ChainInfo(Box<ChainInfo>),
54 QueryFailedError(QueryFailedError),
55 #[cynic(fallback)]
56 Unknown,
57}
58
59impl From<ChainInfoResult> for Result<ChainInfo, crate::errors::BlokliClientError> {
60 fn from(value: ChainInfoResult) -> Self {
61 match value {
62 ChainInfoResult::ChainInfo(info) => Ok(*info),
63 ChainInfoResult::QueryFailedError(e) => Err(e.into()),
64 ChainInfoResult::Unknown => Err(crate::errors::ErrorKind::NoData.into()),
65 }
66 }
67}
68
69#[derive(cynic::QueryFragment, Debug)]
70#[cynic(graphql_type = "SubscriptionRoot")]
71pub struct SubscribeTicketParams {
72 pub ticket_parameters_updated: TicketParameters,
73}
74
75#[derive(cynic::QueryFragment, Debug)]
76#[cynic(graphql_type = "SubscriptionRoot")]
77pub struct SubscribeHealth {
78 pub health: ReadinessState,
79}
80
81#[derive(cynic::QueryFragment, Debug, Clone, PartialEq)]
83#[cfg_attr(feature = "serde", derive(serde::Serialize))]
84pub struct TicketParameters {
85 pub min_ticket_winning_probability: f64,
87 pub ticket_price: TokenValueString,
89}
90
91#[derive(cynic::QueryFragment, Debug)]
92#[cynic(graphql_type = "QueryRoot")]
93pub struct QueryVersion {
94 pub version: String,
95}
96
97#[derive(cynic::QueryFragment, Debug)]
98#[cynic(graphql_type = "QueryRoot")]
99pub struct QueryHealth {
100 pub health: String,
101}
102
103#[derive(cynic::QueryFragment, Debug)]
104#[cynic(graphql_type = "QueryRoot")]
105pub struct QueryCompatibility {
106 pub compatibility: Compatibility,
107}
108
109#[derive(cynic::QueryFragment, Debug, Clone, PartialEq)]
111#[cfg_attr(feature = "serde", derive(serde::Serialize))]
112pub struct Compatibility {
113 pub api_version: String,
115 pub supported_client_versions: String,
117 pub features: Vec<String>,
119}