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;
12
13pub use api_boundary_node::{
14 DEFAULT_IC_STATE_SOURCE_ENDPOINT, IC_API_BOUNDARY_NODE_REPORT_SCHEMA_VERSION,
15 IcApiBoundaryNodeReport, IcApiBoundaryNodeRequest, IcApiBoundaryNodeRow,
16 IcCertifiedStateProvenance, MAX_IC_API_BOUNDARY_NODE_ROWS,
17};
18#[cfg(feature = "ic-state-host")]
19pub use api_boundary_node::{
20 IcApiBoundaryNodeHostError, IcApiBoundaryNodeSource, IcApiBoundaryNodeSourceData,
21 IcApiBoundaryNodeSourceRequest, LiveIcStateSource, build_ic_api_boundary_node_report,
22 build_ic_api_boundary_node_report_with_source,
23};
24#[cfg(feature = "dashboard-host")]
25pub use build::{
26 build_ic_boundary_node_data_centers_report,
27 build_ic_boundary_node_data_centers_report_with_source, build_ic_canister_count_report,
28 build_ic_canister_count_report_with_source, build_ic_canister_page_report,
29 build_ic_canister_page_report_with_source, build_ic_daily_stats_report,
30 build_ic_daily_stats_report_with_source, build_ic_metric_report,
31 build_ic_metric_report_with_source, build_ic_node_provider_reward_history_report,
32 build_ic_node_provider_reward_history_report_with_source,
33 build_ic_node_provider_reward_info_report,
34 build_ic_node_provider_reward_info_report_with_source,
35 build_ic_node_provider_reward_list_report,
36 build_ic_node_provider_reward_list_report_with_source, build_ic_node_status_snapshot,
37 build_ic_node_status_snapshot_with_source, build_ic_replica_version_info_report,
38 build_ic_replica_version_info_report_with_source, build_ic_replica_version_list_report,
39 build_ic_replica_version_list_report_with_source, build_icrc_account_info_report,
40 build_icrc_account_info_report_with_source, build_icrc_account_list_report,
41 build_icrc_account_list_report_with_source, build_icrc_holder_list_report,
42 build_icrc_holder_list_report_with_source, build_icrc_indexed_count_report,
43 build_icrc_indexed_count_report_with_source, build_icrc_token_value_report,
44 build_icrc_token_value_report_with_source, build_icrc_total_supply_report,
45 build_icrc_total_supply_report_with_source,
46};
47#[cfg(feature = "dashboard-host")]
48pub use build::{build_ic_canister_report, build_ic_canister_report_with_source};
49#[cfg(feature = "dashboard-host")]
50pub use live::LiveIcSource;
51pub use model::{
52 IcBoundaryNodeDataCenterRow, IcBoundaryNodeDataCentersReport, IcCanisterCountReport,
53 IcCanisterCountRequest, IcCanisterData, IcCanisterFilters, IcCanisterPageController,
54 IcCanisterPageReport, IcCanisterPageRequest, IcCanisterPageRow, IcCanisterReport,
55 IcCanisterRequest, IcCanisterUpgrade, IcDailyStatsQuery, IcDailyStatsReport,
56 IcDailyStatsRequest, IcDailyStatsRow, IcDashboardReportProvenance, IcDashboardRequest,
57 IcIcrcAccountInfoReport, IcIcrcAccountInfoRequest, IcIcrcAccountListQuery,
58 IcIcrcAccountListReport, IcIcrcAccountListRequest, IcIcrcAccountRow, IcIcrcAccountSort,
59 IcIcrcAnalyticsRequest, IcIcrcHolderListQuery, IcIcrcHolderListReport, IcIcrcHolderListRequest,
60 IcIcrcHolderRow, IcIcrcHolderSort, IcIcrcIndexedCountKind, IcIcrcIndexedCountReport,
61 IcIcrcIndexedCountRequest, IcIcrcTokenValueQuery, IcIcrcTokenValueReport,
62 IcIcrcTokenValueRequest, IcIcrcTokenValueRow, IcIcrcTotalSupplyObservation,
63 IcIcrcTotalSupplyQuery, IcIcrcTotalSupplyReport, IcIcrcTotalSupplyRequest, IcMetricKind,
64 IcMetricObservation, IcMetricQuery, IcMetricReport, IcMetricRequest, IcMetricSeries,
65 IcNodeProviderRewardHistoryObservation, IcNodeProviderRewardHistoryQuery,
66 IcNodeProviderRewardHistoryReport, IcNodeProviderRewardHistoryRequest,
67 IcNodeProviderRewardInfoReport, IcNodeProviderRewardInfoRequest, IcNodeProviderRewardListQuery,
68 IcNodeProviderRewardListReport, IcNodeProviderRewardListRequest, IcNodeProviderRewardRow,
69 IcNodeProviderRewardXdrConversionRate, IcReplicaVersionDetails, IcReplicaVersionInfoReport,
70 IcReplicaVersionInfoRequest, IcReplicaVersionListQuery, IcReplicaVersionListReport,
71 IcReplicaVersionListRequest, IcReplicaVersionListRow, IcReplicaVersionStatus,
72 IcReplicaVersionSubnetRollout,
73};
74#[cfg(feature = "dashboard-host")]
75pub use model::{
76 IcBoundaryNodeDataCentersSourceData, IcCanisterCountSourceData, IcCanisterPageSourceData,
77 IcCanisterSourceData, IcDailyStatsSourceData, IcHostError, IcIcrcAccountInfoSourceData,
78 IcIcrcAccountListSourceData, IcIcrcAccountSourceRow, IcIcrcHolderListSourceData,
79 IcIcrcHolderSourceRow, IcIcrcIndexedCountSourceData, IcIcrcTokenValueSourceData,
80 IcIcrcTokenValueSourceRow, IcIcrcTotalSupplySourceData, IcMetricSourceData,
81 IcNodeProviderRewardHistorySourceData, IcNodeProviderRewardInfoSourceData,
82 IcNodeProviderRewardListSourceData, IcReplicaVersionInfoSourceData,
83 IcReplicaVersionListSourceData, IcSourceRequest,
84};
85#[cfg(feature = "dashboard-host")]
86pub(crate) use node_status::canonicalize_node_status_rows_with_policy;
87#[cfg(feature = "dashboard-host")]
88pub(crate) use node_status::node_status_counts;
89pub use node_status::{
90 DEFAULT_IC_NODE_STATUS_STALE_AFTER_SECONDS, IC_NODE_STATUS_SCHEMA_VERSION,
91 IcNodeAssignmentStatusCounts, IcNodeCountComparison, IcNodeCountComparisonCounts,
92 IcNodeOperationalStatus, IcNodeProviderStatusReport, IcNodeProviderStatusRow,
93 IcNodeStatusCacheEvidence, IcNodeStatusCounts, IcNodeStatusGroupCounts,
94 IcNodeStatusObservation, IcNodeStatusProjectionError, IcNodeStatusReport, IcNodeStatusRow,
95 IcNodeStatusScope, IcNodeStatusSnapshot, IcNodeStatusView, IcSubnetStatusReport,
96 IcSubnetStatusRow, MAX_IC_NODE_STATUS_ROWS, ic_node_provider_status_report_from_snapshot,
97 ic_node_status_report_from_snapshot, ic_subnet_status_report_from_snapshot,
98};
99#[cfg(feature = "dashboard-host")]
100pub use node_status::{
101 IcNodeStatusCacheRequest, IcNodeStatusHostError, IcNodeStatusReadRequest,
102 IcNodeStatusRefreshReport, IcNodeStatusRefreshRequest, IcNodeStatusSourceData,
103 build_ic_node_provider_status_report, build_ic_node_provider_status_report_with_source,
104 build_ic_node_status_report, build_ic_node_status_report_with_source,
105 build_ic_subnet_status_report, build_ic_subnet_status_report_with_source,
106 ic_node_status_cache_path, ic_node_status_refresh_lock_path,
107 load_cached_ic_node_status_snapshot, load_or_refresh_missing_ic_node_status_snapshot,
108 load_or_refresh_missing_ic_node_status_snapshot_with_source,
109 load_or_refresh_stale_ic_node_status_snapshot,
110 load_or_refresh_stale_ic_node_status_snapshot_with_source, refresh_ic_node_status_snapshot,
111 refresh_ic_node_status_snapshot_with_source,
112};
113#[cfg(feature = "dashboard-host")]
114pub use source::{
115 IcCanisterCollectionSource, IcCanisterSource, IcIcrcAnalyticsSource, IcIcrcIndexSource,
116 IcMetricSource, IcNetworkSource, IcNodeProviderRewardSource, IcNodeStatusSource,
117 IcReplicaVersionSource,
118};
119#[cfg(feature = "dashboard-host")]
120pub(crate) use source::{
121 canonical_request_principal, invalid_source, invalid_source_value, report_provenance,
122 validate_canonical_principal, validate_dashboard_network, validate_provenance,
123 validate_source_text,
124};
125
126pub const DEFAULT_IC_DASHBOARD_SOURCE_ENDPOINT: &str = "https://ic-api.internetcomputer.org/api/v3";
128
129pub const DEFAULT_IC_DASHBOARD_CANISTER_COLLECTION_SOURCE_ENDPOINT: &str =
131 "https://ic-api.internetcomputer.org/api/v4";
132
133pub const DEFAULT_IC_DASHBOARD_METRICS_SOURCE_ENDPOINT: &str =
135 "https://metrics-api.internetcomputer.org/api/v1";
136
137pub const DEFAULT_ICRC_ANALYTICS_SOURCE_ENDPOINT: &str =
139 "https://icrc-api.internetcomputer.org/api/v2";
140
141pub const DEFAULT_ICRC_ACCOUNT_INFO_SOURCE_ENDPOINT: &str =
143 "https://icrc-api.internetcomputer.org/api/v1";
144
145pub const DEFAULT_IC_BOUNDARY_NODE_DATA_CENTERS_SOURCE_ENDPOINT: &str =
147 "https://ic-api.internetcomputer.org/api/v4";
148
149pub const MAX_IC_DASHBOARD_RESPONSE_BYTES: u64 = 8 * 1024 * 1024;
151
152pub const DEFAULT_IC_CANISTER_PAGE_LIMIT: u16 = 50;
154
155pub const MAX_IC_CANISTER_PAGE_LIMIT: u16 = 100;
157
158pub const DEFAULT_IC_METRIC_WINDOW_SECS: u64 = 3_600;
160
161pub const DEFAULT_IC_METRIC_STEP_SECS: u32 = 300;
163
164pub const MIN_IC_METRIC_TIMESTAMP: u64 = 1_620_432_000;
166
167pub const MAX_IC_METRIC_STEP_SECS: u32 = 259_200;
169
170pub const MAX_IC_METRIC_OBSERVATIONS_PER_SERIES: u64 = 1_000;
172
173pub const DEFAULT_ICRC_TOTAL_SUPPLY_WINDOW_SECS: u64 = 30 * 24 * 60 * 60;
175
176pub const DEFAULT_ICRC_TOTAL_SUPPLY_STEP_SECS: u32 = 86_400;
178
179pub const MIN_ICRC_ANALYTICS_TIMESTAMP: u64 = 1_620_328_530;
181
182pub const MAX_ICRC_ANALYTICS_OBSERVATIONS: u64 = 1_000;
184
185pub const DEFAULT_ICRC_TOKEN_VALUE_WINDOW_SECS: u64 = 24 * 60 * 60;
187
188pub const DEFAULT_ICRC_TOKEN_VALUE_LIMIT: u16 = 1_000;
190
191pub const MAX_ICRC_TOKEN_VALUE_WINDOW_SECS: u64 = 90 * 24 * 60 * 60;
193
194pub const MAX_ICRC_TOKEN_VALUE_ROWS: u16 = 1_000;
196
197pub const MAX_ICRC_INDEX_PAGE_ROWS: u16 = 100;
199
200pub const MAX_ICRC_INDEX_CURSOR_CHARS: usize = 512;
202
203pub const DEFAULT_IC_DAILY_STATS_WINDOW_SECS: u64 = 7 * 24 * 60 * 60;
205
206pub const MIN_IC_DAILY_STATS_TIMESTAMP: u64 = 1_620_406_800;
208
209pub const MAX_IC_DAILY_STATS_WINDOW_SECS: u64 = 366 * 24 * 60 * 60;
211
212pub const MAX_IC_DAILY_STATS_ROWS: usize = 366;
214
215pub const MAX_IC_BOUNDARY_NODE_DATA_CENTERS: usize = 1_000;
217
218pub const DEFAULT_IC_REPLICA_VERSION_PAGE_LIMIT: u16 = 50;
220
221pub const MAX_IC_REPLICA_VERSION_PAGE_LIMIT: u16 = 100;
223
224pub const DEFAULT_IC_NODE_PROVIDER_REWARD_PAGE_LIMIT: u16 = 50;
226
227pub const MAX_IC_NODE_PROVIDER_REWARD_PAGE_LIMIT: u16 = 100;
229
230pub const DEFAULT_IC_NODE_PROVIDER_REWARD_HISTORY_WINDOW_SECS: u64 = 365 * 24 * 60 * 60;
232
233pub const DEFAULT_IC_NODE_PROVIDER_REWARD_HISTORY_STEP_SECS: u32 = 86_400;
235
236pub const MIN_IC_NODE_PROVIDER_REWARD_HISTORY_STEP_SECS: u32 = 60;
238
239pub const MAX_IC_NODE_PROVIDER_REWARD_HISTORY_STEP_SECS: u32 = 259_200;
241
242pub const MAX_IC_NODE_PROVIDER_REWARD_HISTORY_OBSERVATIONS: u64 = 1_000;
244
245#[cfg(feature = "dashboard-host")]
246pub(crate) const IC_DASHBOARD_REPORT_SCHEMA_VERSION: u32 = 1;
247pub(crate) const IC_DASHBOARD_AUTHORITY: &str = "official_ic_dashboard_api";
248#[cfg(feature = "dashboard-host")]
249pub(crate) const IC_DASHBOARD_NETWORK: &str = "ic";
250
251#[cfg(all(test, feature = "dashboard-host"))]
252mod tests;