import { JavaObject } from '../../../java/lang/JavaObject';
import { ENMKlasse } from '../../../core/data/enm/ENMKlasse';
import { ENMLeistung } from '../../../core/data/enm/ENMLeistung';
import { ENMFach } from '../../../core/data/enm/ENMFach';
import { ENMJahrgang } from '../../../core/data/enm/ENMJahrgang';
import { Schulform } from '../../../core/types/statkue/Schulform';
import { ENMLerngruppe } from '../../../core/data/enm/ENMLerngruppe';
import { ENMLehrer } from '../../../core/data/enm/ENMLehrer';
import { ENMSchueler } from '../../../core/data/enm/ENMSchueler';
import { ENMDaten } from '../../../core/data/enm/ENMDaten';
import { Geschlecht } from '../../../core/types/Geschlecht';
export declare class ENMDatenManager extends JavaObject {
    readonly daten: ENMDaten;
    private mapLehrer;
    private mapSchueler;
    private mapFaecher;
    private mapJahrgaenge;
    private mapKlassen;
    private lerngruppenIDZaehler;
    private mapLerngruppen;
    /**
     * Erzeugt einen neuen ENM-Daten-Manager mit leeren ENM-Daten.
     */
    constructor();
    /**
     * Erzeugt einen neuen ENM-Daten-Manager für die übergebenen Daten.
     *
     * @param daten   die ENM-Daten
     */
    constructor(daten: ENMDaten);
    /**
     * Fügt alle Noten des Core-Type {@link Note} zu dem Noten-Katalog der ENM-Datei hinzu.
     */
    addNoten(): void;
    /**
     * Fügt alle Förderschwerpunkte des Core-Type {@link Foerderschwerpunkt} zu dem
     * Förderschwerpunkt-Katalog der ENM-Datei hinzu.
     *
     * @param schulform   die Schulform, für welche die zulässigen Förderschwerpunkte
     *                    zurückgegeben werden
     */
    addFoerderschwerpunkte(schulform: Schulform): void;
    /**
     * Fügt einen Lehrer hinzu und überprüft dabei, ob der Lehrer schon in der Liste vorhanden ist.
     *
     * @param id            die eindeutige ID des Lehrers
     * @param kuerzel       das Kürzel des Lehrers
     * @param nachname      der Nachname des Lehrers
     * @param vorname       der Vorname des Lehrers
     * @param eMailDienstlich   die Dienst-Email-Adresse des Lehrers
     *
     * @return true, falls der Lehrer hinzugefügt wurde, ansonsten false
     */
    addLehrer(id: number, kuerzel: String | null, nachname: String | null, vorname: String | null, eMailDienstlich: String | null): boolean;
    /**
     * Fügt einen Schueler hinzu und überprüft dabei, ob der Schueler schon in der Liste vorhanden ist.
     *
     * @param id                  die ID des Schülers in der SVWS-DB
     * @param jahrgangID          die ID des aktuellen Jahrgangs, in dem sich der Schüler befindet
     * @param klasseID            die ID der aktuellen Klasse, in der sich der Schüler befindet
     * @param nachname            der Nachname des Schülers (z.B. Mustermann)
     * @param vorname             der Vorname des Schülers (z.B. Max)
     * @param geschlecht          das Geschlecht des Schülers
     * @param bilingualeSprache   gibt an, ob sich der Schüler aktuell im bilingualen Bildungsgang befindet
     *                            (wenn ja, z.B. F) oder nicht (null)
     * @param istZieldifferent    gibt an, ob der Schüler Ziel-different unterrichtet wird
     * @param istDaZFoerderung    gibt an, ob der Schüler Deutsch-Förderung mit Deutsch als Zweitsprache (DaZ)
     *                            bekommt (Seiteneinsteiger, z.B. Flüchtlingskinder)
     *
     * @return true, falls der Schueler hinzugefügt wurde, ansonsten false
     */
    addSchueler(id: number, jahrgangID: number, klasseID: number, nachname: String | null, vorname: String | null, geschlecht: Geschlecht, bilingualeSprache: String | null, istZieldifferent: boolean, istDaZFoerderung: boolean): boolean;
    /**
     * Fügt ein Fach hinzu und überprüft dabei, ob das Fach schon in der Liste vorhanden ist.
     *
     * @param id                die eindeutige ID des Faches
     * @param kuerzel           das Kürzel des Faches, wie es im Rahmen der amtlichen Schulstatistik verwendet wird. (z.B. D)
     * @param kuerzelAnzeige    das Kürzel des Faches, wie es im Rahmen der Schule benannt wird und angezeigt werden soll. (z.B. D)
     * @param sortierung        die Reihenfolge des Faches bei der Sortierung der Fächer. (z.B. 37)
     * @param istFremdsprache   gibt an, ob es sich bei dem Fach um eine Fremdsprache handelt oder nicht
     *
     * @return true, falls das Fach hinzugefügt wurde, ansonsten false
     */
    addFach(id: number, kuerzel: String | null, kuerzelAnzeige: String | null, sortierung: number, istFremdsprache: boolean): boolean;
    /**
     * Fügt einen Jahrgang hinzu und überprüft dabei, ob der Jahrgang schon in der Liste vorhanden ist.
     *
     * @param id                die eindeutige ID des Jahrganges
     * @param kuerzel           das Kürzel des Jahrgangs, wie es im Rahmen der amtlichen Schulstatistik verwendet wird. (z.B. EF)
     * @param kuerzelAnzeige    das Kürzel des Jahrgangs, wie es im Rahmen der Schule benannt wird und angezeigt werden soll. (z.B. EF)
     * @param beschreibung      die textuelle Bezeichnung des Jahrgangs. (z.B. Einführungsphase)
     * @param stufe             die Stufe des Jahrgangs. (z.B. PR, SI, nur Berufskolleg: SII, Berufskolleg Anlage D und GOSt: SII-1, SII-2, SII-3)
     * @param sortierung        die Reihenfolge des Jahrgangs bei der Sortierung der Jahrgänge. (z.B. 8)
     *
     * @return true, falls der Jahrgang hinzugefügt wurde, ansonsten false
     */
    addJahrgang(id: number, kuerzel: String | null, kuerzelAnzeige: String | null, beschreibung: String | null, stufe: String | null, sortierung: number): boolean;
    /**
     * Fügt eine Klasse hinzu und überprüft dabei, ob die Klasse schon in der Liste vorhanden ist.
     *
     * @param id                die eindeutige ID der Klasse
     * @param kuerzel           das Kürzel der Klasse, wie es im Rahmen der amtlichen Schulstatistik verwendet wird. (z.B. EF)
     * @param kuerzelAnzeige    das Kürzel der Klasse, wie es im Rahmen der Schule benannt wird und angezeigt werden soll. (z.B. EF)
     * @param sortierung        die Reihenfolge der Klasse bei der Sortierung der Klassen. (z.B. 8)
     *
     * @return true, falls die Klasse hinzugefügt wurde, ansonsten false
     */
    addKlasse(id: number, kuerzel: String | null, kuerzelAnzeige: String | null, sortierung: number): boolean;
    /**
     * Liefert das ENM-Lehrer-Objekt für die angegebene Lehrer-ID zurück,
     * sofern die Lehrer über die Methode {@link ENMDatenManager#addLehrer(long, String, String, String, String)}
     * hinzugefügt wurden.
     *
     * @param id   die ID des Lehrers
     *
     * @return das ENM-Lehrer-Objekt
     */
    getLehrer(id: number): ENMLehrer | null;
    /**
     * Liefert das ENM-Schüler-Objekt für die angegebene Schüler-ID zurück,
     * sofern die Schüler über die Methode {@link ENMDatenManager#addSchueler(long, long, long, String, String, Geschlecht, String, boolean, boolean)}
     * hinzugefügt wurden.
     *
     * @param id   die ID des Schülers
     *
     * @return das ENM-Schüler-Objekt
     */
    getSchueler(id: number): ENMSchueler | null;
    /**
     * Liefert das ENM-Fächer-Objekt für die angegebene Fächer-ID zurück,
     * sofern die Fächer über die Methode {@link ENMDatenManager#addFach(long, String, String, int, boolean)}
     * hinzugefügt wurden.
     *
     * @param id   die ID des Faches
     *
     * @return das ENM-Fächer-Objekt
     */
    getFach(id: number): ENMFach | null;
    /**
     * Liefert das ENM-Jahrgänge-Objekt für die angegebene Jahrgangs-ID zurück,
     * sofern die Jahrgänge über die Methode {@link ENMDatenManager#addJahrgang(long, String, String, String, String, int)}
     * hinzugefügt wurden.
     *
     * @param id   die ID des Jahrgangs
     *
     * @return das ENM-Jahrgänge-Objekt
     */
    getJahrgang(id: number): ENMJahrgang | null;
    /**
     * Liefert das ENM-Klassen-Objekt für die angegebene Klassen-ID zurück,
     * sofern die Klassen über die Methode {@link ENMDatenManager#addKlasse(long, String, String, int)}
     * hinzugefügt wurden.
     *
     * @param id   die ID der Klasse
     *
     * @return das ENM-Klassen-Objekt
     */
    getKlasse(id: number): ENMKlasse | null;
    /**
     * Fügt eine neue Lerngruppe mit den angegebenen Parametern hinzu, falls sie noch nicht existiert. Die strID ist dabei
     * eine temporäre ID, die nur bei der Erstellung von ENMLerngruppen auf Serverseite genutzt wird.
     *
     * @param strID               die temporäre ID der Lerngruppe, um festzustellen, ob es diese Lerngruppe bereits gibt.
     * @param kID                 die ID der Lerngruppe (Klasse oder Kurs) in der SVWS-DB
     * @param fachID              die ID des Faches der Lerngruppe.
     * @param kursartID           gibt die ID der Kursart an. Ist dieser Wert null, so handelt es sich um Klassen-Unterricht
     * @param bezeichnung         die Bezeichnung der Lerngruppe (z.B. D-GK4)
     * @param kursartKuerzel      das Kürzel der (allgemeinen) Kursart (z.B. GK)
     * @param bilingualeSprache   das einstellige Kürzel der bilingualen Sprache, sofern es sich um eine bilinguale
     *                            Lerngruppe handelt. (z.B. F)
     * @param wochenstunden       die Anzahl der Wochenstunden, falls es sich um einen Kurs handelt.
     */
    addLerngruppe(strID: String, kID: number, fachID: number, kursartID: Number | null, bezeichnung: String | null, kursartKuerzel: String | null, bilingualeSprache: String | null, wochenstunden: number): void;
    /**
     * Liefert die Lerngruppe mit der übergebenen (temporären) ID zurück.
     *
     * @param strID   die temporäre ID der Lerngruppe, um festzustellen, ob es diese Lerngruppe bereits gibt.
     *
     * @return die Lerngruppe
     */
    getLerngruppe(strID: String): ENMLerngruppe | null;
    /**
     * Fügt die Klassenlehrer zu der List der Klassenlehrer bei einem Schüler hinzu
     *
     * @param schueler           der Schüler
     * @param klassenlehrerIDs   die IDs der Klassenlehrer
     */
    addSchuelerKlassenlehrer(schueler: ENMSchueler, ...klassenlehrerIDs: Array<number>): void;
    /**
     * Fügt eine Sprache mit den übergebenen Informationen zu der Sprachenfolge eines Schülers hinzu.
     *
     * @param schueler               der Schüler
     * @param sprache                das Kürzel der Sprache, bereinigt von dem Jahrgang, in dem die Sprache eingesetzt hat
     * @param fachID                 die ID des Faches
     * @param fachKuerzel            das Kürzel des Faches
     * @param reihenfolge            die Reihenfolge des Faches in der Sprachenfolge (Beispiel 1)
     * @param belegungVonJahrgang    die Information, ab welchem Jahrgang die Sprache belegt wurde (Beispiel 5)
     * @param belegungVonAbschnitt   die Information, ab welchem Abschnitt in dem Jahrgang die Sprache belegt wurde (Beispiel 1)
     * @param belegungBisJahrgang    die Information, bis zu welchem Jahrgang die Sprache belegt wurde (Beispiel 12), sofern die Sprache bereits abgeschlossen ist
     * @param belegungBisAbschnitt   die Information, bis zu welchem Abschnitt in dem Jahrgang die Sprache belegt wurde (Beispiel 2), sofern die Sprache bereits abgeschlossen ist
     * @param referenzniveau         die Bezeichnung des Sprachreferenzniveaus, welches bisher erreicht wurde (z.B. B2/C1)
     * @param belegungSekI           die Mindest-Dauer der Belegung in der Sekundarstufe I gemäß den Stufen im Core-Type SprachBelegungSekI (z.B. 0, 2, 4, 6)
     */
    addSchuelerSprachenfolge(schueler: ENMSchueler, sprache: String | null, fachID: number, fachKuerzel: String | null, reihenfolge: number, belegungVonJahrgang: number, belegungVonAbschnitt: number, belegungBisJahrgang: Number | null, belegungBisAbschnitt: Number | null, referenzniveau: String | null, belegungSekI: Number | null): void;
    /**
     * Fügt die Leistungsdaten mit den übergebenen Informationen zu den Leistungsdaten eines Schülers hinzu
     *
     * @param schueler                    der Schüler
     * @param leistungID                  die ID der Leistungsdaten des Schülers in der SVWS-DB (z.B. 307956)
     * @param lerngruppenID               die eindeutige ID der Lerngruppe, der der Schüler zugeordnet ist.
     *                                    (Klasse oder Kurs wird erst in der Lerngruppe unterschieden!)
     * @param note                        das Kürzel der Note, die vergeben wurde
     * @param istSchriftlich              gibt an, ob das Fach schriftlich belegt wurde oder nicht
     * @param abiturfach                  gibt an, ob es sich um ein Abitufach handelt (1,2,3 oder 4) oder nicht (null)
     * @param fehlstundenGesamt           gibt die Anzahl der gesamten Fehlstunden an, sofern diese fachbezogen ermittel werden
     * @param fehlstundenUnentschuldigt   gibt die Anzahl der unentschuldigten Fehlstunden an, sofern diese fachbezogen ermittel werden
     * @param fachbezogeneBemerkungen     die fachbezogenen Bemerkungen bzw. das Thema bei Projektkursen
     * @param neueZuweisungKursart        die Kurszuweisung, die auf dem Zeugnis erscheinen soll für den nächsten Kursabschnitt
     *                                    (z.B. E oder G-Kurs, z.B. an der Gesamtschule)
     */
    addSchuelerLeistungsdaten(schueler: ENMSchueler, leistungID: number, lerngruppenID: number, note: String | null, istSchriftlich: boolean, abiturfach: Number | null, fehlstundenGesamt: Number | null, fehlstundenUnentschuldigt: Number | null, fachbezogeneBemerkungen: String | null, neueZuweisungKursart: String | null): void;
    /**
     * Fügt die Teilleistung mit den übergebenen Angaben zu übergebenen Leistungsdaten
     * eines Schülers hinzu.
     *
     * @param leistung       die Leistungsdaten eines Schülers
     * @param id             die ID der Teilleistung
     * @param artID          die ID der Art von Teileistungen
     * @param datum          das Datum, welches dem Erbringen der Teilleistung zuzuordnen ist (z.B. Klausurdatum)
     * @param bemerkung      ggf. eine Bemerkung zu der Teilleistung
     * @param notenKuerzel   das Notenkürzel, welches der Teilleistung zuzuordnen ist.
     */
    addSchuelerTeilleistung(leistung: ENMLeistung, id: number, artID: number, datum: String | null, bemerkung: String | null, notenKuerzel: String | null): void;
    isTranspiledInstanceOf(name: string): boolean;
}
export declare function cast_de_nrw_schule_svws_core_utils_enm_ENMDatenManager(obj: unknown): ENMDatenManager;
