import { TrainingStressScoreMethod } from '../../../data/data.training-stress-score-method';
export interface TssSample {
    duration: number;
    power?: number | null;
    speed?: number | null;
    verticalSpeed?: number | null;
    grade?: number | null;
    hr?: number | null;
}
export interface TssInput {
    totalDurationWithoutPauses: number;
    functionalThresholdPower?: number;
    normalizedPower?: number;
    functionalThresholdPace?: number;
    lactateThresholdHR?: number;
    maxHeartRate?: number;
    restingHeartRate?: number;
    swimSpeed?: number;
    thresholdSwimSpeed?: number;
    metScore?: number;
    thresholdMet?: number;
    gender?: string;
    samples: TssSample[];
}
export interface TssCalculationResult {
    calculationMethod: typeof TrainingStressScoreMethod.POWER | typeof TrainingStressScoreMethod.HR | typeof TrainingStressScoreMethod.PACE | typeof TrainingStressScoreMethod.SWIM_PACE | typeof TrainingStressScoreMethod.MET;
    trainingStressScore: number;
    intensityFactor?: number;
    normalizedPower?: number;
    averageGradeAdjustedPace?: number;
}
export declare class TssCalculator {
    private static readonly TSS_MIN;
    private static readonly TSS_MAX;
    static estimateMetScore(energyConsumption: number, userWeight: number, totalDurationWithoutPauses: number): number;
    static calculatePowerTss(input: TssInput): TssCalculationResult | null;
    static calculatePaceTss(input: TssInput): TssCalculationResult | null;
    static calculateHrTss(input: TssInput): TssCalculationResult | null;
    static calculateSwimTss(input: TssInput): TssCalculationResult | null;
    static calculateMetTss(input: TssInput): TssCalculationResult | null;
    private static calculateBanisterHrTss;
    private static calculateEdwardsHrTss;
    private static accumulateSampleLoad;
    private static resolveBanisterThresholdDhr;
    private static resolveEdwardsThresholdRatio;
    private static edwardsZoneWeight;
    private static resolveSampleGrade;
    private static runningCostMinetti;
    private static isFemale;
    private static applyRangeCheck;
    private static average;
    private static positive;
    private static clamp;
}
