// Auto-generated by automapper-generator. Do not edit.

#![allow(unused_imports)]

use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct AnsprechpartnerKontakt {
    pub funktion_code: Option<String>,
    pub name: Option<String>,
    pub nummer: Option<String>,
}

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Ansprechpartner {
    pub kommunikationsadresse: Option<String>,
    pub kommunikationstyp: Option<String>,
    pub kontakt: Option<AnsprechpartnerKontakt>,
}

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Energiemenge {
    pub rechenschritt_identifikator: Option<String>,
    pub zeitraum_ref: Option<String>,
}

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct LeistungskurveMerkmal {
    pub code: Option<String>,
}

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Leistungskurve {
    pub dimension: Option<String>,
    pub haeufigkeit: Option<String>,
    pub klassentyp: Option<String>,
    pub sequenz_qualifier: Option<String>,
    pub uebermittelbarkeit: Option<String>,
    pub merkmal: Option<LeistungskurveMerkmal>,
}

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Leistungskurvenveraenderung {
    pub aenderungs_zeitpunkt: Option<String>,
    pub menge: Option<String>,
}

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct MarktteilnehmerWrapped {
    #[serde(flatten)]
    pub core: Option<bo4e_german::Marktteilnehmer>,
}

impl MarktteilnehmerWrapped {
    /// Create a wrapped entity from a core BO4E type, with companion fields defaulted.
    pub fn with_core(core: bo4e_german::Marktteilnehmer) -> Self {
        Self { core: Some(core) }
    }
}

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Nachricht {
    pub dokumentennummer: Option<String>,
    pub dokumenttyp: Option<String>,
    pub erstellungsdatum: Option<String>,
}

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ProzessdatenZeitscheibe {
    pub referenz: Option<String>,
}

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Prozessdaten {
    pub beantragungsnummer: Option<String>,
    pub definition_code: Option<String>,
    pub fertigstellungs_datum: Option<String>,
    pub freitext1: Option<String>,
    pub freitext2: Option<String>,
    pub freitext3: Option<String>,
    pub freitext4: Option<String>,
    pub freitext5: Option<String>,
    pub gueltigkeits_beginn: Option<String>,
    pub gueltigkeits_ende: Option<String>,
    pub meldepunkt_id: Option<String>,
    pub pruefschritt_code: Option<String>,
    pub status_code: Option<String>,
    pub text_funktion: Option<String>,
    pub text_referenz: Option<String>,
    pub transaktionsreferenz: Option<String>,
    pub vorgangsnummer: Option<String>,
    pub zeitscheibe: Option<ProzessdatenZeitscheibe>,
}

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Rechenschritt {
    pub bestandteil_referenz: Option<String>,
    pub rechenschritt_identifikator: Option<String>,
    pub rechenschritt_nummer: Option<String>,
    pub zeitraum_ref: Option<String>,
}

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct RechenschrittZuordnungMerkmal {
    pub code: Option<String>,
}

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct RechenschrittZuordnung {
    pub dimension: Option<String>,
    pub klassentyp: Option<String>,
    pub merkmal_daten_wert: Option<String>,
    pub merkmal_wert: Option<String>,
    pub merkmal: Option<RechenschrittZuordnungMerkmal>,
}

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Register {
    pub register_code: Option<String>,
}

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct RegisterZuordnungMerkmal {
    pub code: Option<String>,
}

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct RegisterZuordnung {
    pub dimension: Option<String>,
    pub klassentyp: Option<String>,
    pub merkmal: Option<RegisterZuordnungMerkmal>,
}

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Schaltzeitaenderung {
    pub aenderungs_zeitpunkt: Option<String>,
    pub dimension: Option<String>,
    pub klassentyp: Option<String>,
    pub schalthandlung: Option<String>,
}

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SchaltzeitdefinitionMerkmal {
    pub code: Option<String>,
}

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Schaltzeitdefinition {
    pub dimension: Option<String>,
    pub haeufigkeit: Option<String>,
    pub klassentyp: Option<String>,
    pub sequenz_qualifier: Option<String>,
    pub uebermittelbarkeit: Option<String>,
    pub merkmal: Option<SchaltzeitdefinitionMerkmal>,
}

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Zaehlzeitaenderung {
    pub aenderungs_zeitpunkt: Option<String>,
    pub register_code: Option<String>,
    pub zaehlzeitaenderung_edifact: Option<crate::generated::companions::ZaehlzeitaenderungEdifact>,
}

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ZaehlzeitdefinitionMerkmal {
    pub code: Option<String>,
}

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Zaehlzeitdefinition {
    pub aenderungs_verfahren: Option<String>,
    pub dimension: Option<String>,
    pub haeufigkeit: Option<String>,
    pub klassentyp: Option<String>,
    pub prioritaet: Option<String>,
    pub sequenz_qualifier: Option<String>,
    pub uebermittelbarkeit: Option<String>,
    pub validierung_status: Option<String>,
    pub validierung_status_zusatz: Option<String>,
    pub merkmal: Option<ZaehlzeitdefinitionMerkmal>,
}

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ZeitscheibeZeitscheibe {
    pub referenz: Option<String>,
}

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Zeitscheibe {
    pub verwendung_der_daten_ab: Option<String>,
    pub verwendung_der_daten_bis: Option<String>,
    pub zeitraum_qualitaet: Option<String>,
    pub zeitscheibe: Option<ZeitscheibeZeitscheibe>,
}

