use std::collections::HashMap;
use crate::e173_types;
use super::{
command::CommandClass, localization::DefinitionLocalization, parameter::ParameterClass,
resource::ResourceClass, serializer::SerializerClass, structure::StructureClass,
};
e173_types! {
#[serde(rename_all = "camelCase")]
pub struct Library {
#[serde(rename = "@description")]
pub description: String,
pub publish_date: String,
pub author: String,
#[serde(default, skip_serializing_if = "HashMap::is_empty")]
pub parameter_classes: HashMap<String, ParameterClass>,
#[serde(default, skip_serializing_if = "HashMap::is_empty")]
pub structure_classes: HashMap<String, StructureClass>,
#[serde(default, skip_serializing_if = "HashMap::is_empty")]
pub serializer_classes: HashMap<String, SerializerClass>,
#[serde(default, skip_serializing_if = "HashMap::is_empty")]
pub resource_classes: HashMap<String, ResourceClass>,
#[serde(default, skip_serializing_if = "HashMap::is_empty")]
pub command_classes: HashMap<String, CommandClass>,
#[serde(default, skip_serializing_if = "HashMap::is_empty")]
pub localizations: HashMap<String, DefinitionLocalization>,
}
}