export interface PowerCurveSampleLike {
    duration: unknown;
    power: unknown;
    wattsPerKg?: unknown;
}
export interface SamplePowerCurveOptions {
    key?: 'power' | 'wattsPerKg';
    maximumBracketDurationRatio?: number;
}
export interface PowerCurveWindowComparison {
    durationSeconds: number;
    recentValue: number | null;
    referenceValue: number | null;
    retentionPercent: number | null;
    deltaPercent: number | null;
}
export declare const DEFAULT_POWER_CURVE_MAXIMUM_BRACKET_DURATION_RATIO = 1.25;
export declare const MAXIMUM_ALLOWED_POWER_CURVE_BRACKET_DURATION_RATIO = 2;
/**
 * Samples a mean-max curve in reciprocal-duration (1/t) space.
 *
 * Exact durations win, duplicate durations retain their strongest positive value, and interpolation
 * requires two neighboring points whose duration ratio is at most 1.25 by default (2 is the hard max).
 * Durations outside the curve are never extrapolated.
 */
export declare function samplePowerCurveAtDuration(points: readonly PowerCurveSampleLike[], durationSeconds: number, options?: SamplePowerCurveOptions): number | null;
/**
 * Compares aligned curve samples. Retention is recent/reference × 100; delta is retention minus 100.
 * Each source curve is normalized and sorted once for the complete duration set.
 */
export declare function comparePowerCurveWindows(recentPoints: readonly PowerCurveSampleLike[], referencePoints: readonly PowerCurveSampleLike[], durationSeconds: readonly number[], options?: SamplePowerCurveOptions): PowerCurveWindowComparison[];
