import { AbiturFachbelegung } from '../../../../core/data/gost/AbiturFachbelegung';
import { GostBelegpruefungsArt } from '../../../../core/abschluss/gost/GostBelegpruefungsArt';
import { AbiturFachbelegungHalbjahr } from '../../../../core/data/gost/AbiturFachbelegungHalbjahr';
import { GostBelegpruefung } from '../../../../core/abschluss/gost/GostBelegpruefung';
import { AbiturdatenManager } from '../../../../core/abschluss/gost/AbiturdatenManager';
export declare class Projektkurse extends GostBelegpruefung {
    private projektkursBelegung;
    private projektkurs;
    private projektkursHalbjahre;
    /**
     * Erstellt eine neue Belegprüfung für die Projektkurse.
     *
     * @param manager         der Daten-Manager für die Abiturdaten
     * @param pruefungs_art   die Art der durchzuführenden Prüfung (z.B. EF.1 oder GESAMT)
     */
    constructor(manager: AbiturdatenManager, pruefungs_art: GostBelegpruefungsArt);
    protected init(): void;
    protected pruefeEF1(): void;
    protected pruefeGesamt(): void;
    /**
     * Prüft, ob ein Projektfach in der EF belegt wurde. Eine solche Belegung ist nicht zulässig.
     */
    private pruefeBelegungEF;
    /**
     * Prüft, ob ein anrechenbarer Projektkurs unter den belegten Projektfächern existiert. Es darf aber
     * auch nur genau ein anrechenbarer Projektkurs existieren!
     */
    private pruefeAufAnrechenbarenProjektkurs;
    /**
     * Prüfe die Halbjahresbelegungen der belegten Projektfächer. Hierbei Darf
     * es zu Einzelbelegungen neben dem anrechenbaren Projektkurs kommen. Diese dürfen
     * aber nur vor der Belegung des anrechenbaren Kurses liegen. Außerdem dürfen in
     * einem Halbjahr nicht mehrere Projekfächer belegt sein.
     */
    private pruefeBelegungHalbjahre;
    /**
     * Prüft die Belegung der Leitfächer
     */
    private pruefeBelegungLeitfaecher;
    /**
     * Prüft, ob das Leitfach in Bezug auf die Belegung des Projektfaches die korrekten Halbjahresbelegungen hat.
     *
     * @param projektkurs   die Fachbelegungen des Projektfaches
     * @param leitfach      die Fachbelegungen des Leitfaches
     *
     * @return true, falls das Leitfach eine geeigneten Belegung aufweist, sonst false
     */
    private pruefeBelegungLeitfachbelegung;
    /**
     * Gibt den belegten Projektkurs zurück, fall ein Kurs gültig belegt wurde.
     *
     * @return die Fachbelegung des Projektkurses oder null
     */
    getProjektkurs(): AbiturFachbelegung | null;
    /**
     * Gibt zurück, ob die angegebene Fachbelegung des Halbjahres eine Fachbelegung des
     * angewählten Projektkurses ist und anrechenbar ist. Sollte sie Teil des Projektkurses
     * sein, aber auch zu einer besonderen Lernleistung gehören, so ist sie nicht anrechenbar.
     *
     * @param fachbelegungHalbjahr   die Fachbelegung des Halbjahres
     *
     * @return true, wenn die Fachbelegung anrechenbar ist.
     */
    istAnrechenbar(fachbelegungHalbjahr: AbiturFachbelegungHalbjahr | null): boolean;
    /**
     * Gibt die Anzahl der anrechenbaren Kurse für Block I des Abiturs zurück
     *
     * @return die Anzahl der anrechenbaren Kurse
     */
    getAnrechenbareKurse(): number;
    isTranspiledInstanceOf(name: string): boolean;
}
export declare function cast_de_nrw_schule_svws_core_abschluss_gost_belegpruefung_Projektkurse(obj: unknown): Projektkurse;
