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 node_provider_count,
27 node_providers,
28 |report: &NnsNodeProviderListReport| Some(report.governance_canister_id.clone()),
29 |report: &NnsNodeProviderListReport| {
30 if report.governance_canister_id != crate::nns::MAINNET_GOVERNANCE_CANISTER_ID {
31 return Err(format!(
32 "governance_canister_id is {}, expected {}",
33 report.governance_canister_id,
34 crate::nns::MAINNET_GOVERNANCE_CANISTER_ID
35 ));
36 }
37 Ok(())
38 },
39);
40
41#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
48pub struct NnsNodeProviderRow {
49 pub node_provider_principal: String,
50 pub name: Option<String>,
51 pub node_count: Option<u32>,
52 pub reward_account_hex: Option<String>,
53}
54
55#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
62pub struct NnsNodeProviderInfoReport {
63 pub schema_version: u32,
64 pub input: String,
65 pub resolved_from: String,
66 #[serde(flatten)]
68 pub provenance: crate::nns::registry::NnsRegistryInventoryProvenance,
69 pub governance_canister_id: String,
70 #[serde(flatten)]
72 pub node_provider: NnsNodeProviderRow,
73}