use super::{
reports::{
IcBoundaryNodeDataCenterRow, IcCanisterPageRow, IcCanisterUpgrade, IcDailyStatsRow,
IcIcrcTotalSupplyObservation, IcMetricSeries, IcNodeProviderRewardHistoryObservation,
IcNodeProviderRewardRow, IcReplicaVersionListRow, IcReplicaVersionSubnetRollout,
},
requests::{
IcCanisterFilters, IcDailyStatsQuery, IcIcrcAccountListQuery, IcIcrcHolderListQuery,
IcIcrcIndexedCountKind, IcIcrcTokenValueQuery, IcIcrcTotalSupplyQuery, IcMetricQuery,
IcNodeProviderRewardHistoryQuery, IcNodeProviderRewardListQuery, IcReplicaVersionListQuery,
},
};
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct IcSourceRequest {
pub endpoint: String,
pub fetched_at: String,
pub fetched_by: String,
}
impl IcSourceRequest {
#[must_use]
pub fn new(
endpoint: impl Into<String>,
fetched_at: impl Into<String>,
fetched_by: impl Into<String>,
) -> Self {
Self {
endpoint: endpoint.into(),
fetched_at: fetched_at.into(),
fetched_by: fetched_by.into(),
}
}
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct IcCanisterSourceData {
pub source: IcSourceRequest,
pub canister_id: String,
pub dashboard_id: u64,
pub canister_type: Option<String>,
pub name: String,
pub subnet_id: String,
pub controllers: Vec<String>,
pub language: String,
pub module_hash: String,
pub dashboard_updated_at: String,
pub upgrades: Option<Vec<IcCanisterUpgrade>>,
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct IcCanisterCountSourceData {
pub source: IcSourceRequest,
pub filters: IcCanisterFilters,
pub total: u64,
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct IcCanisterPageSourceData {
pub source: IcSourceRequest,
pub filters: IcCanisterFilters,
pub requested_limit: u16,
pub after: Option<String>,
pub before: Option<String>,
pub previous_cursor: Option<String>,
pub next_cursor: Option<String>,
pub rows: Vec<IcCanisterPageRow>,
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct IcMetricSourceData {
pub source: IcSourceRequest,
pub query: IcMetricQuery,
pub series: Vec<IcMetricSeries>,
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct IcIcrcTotalSupplySourceData {
pub source: IcSourceRequest,
pub ledger_canister_id: String,
pub query: IcIcrcTotalSupplyQuery,
pub observations: Vec<IcIcrcTotalSupplyObservation>,
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct IcIcrcIndexedCountSourceData {
pub source: IcSourceRequest,
pub ledger_canister_id: String,
pub kind: IcIcrcIndexedCountKind,
pub total: u64,
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct IcIcrcAccountSourceRow {
pub account_id: String,
pub owner: String,
pub subaccount: String,
pub balance_base_units: String,
pub total_transactions: u64,
pub created_at_unix_nanos: u64,
pub ledger_canister_id: String,
pub latest_transaction_index: u64,
pub dashboard_updated_at: String,
pub active_fee_collector: bool,
pub fee_collector_block_ranges: Vec<Vec<serde_json::Value>>,
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct IcIcrcAccountListSourceData {
pub source: IcSourceRequest,
pub ledger_canister_id: String,
pub query: IcIcrcAccountListQuery,
pub previous_cursor: Option<String>,
pub next_cursor: Option<String>,
pub rows: Vec<IcIcrcAccountSourceRow>,
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct IcIcrcAccountInfoSourceData {
pub source: IcSourceRequest,
pub account: IcIcrcAccountSourceRow,
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct IcIcrcHolderSourceRow {
pub principal: String,
pub balance_base_units: String,
pub total_transactions: u64,
pub created_at_unix_nanos: u64,
pub ledger_canister_id: String,
pub latest_transaction_index: u64,
pub percentage: serde_json::Value,
pub value_usd: serde_json::Value,
pub dashboard_updated_at: String,
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct IcIcrcHolderListSourceData {
pub source: IcSourceRequest,
pub ledger_canister_id: String,
pub query: IcIcrcHolderListQuery,
pub previous_cursor: Option<String>,
pub next_cursor: Option<String>,
pub rows: Vec<IcIcrcHolderSourceRow>,
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct IcIcrcTokenValueSourceRow {
pub price: Option<String>,
pub volume_24h: Option<String>,
pub price_usd: Option<String>,
pub volume_24h_usd: Option<String>,
pub source: Option<String>,
pub source_url: Option<String>,
pub timestamp_unix_secs: Option<u64>,
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct IcIcrcTokenValueSourceData {
pub source: IcSourceRequest,
pub ledger_canister_id: String,
pub query: IcIcrcTokenValueQuery,
pub rows: Vec<IcIcrcTokenValueSourceRow>,
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct IcDailyStatsSourceData {
pub source: IcSourceRequest,
pub query: IcDailyStatsQuery,
pub rows: Vec<IcDailyStatsRow>,
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct IcBoundaryNodeDataCentersSourceData {
pub source: IcSourceRequest,
pub rows: Vec<IcBoundaryNodeDataCenterRow>,
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct IcNodeProviderRewardListSourceData {
pub source: IcSourceRequest,
pub query: IcNodeProviderRewardListQuery,
pub resolved_max_reward_index: u64,
pub total_reward_records: u64,
pub rows: Vec<IcNodeProviderRewardRow>,
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct IcNodeProviderRewardInfoSourceData {
pub source: IcSourceRequest,
pub reward: IcNodeProviderRewardRow,
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct IcNodeProviderRewardHistorySourceData {
pub source: IcSourceRequest,
pub query: IcNodeProviderRewardHistoryQuery,
pub observations: Vec<IcNodeProviderRewardHistoryObservation>,
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct IcReplicaVersionListSourceData {
pub source: IcSourceRequest,
pub query: IcReplicaVersionListQuery,
pub resolved_max_proposal_index: u64,
pub total_proposals: u64,
pub rows: Vec<IcReplicaVersionListRow>,
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct IcReplicaVersionInfoSourceData {
pub source: IcSourceRequest,
pub replica_version_id: String,
pub proposal_id: u64,
pub executed_timestamp_seconds: u64,
pub title: String,
pub url: String,
pub summary: String,
pub subnets: Vec<IcReplicaVersionSubnetRollout>,
}