import { SectionType } from "../../internal_modules";
import { Nub } from "../../internal_modules";
import { ParamDefinition } from "../../internal_modules";
import { Result } from "../../internal_modules";
import { ParamsSection } from "../../internal_modules";
/**
 * Gestion commune pour les différents types de section.
 * Comprend les formules pour la section rectangulaire pour gérer les débordements
 */
export declare abstract class acSection extends Nub {
    [key: string]: any;
    private static _availableSectionTypes;
    get prms(): ParamsSection;
    get HautCritique(): Result;
    /**
     * true si la section est fermée (on considère alors qu'il existe une fente de Preissmann)
     */
    protected bSnFermee: boolean;
    protected arCalcGeo: {
        [key: string]: number;
    };
    private _hautCritique;
    /**
     * Tableau contenant les données dépendantes du tirant d'eau this->rY.
     *
     * Les clés du tableau peuvent être :
     * - S : la surface hydraulique
     * - P : le périmètre hydraulique
     * - R : le rayon hydraulique
     * - B : la largeur au miroir
     * - J : la perte de charge
     * - Fr : le nombre de Froude
     * - dP : la dérivée de P par rapport Y
     * - dR : la dérivée de R par rapport Y
     * - dB : la dérivée de B par rapport Y
     */
    private arCalc;
    private Y_old;
    private Calc_old;
    /**
     * flag de débuggage pour Newton
     */
    private _newtonDbg;
    private _indentCalc;
    /**
     * Construction de la classe.
     * Calcul des hauteurs normale et critique
     */
    constructor(prms: ParamsSection, dbg?: boolean);
    static get availableSectionTypes(): {
        id: string;
        value: SectionType;
    }[];
    get nodeType(): SectionType;
    protected set nodeType(nt: SectionType);
    /**
     * Forwards to parent, that has vsibility over
     * all the parameters, including the Section ones
     */
    get calculatedParam(): ParamDefinition;
    /**
     * Forwards to parent, that has vsibility over
     * all the parameters, including the Section ones
     */
    set calculatedParam(p: ParamDefinition);
    clone(): acSection;
    /**
     * Efface toutes les données calculées pour forcer le recalcul
     * @param bGeo Réinitialise les données de géométrie aussi
     */
    Reset(bGeo?: boolean): void;
    debug(m: string): void;
    /**
     * The parent is the Nub that holds the parameter to calculate;
     * ask it to perform calculation and copy its result to local
     * result, to facilitate values reading by targetting modules
     * (used by triggerChainCalculation)
     */
    CalcSerie(rInit?: number): Result;
    /**
     * Calcul des données à la section
     * effectue un reset du cache des résultats
     * @param sDonnee Clé de la donnée à calculer (voir this->arCalc)
     * @param rY valeur de Y à utiliser
     * @return la donnée calculée
     */
    CalcSection(sDonnee: string, rY?: number): Result;
    /**
     * Proxy to parent SectionNub, to compute non-hydraulic variables
     * @param sVarCalc
     * @param rInit
     */
    Calc(sVarCalc?: string, rInit?: number): Result;
    Equation(sVarCalc: string): Result;
    protected setParametersCalculability(): void;
    /**
     * calcul des données à la section dépendant de Y
     */
    protected calcFromY(sDonnee: string, rY?: number): Result;
    /**
     * Calcul des données uniquement dépendantes de la géométrie de la section
     * @param sDonnee Clé de la donnée à calculer (voir this->arCalcGeo)
     * @return la donnée calculée
     */
    protected CalcGeo(sDonnee: string): Result;
    /**
     * Calcul de la surface hydraulique.
     * @return La surface hydraulique
     */
    protected abstract Calc_S(): Result;
    protected Calc_dS(): Result;
    /**
     * Calcul de la surface hydraulique en cas de débordement
     * @param Y hauteur d'eau au delà de la berge
     */
    protected Calc_S_Debordement(Y: number): Result;
    /**
     * Calcul du périmètre hydraulique.
     * @return Le périmètre hydraulique
     */
    protected abstract Calc_P(): Result;
    /**
     * Calcul du périmètre hydraulique en cas de débordement
     * @param Y hauteur d'eau au dela de la berge
     */
    protected Calc_P_Debordement(Y: number): Result;
    /**
     * Calcul de dérivée du périmètre hydraulique par rapport au tirant d'eau.
     * @return dP
     */
    protected abstract Calc_dP(): Result;
    /**
     * Calcul de dérivée du périmètre hydraulique par rapport au tirant d'eau en cas de débordement
     * @return la dérivée du périmètre hydraulique par rapport au tirant d'eau en cas de débordement
     */
    protected Calc_dP_Debordement(): Result;
    /**
     * Calcul de la largeur au miroir.
     * @return La largeur au miroir
     */
    protected abstract Calc_B(): Result;
    /**
     * Calcul de la largeur au miroir en cas de débordement
     * @return La largeur au miroir en cas de débordement
     */
    protected Calc_B_Debordement(): Result;
    /**
     * Calcul de dérivée de la largeur au miroir par rapport au tirant d'eau.
     * @return dB
     */
    protected abstract Calc_dB(): Result;
    /**
     * Calcul de dérivée de la largeur au miroir par rapport au tirant d'eau en cas de débordement
     * @return la dérivée de la largeur au miroir par rapport au tirant d'eau en cas de débordement
     */
    protected Calc_dB_Debordement(): Result;
    /**
     * Calcul de la distance du centre de gravité de la section à la surface libre
     * multiplié par la surface hydraulique
     * @return S x Yg
     */
    protected Calc_SYg(): Result;
    /**
     * Calcul de la dérivée distance du centre de gravité de la section à la surface libre
     * multiplié par la surface hydraulique
     * @return S x Yg
     */
    protected Calc_dSYg(): Result;
    /**
     * Calcul de l'angle Alpha entre la surface libre et le fond pour les sections circulaires.
     * @return Angle Alpha pour une section circulaire, 0 sinon.
     */
    protected Calc_Alpha(): Result;
    /**
     * Calcul de la dérivée de l'angle Alpha entre la surface libre et le fond pour les sections circulaires.
     * @return Dérivée de l'angle Alpha pour une section circulaire, 0 sinon.
     */
    protected Calc_dAlpha(): Result;
    /**
     * Mémorise les données hydrauliques en cours ou les restitue
     * @param bMem true pour mémorisation, false pour restitution
     */
    private Swap;
    private calcIndent;
    /**
     * Calcul de la dérivée surface hydraulique en cas de débordement
     * @return La dérivée de la surface hydraulique en cas de débordement
     */
    private Calc_dS_Debordement;
    /**
     * Calcul du rayon hydraulique.
     * @return Le rayon hydraulique
     */
    private Calc_R;
    /**
     * Calcul de dérivée du rayon hydraulique par rapport au tirant d'eau.
     * @return dR
     */
    private Calc_dR;
    /**
     * Calcul de la perte de charge par la formule de Manning-Strickler.
     * @return La perte de charge
     */
    private Calc_J;
    /**
     * Calcul du nombre de Froude.
     * @return Le nombre de Froude
     */
    private Calc_Fr;
    /**
     * Calcul de dy/dx
     */
    private Calc_dYdX;
    /**
     * Calcul de la vitesse moyenne.
     * @return Vitesse moyenne
     */
    private Calc_V;
    /**
     * Calcul de la charge spécifique.
     * @return Charge spécifique
     */
    private Calc_Hs;
    /**
     * Calcul de la charge spécifique critique.
     * @return Charge spécifique critique
     */
    private Calc_Hsc;
    /**
     * Calcul du tirant d'eau critique.
     * @return tirant d'eau critique
     */
    protected Calc_Yc(init?: number): Result;
    /**
     * Calcul du tirant d'eau normal.
     * @return tirant d'eau normal
     */
    private Calc_Yn;
    /**
     * Calcul du tirant d'eau correspondant.
     * @return tirant d'eau correpondant
     */
    private Calc_Ycor;
    /**
     * Calcul du tirant d'eau conjugué.
     * @return tirant d'eau conjugué
     */
    private Calc_Ycon;
    /**
     * Calcul de la contrainte de cisaillement.
     * @return contrainte de cisaillement
     */
    private Calc_Tau0;
    /**
     * Calcul de l'impulsion hydraulique.
     * @return Impulsion hydraulique
     */
    private Calc_Imp;
    hasProperty(key: string): boolean;
}
//# sourceMappingURL=section_type.d.ts.map