import { KursblockungAlgorithmusS } from '../../core/kursblockung/KursblockungAlgorithmusS';
import { KursblockungDynDaten } from '../../core/kursblockung/KursblockungDynDaten';
import { Logger } from '../../logger/Logger';
export declare class KursblockungAlgorithmusSZufaellig extends KursblockungAlgorithmusS {
    private static readonly MAX_RUNDEN_IN_FOLGE_OHNE_VERBESSERUNG;
    private readonly schuelerArr;
    private readonly perm;
    private readonly nurMultikurse;
    /**
     * Im Konstruktor kann die Klasse die jeweiligen Datenstrukturen aufbauen. Kurse
     * dürfen in diese Methode noch nicht auf Schienen verteilt werden.
     *
     * @param pLogger        Logger zum Protokollieren von Warnungen und Fehlern.
     * @param pDynDat        Die dynamischen Blockungsdaten.
     * @param pNurMultikurse Falls TRUE, dann werden nur die Multikurse der SuS
     *                       verteilt.
     */
    constructor(pLogger: Logger, pDynDat: KursblockungDynDaten, pNurMultikurse: boolean);
    /**
     * Der Algorithmus verteilt die SuS auf ihre Kurse zufällig. Kommt es während
     * des Verteilens zur Kollision, so wird der Kurs nicht gewählt.
     */
    berechne(pMaxTimeMillis: number): void;
    /**
     * Der Algorithmus verteilt die SuS ein weiteres Mal zufällig. Falls die
     * Verteilung schlechter ist, wird der vorherige Zustand wiederhergestellt.
     *
     * @return TRUE, falls der Zustand sich verbessert hat.
     */
    private berechneSchritt;
    isTranspiledInstanceOf(name: string): boolean;
}
export declare function cast_de_nrw_schule_svws_core_kursblockung_KursblockungAlgorithmusSZufaellig(obj: unknown): KursblockungAlgorithmusSZufaellig;
