import { JavaObject } from '../../../java/lang/JavaObject';
import { GEAbschlussFach } from '../../../core/data/abschluss/GEAbschlussFach';
import { List } from '../../../java/util/List';
import { Predicate } from '../../../java/util/function/Predicate';
export declare class AbschlussFaecherGruppe extends JavaObject {
    private readonly faecher;
    /**
     * Erzeugt eine Fächergruppe aus den angegebenen Fächern und den vorgegebenen Kriterien.
     *
     * @param faecherAlle       eine Liste aller vorhandenen Leistungen
     * @param faecherNutzen     nur die gelisteten Fächer nutzen, null bedeutet grundsätzlich alle benoteten Fächer nutzen (außer den gefilterten)
     * @param faecherFiltern    null bedeutet keinen Filter verwenden, ansonsten werden die gelisteten Fächer gefiltert
     */
    constructor(faecherAlle: List<GEAbschlussFach>, faecherNutzen: List<String> | null, faecherFiltern: List<String> | null);
    /**
     * Prüft, ob die gelisteten Fächer in der Fächergruppe sind und nur diese.
     *
     * @param faecherAbgleich   die Fächer, welche in der Fächergruppe sein sollen.
     *
     * @return true, falls die angegebenen Fächer und nur diese in der Fächergruppe sind, ansonsten false.
     */
    istVollstaendig(faecherAbgleich: List<String> | null): boolean;
    /**
     * Gibt zurück, ob die Fächergruppe leer ist oder mindestens ein Fach beinhaltet.
     *
     * @return true, falls die Fächergruppe leer ist, ansonsten false
     */
    isEmpty(): boolean;
    /**
     * Prüft, ob das Fach mit dem angegebenen Fachkürzel in der Fächergruppe enthalten ist
     * oder nicht.
     *
     * @param kuerzel   das Kürzel des Faches, welches geprüft werden soll.
     *
     * @return true, falls das Fach vorhanden ist, und ansonsten false
     */
    contains(kuerzel: String | null): boolean;
    /**
     * Entfernt alle Fächer aus der Fächergruppe, die dem übergebenen Filter entsprechen.
     *
     * @param filter   die Funktion, um die zu entfernenden Fächer zu bestimmen
     *
     * @return die Liste der tatsächlich entfernten Fächer
     */
    entferneFaecher(filter: Predicate<GEAbschlussFach>): List<GEAbschlussFach>;
    /**
     * Bestimmt das Fach, welches dem übergebenen Filter entspricht. Entsprechen
     * mehrere Fächer dem Filterkriterium, so wird nur das erste Fach
     * der internen Liste zurückgegeben.
     *
     * @param filter   die Funktion, die das Kriterium für das gesuchte Fach angibt.
     *
     * @return das Fach, sofern eines gefunden wurde, ansonsten false
     */
    getFach(filter: Predicate<GEAbschlussFach>): GEAbschlussFach | null;
    /**
     * Bestimmt alle Fächer, welche dem übergebenen Filterkriterium entsprechen.
     *
     * @param filter   die Funktion, die das Kriterium für die gesuchten Fächer angibt.
     *
     * @return eine Liste der Fächer, die dem Filterkriterium entsprechen
     */
    getFaecher(filter: Predicate<GEAbschlussFach>): List<GEAbschlussFach>;
    /**
     * Gibt die Anzahl der Fächer zurück, welche dem übergebenen Filterkriterium entsprechen.
     *
     * @param filter   die Funktion, die das Kriterium für die gesuchten Fächer angibt.
     *
     * @return die Anzahl der Fächer
     */
    getFaecherAnzahl(filter: Predicate<GEAbschlussFach>): number;
    /**
     * Bestimmt die Kürzel aller Fächer, welche dem übergebenen Filterkriterium entsprechen.
     *
     * @param filter   die Funktion, die das Kriterium für die gesuchten Fächer angibt.
     *
     * @return eine Liste der Kürzel der Fächer, die dem Filterkriterium entsprechen
     */
    getKuerzel(filter: Predicate<GEAbschlussFach>): List<String>;
    /**
     * Erstellt eine Zeichenkette mit einer Komma-separierten Liste der Kürzel aller Fächer,
     * welche dem übergebenen Filterkriterium entsprechen.
     *
     * @param filter   die Funktion, die das Kriterium für die gesuchten Fächer angibt.
     *
     * @return die Zeichenkette mit einer Komma-separierten Liste der Fächerkürzel
     */
    getKuerzelListe(filter: Predicate<GEAbschlussFach>): String;
    /**
     * Gibt eine Komma-separierte Liste, der Abschlussfächer aus. Dabei wird
     * die toString Methode der Klasse AbschlussFach verwendet.
     */
    toString(): String;
    isTranspiledInstanceOf(name: string): boolean;
}
export declare function cast_de_nrw_schule_svws_core_abschluss_ge_AbschlussFaecherGruppe(obj: unknown): AbschlussFaecherGruppe;
