1mod api_boundary_node;
4#[cfg(feature = "dashboard-host")]
5mod build;
6#[cfg(feature = "dashboard-host")]
7mod live;
8mod model;
9mod node_status;
10#[cfg(feature = "dashboard-host")]
11mod source;
12mod text;
13
14pub use api_boundary_node::{
15 DEFAULT_IC_STATE_SOURCE_ENDPOINT, IC_API_BOUNDARY_NODE_REPORT_SCHEMA_VERSION,
16 IcApiBoundaryNodeReport, IcApiBoundaryNodeRequest, IcApiBoundaryNodeRow,
17 IcCertifiedStateProvenance, MAX_IC_API_BOUNDARY_NODE_ROWS, ic_api_boundary_node_report_text,
18};
19#[cfg(feature = "ic-state-host")]
20pub use api_boundary_node::{
21 IcApiBoundaryNodeHostError, IcApiBoundaryNodeSource, IcApiBoundaryNodeSourceData,
22 IcApiBoundaryNodeSourceRequest, LiveIcStateSource, build_ic_api_boundary_node_report,
23 build_ic_api_boundary_node_report_with_source,
24};
25#[cfg(feature = "dashboard-host")]
26pub use build::{
27 build_ic_boundary_node_data_centers_report,
28 build_ic_boundary_node_data_centers_report_with_source, build_ic_canister_count_report,
29 build_ic_canister_count_report_with_source, build_ic_canister_page_report,
30 build_ic_canister_page_report_with_source, build_ic_daily_stats_report,
31 build_ic_daily_stats_report_with_source, build_ic_metric_report,
32 build_ic_metric_report_with_source, build_ic_node_status_snapshot,
33 build_ic_node_status_snapshot_with_source, build_ic_replica_version_info_report,
34 build_ic_replica_version_info_report_with_source, build_ic_replica_version_list_report,
35 build_ic_replica_version_list_report_with_source, build_icrc_indexed_count_report,
36 build_icrc_indexed_count_report_with_source, build_icrc_token_value_report,
37 build_icrc_token_value_report_with_source, build_icrc_total_supply_report,
38 build_icrc_total_supply_report_with_source,
39};
40#[cfg(feature = "dashboard-host")]
41pub use build::{build_ic_canister_report, build_ic_canister_report_with_source};
42#[cfg(feature = "dashboard-host")]
43pub use live::LiveIcSource;
44pub use model::{
45 IcBoundaryNodeDataCenterRow, IcBoundaryNodeDataCentersReport, IcBoundaryNodeDataCentersRequest,
46 IcCanisterCountReport, IcCanisterCountRequest, IcCanisterFilters, IcCanisterPageController,
47 IcCanisterPageReport, IcCanisterPageRequest, IcCanisterPageRow, IcCanisterReport,
48 IcCanisterRequest, IcCanisterUpgrade, IcDailyStatsQuery, IcDailyStatsReport,
49 IcDailyStatsRequest, IcDailyStatsRow, IcDashboardReportProvenance, IcIcrcAnalyticsRequest,
50 IcIcrcIndexedCountKind, IcIcrcIndexedCountReport, IcIcrcIndexedCountRequest,
51 IcIcrcTokenValueQuery, IcIcrcTokenValueReport, IcIcrcTokenValueRequest, IcIcrcTokenValueRow,
52 IcIcrcTotalSupplyObservation, IcIcrcTotalSupplyQuery, IcIcrcTotalSupplyReport,
53 IcIcrcTotalSupplyRequest, IcMetricKind, IcMetricObservation, IcMetricQuery, IcMetricReport,
54 IcMetricRequest, IcMetricSeries, IcReplicaVersionInfoReport, IcReplicaVersionInfoRequest,
55 IcReplicaVersionListQuery, IcReplicaVersionListReport, IcReplicaVersionListRequest,
56 IcReplicaVersionListRow, IcReplicaVersionStatus, IcReplicaVersionSubnetRollout,
57};
58#[cfg(feature = "dashboard-host")]
59pub use model::{
60 IcBoundaryNodeDataCentersSourceData, IcCanisterCountSourceData, IcCanisterPageSourceData,
61 IcCanisterSourceData, IcDailyStatsSourceData, IcHostError, IcIcrcIndexedCountSourceData,
62 IcIcrcTokenValueSourceData, IcIcrcTokenValueSourceRow, IcIcrcTotalSupplySourceData,
63 IcMetricSourceData, IcReplicaVersionInfoSourceData, IcReplicaVersionListSourceData,
64 IcSourceRequest,
65};
66pub use node_status::{
67 DEFAULT_IC_NODE_STATUS_REFRESH_LOCK_STALE_SECONDS, DEFAULT_IC_NODE_STATUS_STALE_AFTER_SECONDS,
68 IC_NODE_STATUS_SCHEMA_VERSION, IcNodeAssignmentStatusCounts, IcNodeCountComparison,
69 IcNodeCountComparisonCounts, IcNodeOperationalStatus, IcNodeProviderStatusReport,
70 IcNodeProviderStatusRow, IcNodeStatusCacheEvidence, IcNodeStatusCounts,
71 IcNodeStatusGroupCounts, IcNodeStatusObservation, IcNodeStatusProjectionError,
72 IcNodeStatusReport, IcNodeStatusRow, IcNodeStatusScope, IcNodeStatusSnapshot,
73 IcNodeStatusSnapshotRequest, IcNodeStatusView, IcSubnetStatusReport, IcSubnetStatusRow,
74 MAX_IC_NODE_STATUS_ROWS, ic_node_provider_status_report_from_snapshot,
75 ic_node_provider_status_report_text, ic_node_status_report_from_snapshot,
76 ic_node_status_report_text, ic_subnet_status_report_from_snapshot,
77 ic_subnet_status_report_text,
78};
79#[cfg(feature = "dashboard-host")]
80pub use node_status::{
81 IcNodeStatusCacheRequest, IcNodeStatusHostError, IcNodeStatusReadRequest,
82 IcNodeStatusRefreshReport, IcNodeStatusRefreshRequest, IcNodeStatusSourceData,
83 build_ic_node_provider_status_report, build_ic_node_provider_status_report_with_source,
84 build_ic_node_status_report, build_ic_node_status_report_with_source,
85 build_ic_subnet_status_report, build_ic_subnet_status_report_with_source,
86 ic_node_status_cache_path, ic_node_status_refresh_lock_path,
87 ic_node_status_refresh_report_text, load_cached_ic_node_status_snapshot,
88 load_or_refresh_missing_ic_node_status_snapshot,
89 load_or_refresh_missing_ic_node_status_snapshot_with_source,
90 load_or_refresh_stale_ic_node_status_snapshot,
91 load_or_refresh_stale_ic_node_status_snapshot_with_source, refresh_ic_node_status_snapshot,
92 refresh_ic_node_status_snapshot_with_source,
93};
94#[cfg(feature = "dashboard-host")]
95pub use source::{
96 IcCanisterCollectionSource, IcCanisterSource, IcIcrcAnalyticsSource, IcMetricSource,
97 IcNetworkSource, IcNodeStatusSource, IcReplicaVersionSource,
98};
99pub use text::{
100 ic_boundary_node_data_centers_report_text, ic_canister_count_report_text,
101 ic_canister_page_report_text, ic_canister_report_text, ic_daily_stats_report_text,
102 ic_metric_report_text, ic_replica_version_info_report_text,
103 ic_replica_version_list_report_text, icrc_indexed_count_report_text,
104 icrc_token_value_report_text, icrc_total_supply_report_text,
105};
106
107pub const DEFAULT_IC_DASHBOARD_SOURCE_ENDPOINT: &str = "https://ic-api.internetcomputer.org/api/v3";
109
110pub const DEFAULT_IC_DASHBOARD_CANISTER_COLLECTION_SOURCE_ENDPOINT: &str =
112 "https://ic-api.internetcomputer.org/api/v4";
113
114pub const DEFAULT_IC_DASHBOARD_METRICS_SOURCE_ENDPOINT: &str =
116 "https://metrics-api.internetcomputer.org/api/v1";
117
118pub const DEFAULT_ICRC_ANALYTICS_SOURCE_ENDPOINT: &str =
120 "https://icrc-api.internetcomputer.org/api/v2";
121
122pub const DEFAULT_IC_BOUNDARY_NODE_DATA_CENTERS_SOURCE_ENDPOINT: &str =
124 "https://ic-api.internetcomputer.org/api/v4";
125
126pub const MAX_IC_DASHBOARD_RESPONSE_BYTES: u64 = 8 * 1024 * 1024;
128
129pub const DEFAULT_IC_CANISTER_PAGE_LIMIT: u16 = 50;
131
132pub const MAX_IC_CANISTER_PAGE_LIMIT: u16 = 100;
134
135pub const DEFAULT_IC_METRIC_WINDOW_SECS: u64 = 3_600;
137
138pub const DEFAULT_IC_METRIC_STEP_SECS: u32 = 300;
140
141pub const MIN_IC_METRIC_TIMESTAMP: u64 = 1_620_432_000;
143
144pub const MAX_IC_METRIC_STEP_SECS: u32 = 259_200;
146
147pub const MAX_IC_METRIC_OBSERVATIONS_PER_SERIES: u64 = 1_000;
149
150pub const DEFAULT_ICRC_TOTAL_SUPPLY_WINDOW_SECS: u64 = 30 * 24 * 60 * 60;
152
153pub const DEFAULT_ICRC_TOTAL_SUPPLY_STEP_SECS: u32 = 86_400;
155
156pub const MIN_ICRC_ANALYTICS_TIMESTAMP: u64 = 1_620_328_530;
158
159pub const MAX_ICRC_ANALYTICS_OBSERVATIONS: u64 = 1_000;
161
162pub const DEFAULT_ICRC_TOKEN_VALUE_WINDOW_SECS: u64 = 24 * 60 * 60;
164
165pub const DEFAULT_ICRC_TOKEN_VALUE_LIMIT: u16 = 1_000;
167
168pub const MAX_ICRC_TOKEN_VALUE_WINDOW_SECS: u64 = 90 * 24 * 60 * 60;
170
171pub const MAX_ICRC_TOKEN_VALUE_ROWS: u16 = 1_000;
173
174pub const DEFAULT_IC_DAILY_STATS_WINDOW_SECS: u64 = 7 * 24 * 60 * 60;
176
177pub const MIN_IC_DAILY_STATS_TIMESTAMP: u64 = 1_620_406_800;
179
180pub const MAX_IC_DAILY_STATS_WINDOW_SECS: u64 = 366 * 24 * 60 * 60;
182
183pub const MAX_IC_DAILY_STATS_ROWS: usize = 366;
185
186pub const MAX_IC_BOUNDARY_NODE_DATA_CENTERS: usize = 1_000;
188
189pub const DEFAULT_IC_REPLICA_VERSION_PAGE_LIMIT: u16 = 50;
191
192pub const MAX_IC_REPLICA_VERSION_PAGE_LIMIT: u16 = 100;
194
195#[cfg(feature = "dashboard-host")]
196const IC_DASHBOARD_REPORT_SCHEMA_VERSION: u32 = 1;
197#[cfg(feature = "dashboard-host")]
198const IC_DASHBOARD_AUTHORITY: &str = "official_ic_dashboard_api";
199#[cfg(feature = "dashboard-host")]
200const IC_DASHBOARD_NETWORK: &str = "ic";
201
202#[cfg(all(test, feature = "dashboard-host"))]
203mod tests;