import { JavaObject } from '../../../java/lang/JavaObject';
import { Schulgliederung } from '../../../core/types/statkue/Schulgliederung';
import { List } from '../../../java/util/List';
export declare class Schulform extends JavaObject {
    /** the name of the enumeration value */
    private readonly __name;
    /** the ordinal value for the enumeration value */
    private readonly __ordinal;
    /** an array containing all values of this enumeration */
    private static readonly all_values_by_ordinal;
    /** an array containing all values of this enumeration indexed by their name*/
    private static readonly all_values_by_name;
    static readonly AS: Schulform;
    static readonly BK: Schulform;
    static readonly FW: Schulform;
    static readonly G: Schulform;
    static readonly GE: Schulform;
    static readonly GM: Schulform;
    static readonly GY: Schulform;
    static readonly H: Schulform;
    static readonly HU: Schulform;
    static readonly LB: Schulform;
    static readonly PS: Schulform;
    static readonly R: Schulform;
    static readonly S: Schulform;
    static readonly SB: Schulform;
    static readonly SG: Schulform;
    static readonly SK: Schulform;
    static readonly SO: Schulform;
    static readonly SP: Schulform;
    static readonly SR: Schulform;
    static readonly V: Schulform;
    static readonly WB: Schulform;
    static readonly WZ: Schulform;
    static readonly XB: Schulform;
    static readonly XS: Schulform;
    private static readonly _schulformen;
    private static readonly _schulformenNummer;
    readonly kuerzel: String;
    private readonly nummer;
    readonly bezeichnung: String;
    readonly hatGymOb: boolean;
    readonly gueltigVon: String | null;
    readonly gueltigBis: String | null;
    /**
     * Erzeugt eine neue Schulform in der Aufzählung.
     *
     * @param kuerzel           das Kürzel, welche im Rahmen der amtlichen Schulstatistik verwendet wird
     * @param nummer            die Nummer, welche im Rahmen der amtlichen Schulstatistik verwendet wird
     * @param bezeichnung       die textuelle Bezeichnung der Schulform
     * @param gueltigVon        gibt an, wann die Schulform einführt wurde - ist kein Datum bekannt, so wird null gesetzt
     * @param gueltigBis        gibt an, bis wann die Schulform gültig ist - ist kein Datum bekannt, so wird null gesetzt
     */
    private constructor();
    /**
     * Gibt eine Map von den Kürzels der Schulformen auf die zugehörigen Schulformen
     * zurück. Sollte diese noch nicht initialisiert sein, so wird sie initielisiert.
     *
     * @return die Map von den Kürzels der Schulformen auf die zugehörigen Schulformen
     */
    private static getMapSchulformenByKuerzel;
    /**
     * Gibt eine Map von den Kürzels der Schulformen auf die zugehörigen Schulformen
     * zurück. Sollte diese noch nicht initialisiert sein, so wird sie initielisiert.
     *
     * @return die Map von den Kürzels der Schulformen auf die zugehörigen Schulformen
     */
    private static getMapSchulformenByNummer;
    /**
     * Gibt die Schulform für das angegebene Kürzel zurück.
     *
     * @param kuerzel   das Kürzel der Schulform
     *
     * @return die Schulform oder null, falls das Kürzel ungültig ist
     */
    static getByKuerzel(kuerzel: String | null): Schulform | null;
    /**
     * Gibt die Schulform für die angegebene Nummer zurück.
     *
     * @param nummer   die Nummer der Schulform
     *
     * @return die Schulform oder null, falls keine Schulform mit dieser Nummer vorhanden ist
     */
    static getByNummer(nummer: String | null): Schulform | null;
    /**
     * Gibt alle "echten" Schulformen dieser Aufzählung zurück.
     * Das bedeutet, dass Pseudoschulformen, die in NRW nicht
     * existieren, nicht zurückgegeben werden.
     *
     * @return eine {@link List} mit alle "echten" Schulformen
     */
    static get(): List<Schulform>;
    /**
     * Bestimmt für diese Schulform, die übergebene Schulgliederung (auch beim Schüler eingetragenen Schulgliederung)
     * und den angegebenen Jahrgang die restlichen Jahre an der Schule.
     * Ist keine Berechnung für diese Kombination implementiert,
     * so wird null zurückgegeben.
     *
     * @param gliederung   die Schulgliederung
     * @param jahrgang     der Jahrgang, für den die restlichen Jahre bestimmt werden sollen
     *
     * @return die restlichen Jahre oder null
     */
    getRestlicheJahre(gliederung: Schulgliederung, jahrgang: String): Number | null;
    /**
     * Bestimmt für das übergegebene Schuljahr eines Schülers das Kalenderjahr, in welchem ein Schüler
     * der gymnasialen Oberstufe Abitur gemacht hat, macht oder machen wird. Hierbei wird für die
     * Bestimmung die Schulgliederung bei dem Schüler sowie das aktuelle Schuljahr und der
     * Statistik-Jahrgang, in welchem sich der Schüler befindet, benötigt.
     *
     * @param gliederung           die Schul-Gliederung des Schülers
     * @param aktuellesSchuljahr   das aktuelle Schuljahr, in welchem sich der Schüler befindet
     * @param jahrgang             der Statistik-Jahrgang des Schülers
     *
     * @return das Kalenderjahr des Abiturs oder null, falls das Jahr des Abiturs nicht bestimmt werden kann.
     */
    getGostAbiturjahr(gliederung: Schulgliederung, aktuellesSchuljahr: number, jahrgang: String): Number | null;
    /**
     * Bestimmt für das angegebene Abiturjahr, das angegebene aktuelles Schuljahr, in dem sich die
     * Schule befindet, und der angegebenen Schulgliederung den zugrhörigen Statistik-Jahrgang
     * einer Schule mit gymnasialer Oberstufe.
     *
     * @param gliederung    die Schulgliederung
     * @param schuljahr     das Schuljahr, in dem sich die Schule befindet
     * @param abiturjahr    das Abiturjahr, für welches der Statistik-Jahrgang ermittelt werden soll.
     *
     * @return der Statistik-Jahrgang zu dem angegeben Abiturjahrgang
     */
    getGostAbiturjahrJahrgang(gliederung: Schulgliederung, schuljahr: number, abiturjahr: number): String | null;
    /**
     * Returns the name of this enumeration value.
     *
     * @returns the name
     */
    private name;
    /**
     * Returns the ordinal value of this enumeration value.
     *
     * @returns the ordinal value
     */
    private ordinal;
    /**
     * Returns the name of this enumeration value.
     *
     * @returns the name
     */
    toString(): String;
    /**
     * Returns true if this and the other enumeration values are equal.
     *
     * @param other   the other enumeration value
     *
     * @returns true if they are equal and false otherwise
     */
    equals(other: JavaObject): boolean;
    /**
     * Returns the ordinal value as hashcode, since the ordinal value is unique.
     *
     * @returns the ordinal value as hashcode
     */
    hashCode(): number;
    /**
     * Compares this enumeration value with the other enumeration value by their ordinal value.
     *
     * @param other   the other enumeration value
     *
     * @returns a negative, zero or postive value as this enumeration value is less than, equal to
     *          or greater than the other enumeration value
     */
    compareTo(other: Schulform): number;
    /**
     * Returns an array with enumeration values.
     *
     * @returns the array with enumeration values
     */
    static values(): Array<Schulform>;
    /**
     * Returns the enumeration value with the specified name.
     *
     * @param name   the name of the enumeration value
     *
     * @returns the enumeration values or null
     */
    static valueOf(name: String): Schulform | null;
    isTranspiledInstanceOf(name: string): boolean;
}
export declare function cast_de_nrw_schule_svws_core_types_statkue_Schulform(obj: unknown): Schulform;
