import { UniFunction } from "./Utils.js";
import { InterpolationMethod } from "./Index.js";
export interface SmoothDiagInfo {
    robustnessIters: number;
    secondLastMedianResidual?: number;
    lastMedianResidual?: number;
    robustnessWeights?: Float64Array;
}
export interface LoessInterpolatorDiagInfo extends SmoothDiagInfo {
    fitYVals: Float64Array;
    knotFilter: boolean[];
    knotXVals: Float64Array;
    knotYVals: Float64Array;
}
export interface SmoothParms {
    xVals: ArrayLike<number>;
    yVals: ArrayLike<number>;
    weights?: ArrayLike<number>;
    bandwidthFraction?: number;
    robustnessIters?: number;
    accuracy?: number;
    outlierDistanceFactor?: number;
    diagInfo?: SmoothDiagInfo;
}
export interface LoessInterpolatorParms extends SmoothParms {
    interpolationMethod?: InterpolationMethod;
    minXDistance?: number;
    diagInfo?: LoessInterpolatorDiagInfo;
}
export declare function createLoessInterpolator(parms: LoessInterpolatorParms): UniFunction;
export declare function smooth(parms: SmoothParms): Float64Array;
export declare function calculateLocalLinearRegression(xVals: ArrayLike<number>, yVals: ArrayLike<number>, weights: ArrayLike<number> | undefined, x: number, iLeft: number, iRight: number, accuracy: number): number;
