import { JavaObject } from '../../java/lang/JavaObject';
import { KursblockungInputKurs } from '../../core/data/kursblockung/KursblockungInputKurs';
import { KursblockungDynFachart } from '../../core/kursblockung/KursblockungDynFachart';
import { KursblockungOutputKursZuSchiene } from '../../core/data/kursblockung/KursblockungOutputKursZuSchiene';
import { LinkedCollection } from '../../core/adt/collection/LinkedCollection';
import { KursblockungDynSchiene } from '../../core/kursblockung/KursblockungDynSchiene';
import { Logger } from '../../logger/Logger';
import { Vector } from '../../java/util/Vector';
export declare class KursblockungDynKurs extends JavaObject {
    private readonly guiID;
    private readonly representation;
    private readonly fachart;
    private readonly schienenLage;
    private readonly schienenLageSaveS;
    private readonly schienenLageSaveK;
    private readonly schienenLageFixiert;
    private readonly schienenFrei;
    private readonly schienenFreiSaveS;
    private readonly schienenFreiSaveK;
    private schuelerAnz;
    private readonly logger;
    /**
     * Der Kurs wählt eine zufällige Schienenlage und fügt sich selbst den
     * entsprechenden Schienen hinzu.
     *
     * @param pSchienenLage        Ein Array aller Schienen, in denen der Kurs
     *                             gerade liegt.
     * @param pSchienenLageFixiert Anzahl an Schienen in {@code pSchienenLage}, die
     *                             fixiert ist.
     * @param pSchienenFrei        Ein Array aller Schienen, in die der Kurs
     *                             wechseln könnte.
     * @param iKurs                Alle Informationen zu diesem Kurs. Das Objekt
     *                             stammt von der GUI.
     * @param pFachart             Die zu diesem Kurs zugehörige Fachart.
     * @param pLogger              Logger für Benutzerhinweise, Warnungen und
     *                             Fehler.
     */
    constructor(pSchienenLage: Array<KursblockungDynSchiene>, pSchienenLageFixiert: number, pSchienenFrei: Array<KursblockungDynSchiene>, iKurs: KursblockungInputKurs, pFachart: KursblockungDynFachart, pLogger: Logger);
    toString(): String;
    /**
     * Die Kurs-ID der GUI.
     *
     * @return Die Kurs-ID der GUI.
     */
    gibID(): number;
    /**
     * Eine String-Darstellung des Kurses, z.B. 'D;GK1'.
     *
     * @return Eine String-Darstellung des Kurses, z.B. 'D;GK1'.
     */
    gibRepresentation(): String;
    /**
     * Liefert die zum Kurs zugehörige Fachart.
     *
     * @return Die zum Kurs zugehörige Fachart.
     */
    gibFachart(): KursblockungDynFachart;
    /**
     * Liefert die aktuelle Anzahl an Schülern in diesem Kurs.
     *
     * @return Die aktuelle Anzahl an Schülern in diesem Kurs.
     */
    gibSchuelerAnzahl(): number;
    /**
     * Liefert {@code true} falls die Schienenlage des Kurses noch veränderbar ist.
     * Wenn der Kurs komplett fixiert ist, oder so viele Schienen gesperrt sind,
     * dass der Kurs keine Wahlmöglichkeit bezüglich seiner Schienen hat, dann ist
     * das Resultat {@code false}
     *
     * @return Liefert {@code true}, falls die Schienenlage des Kurses noch
     *         veränderbar ist.
     */
    gibHatFreiheitsgrade(): boolean;
    /**
     * Liefert die aktuelle Schienenlage dieses Kurses.
     *
     * @return Ein Array, das angibt, in welchen Schienen der Kurs ist. Die Werte
     *         sind 0-indiziert.
     */
    gibSchienenLage(): Array<number>;
    /**
     * Liefert die Anzahl an Schienen, die dieser Kurs belegt.
     *
     * @return Die Anzahl an Schienen, die dieser Kurs belegt.
     */
    gibSchienenAnzahl(): number;
    /**
     * Speichert die aktuelle Lage der Schienen im Zustand S, um diese bei Bedarf
     * mit der Methode {@link #aktionZustandLadenS} zu laden.
     */
    aktionZustandSpeichernS(): void;
    /**
     * Speichert die aktuelle Lage der Schienen im Zustand K, um diese bei Bedarf
     * mit der Methode {@link #aktionZustandLadenK} zu laden.
     */
    aktionZustandSpeichernK(): void;
    /**
     * Lädt die zuvor mit der Methode {@link #aktionZustandSpeichernS} gespeicherte
     * Lage der Schienen.
     */
    aktionZustandLadenS(): void;
    /**
     * Lädt die zuvor mit der Methode {@link #aktionZustandSpeichernK} gespeicherte
     * Lage der Schienen.
     */
    aktionZustandLadenK(): void;
    /**
     * Verteilt den Kurs auf die Schienen zufällig.
     */
    aktionZufaelligVerteilen(): void;
    /**
     * Setzt die Lage des Kurses auf die in der Liste übergebenen Schienen.
     *
     * @param pSchienenWahl Die Schienen (0-indiziert), in denen der Kurs liegen
     *                      soll.
     */
    aktionVerteileAufSchienen(pSchienenWahl: LinkedCollection<Number>): void;
    /**
     * Speichert die aktuelle Kurs-Schiene-Zuordnung im Vector
     * {@code vKursZuSchiene}.
     *
     * @param vKursZuSchiene Diesem Vektor wird die aktuelle Kurszuordnung
     *                       hinzugefügt.
     */
    aktionOutputErzeugen(vKursZuSchiene: Vector<KursblockungOutputKursZuSchiene>): void;
    /**
     * Entfernt einen Schüler aus diesem Kurs.
     */
    aktionSchuelerEntfernen(): void;
    /**
     * Fügt einen Schüler diesem Kurs hinzu.
     */
    aktionSchuelerHinzufügen(): void;
    /**
     * Liefert TRUE, wenn die Schiene für den Kurs gesperrt wurde.
     *
     * @param pSchiene Die Schiene nach der gefragt wurde.
     *
     * @return TRUE, wenn die Schiene für den Kurs gesperrt wurde.
     */
    gibIstSchieneGesperrt(pSchiene: number): boolean;
    /**
     * Liefert TRUE, wenn die Schiene für den Kurs fixiert wurde.
     *
     * @param pSchiene Die Schiene nach der gefragt wurde.
     *
     * @return TRUE, wenn die Schiene für den Kurs fixiert wurde.
     */
    gibIstSchieneFixiert(pSchiene: number): boolean;
    private aktionSchienenLageHinzufuegen;
    private aktionSchienenLageEntfernen;
    isTranspiledInstanceOf(name: string): boolean;
}
export declare function cast_de_nrw_schule_svws_core_kursblockung_KursblockungDynKurs(obj: unknown): KursblockungDynKurs;
