ic_query/nns/node_provider/report/model/
report.rs1use serde::{Deserialize, Serialize};
2
3#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
10#[serde(deny_unknown_fields)]
11pub struct NnsNodeProviderListReport {
12 pub schema_version: u32,
13 #[serde(flatten)]
15 pub provenance: crate::nns::registry::NnsRegistryInventoryProvenance,
16 pub governance_canister_id: String,
17 pub node_provider_count: usize,
18 pub node_providers: Vec<NnsNodeProviderRow>,
19}
20
21#[cfg(feature = "nns-host")]
22impl_nns_inventory_report!(
23 NnsNodeProviderListReport,
24 super::super::NNS_NODE_PROVIDER_LIST_REPORT_SCHEMA_VERSION,
25 "node_provider",
26 super::super::COLLECTION,
27 node_provider_count,
28 node_providers,
29 |report: &NnsNodeProviderListReport| Some(report.governance_canister_id.clone()),
30 |report: &NnsNodeProviderListReport| {
31 if report.governance_canister_id != crate::nns::MAINNET_GOVERNANCE_CANISTER_ID {
32 return Err(format!(
33 "governance_canister_id is {}, expected {}",
34 report.governance_canister_id,
35 crate::nns::MAINNET_GOVERNANCE_CANISTER_ID
36 ));
37 }
38 Ok(())
39 },
40);
41
42#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
49pub struct NnsNodeProviderRow {
50 pub node_provider_principal: String,
51 pub name: Option<String>,
52 pub node_count: Option<u32>,
53 pub reward_account_hex: Option<String>,
54}
55
56#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
63pub struct NnsNodeProviderInfoReport {
64 pub schema_version: u32,
65 pub input: String,
66 pub resolved_from: String,
67 #[serde(flatten)]
69 pub provenance: crate::nns::registry::NnsRegistryInventoryProvenance,
70 pub governance_canister_id: String,
71 #[serde(flatten)]
73 pub node_provider: NnsNodeProviderRow,
74}