#[cfg(feature = "host")]
use candid::CandidType;
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, Eq, PartialEq, Deserialize, Serialize)]
pub struct CmcReportContext {
pub schema_version: u32,
pub network: String,
pub cmc_canister_id: String,
pub fetched_at: String,
pub source_endpoint: String,
pub fetched_by: String,
}
#[cfg_attr(feature = "host", derive(CandidType))]
#[derive(Clone, Debug, Eq, PartialEq, Deserialize, Serialize)]
pub struct CmcIcpXdrConversionRate {
pub timestamp_seconds: u64,
pub xdr_permyriad_per_icp: u64,
}
#[derive(Clone, Debug, Eq, PartialEq, Deserialize, Serialize)]
pub struct CmcCertification {
pub certificate_verified: bool,
pub certificate_hex: String,
pub certificate_bytes: usize,
pub hash_tree_hex: String,
pub hash_tree_bytes: usize,
}
#[derive(Clone, Debug, Eq, PartialEq, Deserialize, Serialize)]
pub struct CmcXdrReport {
#[serde(flatten)]
pub context: CmcReportContext,
pub rate: CmcIcpXdrConversionRate,
pub certification: CmcCertification,
}
#[derive(Clone, Debug, Eq, PartialEq, Deserialize, Serialize)]
pub struct CmcCyclesReport {
#[serde(flatten)]
pub context: CmcReportContext,
pub rate: CmcIcpXdrConversionRate,
pub cycles_per_xdr: u128,
pub cycles_per_xdr_source: String,
pub cycles_per_icp: u128,
pub cycles_per_icp_formula: String,
pub certification: CmcCertification,
}
#[cfg(feature = "host")]
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct CmcCertifiedRate {
pub rate: CmcIcpXdrConversionRate,
pub certification: CmcCertification,
}