import { GEAbschlussFach } from '../../../core/data/abschluss/GEAbschlussFach';
import { Service } from '../../../core/Service';
import { GEAbschlussFaecher } from '../../../core/data/abschluss/GEAbschlussFaecher';
import { AbschlussErgebnis } from '../../../core/data/abschluss/AbschlussErgebnis';
import { List } from '../../../java/util/List';
import { AbschlussFaecherGruppen } from '../../../core/abschluss/ge/AbschlussFaecherGruppen';
export declare class ServiceAbschlussMSA extends Service<GEAbschlussFaecher, AbschlussErgebnis> {
    private filterDefizite;
    private filterDefizite1NS;
    private filterDefizite2NS;
    private filterDefiziteMehrAls1NS;
    private filterDefiziteMehrAls2NS;
    private filterDefiziteMitNPOption;
    private filterDefizitWP;
    private filterDefizitNichtWP;
    private filterBenoetigte3er;
    private filterDefiziteBenoetigte3erMitNPOption;
    private filterAusgleiche;
    private filterAusgleiche3er;
    private filterEKurse;
    constructor();
    /**
     * Bestimmt anhand der übergebenen Fächer die Zuordnung zu den beiden Fäächergruppen.
     *
     * @param input   die Abschlussfächer
     *
     * @return die Zuordnung der Abschlussfächer zu beiden Fachgruppen 1 und 2
     */
    static getFaechergruppen(input: List<GEAbschlussFach>): AbschlussFaecherGruppen;
    /**
     * Führt die Abschlussberechnung anhand der übergebenen Abschlussfächer durch
     * und gibt das Berechnungsergebnis zurück.
     *
     * @param input    die Abschlussfächer
     *
     * @return das Ergebnis der Abschlussberechnung
     */
    handle(input: GEAbschlussFaecher): AbschlussErgebnis;
    /**
     * Prüft in Bezug auf Defizite, ob der Abschluss erworben wurde.
     *
     * @param faecher      die Asbchlussfächer nach Fächergruppen sortiert
     * @param log_indent   die Einrückung für das Logging
     *
     * @return das Ergebnis der Abschlussberechnung in Bezug die Defizitberechnung
     */
    private pruefeDefizite;
    /**
     * Führt eine Detailprüfung in der Fächergruppe 2 durch. Diese Methode wird ggf. mehrfach - auch rekursiv - aufgerufen.
     *
     * @param faecher                die Abschlussfächer nach Fächergruppen sortiert
     * @param log_indent             die Einrückung für das Logging
     * @param npFaecher              die Liste der Nachprüfungsfächer, die bisher schon feststehen
     * @param benoetige3er           die Anzahl der 3er, die noch in FG2 benötigt werden
     * @param ignorieren_genutzt     gibt an, ob die Möglichkeit eine defizitäre Leistung in FG2 zu ignorieren schon genutzt wurde
     * @param ausgleich_genutzt      gibt an, ob die Möglichkeit des Ausgleichs über ein anderes Fach schon genutzt wurde
     * @param nachpruefung_genutzt   gibt an, ob die Nachprüfungsmöglichkeit bereits eingesetzt werden musste
     *
     * @return das Ergebnis der Abschlussberechnung in Bezug auf den Stand dieser Detailprüfung
     */
    private pruefeFG2;
    isTranspiledInstanceOf(name: string): boolean;
}
export declare function cast_de_nrw_schule_svws_core_abschluss_ge_ServiceAbschlussMSA(obj: unknown): ServiceAbschlussMSA;
