1use std::collections::BTreeMap;
4
5use serde::{Deserialize, Serialize};
6
7#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
10pub struct ObjectSummary {
11 #[serde(default, skip_serializing_if = "BTreeMap::is_empty")]
13 pub elements: BTreeMap<String, u64>,
14 #[serde(default, skip_serializing_if = "Option::is_none")]
15 pub topology: Option<ObjectTopology>,
16 #[serde(default, skip_serializing_if = "Option::is_none")]
17 pub units: Option<ObjectUnits>,
18}
19
20#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
21pub struct ObjectTopology {
22 #[serde(default, skip_serializing_if = "Option::is_none")]
23 pub connected_components: Option<u64>,
24 #[serde(default, skip_serializing_if = "Vec::is_empty")]
27 pub reference_buses: Vec<String>,
28}
29
30#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
31pub struct ObjectUnits {
32 #[serde(default, skip_serializing_if = "Option::is_none")]
33 pub power: Option<String>,
34 #[serde(default, skip_serializing_if = "Option::is_none")]
35 pub angle: Option<String>,
36 #[serde(default, skip_serializing_if = "Option::is_none")]
37 pub base_mva: Option<f64>,
38}