blokli-client 0.29.1

Client connector to Blokli
Documentation
use super::{QueryFailedError, TokenValueString, Uint64, schema};

#[derive(cynic::QueryFragment, Debug)]
#[cynic(graphql_type = "QueryRoot")]
pub struct QueryChainInfo {
    pub chain_info: ChainInfoResult,
}

#[derive(cynic::QueryFragment, Debug, Clone, PartialEq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize))]
pub struct ChainInfo {
    pub channel_closure_grace_period: Uint64,
    pub channel_dst: Option<String>,
    pub block_number: i32,
    pub chain_id: i32,
    pub gas_price: Option<String>,
    pub ledger_dst: Option<String>,
    pub max_fee_per_gas: Option<String>,
    pub max_priority_fee_per_gas: Option<String>,
    pub min_ticket_winning_probability: f64,
    pub key_binding_fee: TokenValueString,
    pub safe_registry_dst: Option<String>,
    pub ticket_price: TokenValueString,
    pub network: String,
    pub contract_addresses: ContractAddressMap,
    pub expected_block_time: Uint64,
    pub finality: Uint64,
}

#[derive(cynic::Scalar, Debug, Clone, PartialEq, Eq)]
pub struct ContractAddressMap(pub String);

#[derive(cynic::InlineFragments, Debug)]
pub enum ChainInfoResult {
    ChainInfo(Box<ChainInfo>),
    QueryFailedError(QueryFailedError),
    #[cynic(fallback)]
    Unknown,
}

impl From<ChainInfoResult> for Result<ChainInfo, crate::errors::BlokliClientError> {
    fn from(value: ChainInfoResult) -> Self {
        match value {
            ChainInfoResult::ChainInfo(info) => Ok(*info),
            ChainInfoResult::QueryFailedError(e) => Err(e.into()),
            ChainInfoResult::Unknown => Err(crate::errors::ErrorKind::NoData.into()),
        }
    }
}

#[derive(cynic::QueryFragment, Debug)]
#[cynic(graphql_type = "SubscriptionRoot")]
pub struct SubscribeTicketParams {
    pub ticket_parameters_updated: TicketParameters,
}

#[derive(cynic::QueryFragment, Debug, Clone, PartialEq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize))]
pub struct TicketParameters {
    pub min_ticket_winning_probability: f64,
    pub ticket_price: TokenValueString,
}

#[derive(cynic::QueryFragment, Debug)]
#[cynic(graphql_type = "QueryRoot")]
pub struct QueryVersion {
    pub version: String,
}

#[derive(cynic::QueryFragment, Debug)]
#[cynic(graphql_type = "QueryRoot")]
pub struct QueryCompatibility {
    pub compatibility: Compatibility,
}

#[derive(cynic::QueryFragment, Debug, Clone, PartialEq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize))]
pub struct Compatibility {
    pub api_version: String,
    pub supported_client_versions: String,
    pub features: Vec<String>,
}

#[derive(cynic::QueryFragment, Debug)]
#[cynic(graphql_type = "QueryRoot")]
pub struct QueryHealth {
    pub health: String,
}