import { Logger } from '../../logger/Logger';
import { KursblockungDynDaten } from '../../core/kursblockung/KursblockungDynDaten';
import { KursblockungAlgorithmusK } from '../../core/kursblockung/KursblockungAlgorithmusK';
export declare class KursblockungAlgorithmusKSatSolver extends KursblockungAlgorithmusK {
    private readonly kurseAlle;
    private readonly schuelerAlle;
    private maxNichtWaehler;
    /**
     * Im Konstruktor kann die Klasse die jeweiligen Datenstrukturen aufbauen. Kurse
     * dürfen in diese Methode noch nicht auf Schienen verteilt werden.
     *
     * @param logger Logger für Benutzerhinweise, Warnungen und Fehler.
     * @param dynDat Die dynamischen Blockungsdaten.
     */
    constructor(logger: Logger, dynDat: KursblockungDynDaten);
    berechne(pMaxTimeMillis: number): void;
    /**
     * Erzeugt eine Formel in konjuntiver Normalform (CNF) und übergibt sie dem
     * SAT-Solver. Der Solver versucht die Formel innerhalb des Zeitlimits zu lösen.
     * Falls er es nicht schafft, dann wurde zuvor eine zufällige Kursverteilung
     * definiert. #
     *
     * @param pMaxTimeMillis Die maximale Blockungszeit in Millisekunde.
     *
     * @return Liefert eines der drei möglichen Ergebnisse
     *         {@link SatSolverA#RESULT_SATISFIABLE oder SatSolverI#RESULT_UNKNOWN
     *         oder SatSolverI#RESULT_UNSATISFIABLE. }
     */
    berechneSchritt(pMaxTimeMillis: number): number;
    isTranspiledInstanceOf(name: string): boolean;
}
export declare function cast_de_nrw_schule_svws_core_kursblockung_KursblockungAlgorithmusKSatSolver(obj: unknown): KursblockungAlgorithmusKSatSolver;
