export interface InterpolationPoint {
    x: number;
    y: number;
    tension?: number;
    bias?: number;
    continuity?: number;
}
export interface InterpolationConfig {
    type: 'linear' | 'cubic' | 'hermite' | 'bezier' | 'spline';
    tension?: number;
    bias?: number;
    continuity?: number;
    alpha?: number;
}
export declare class InterpolationUtils {
    /**
     * Linear interpolation between two points
     */
    static lerp(a: number, b: number, t: number): number;
    /**
     * Linear interpolation for 2D points
     */
    static lerp2D(p1: {
        x: number;
        y: number;
    }, p2: {
        x: number;
        y: number;
    }, t: number): {
        x: number;
        y: number;
    };
    /**
     * Cubic interpolation using Catmull-Rom spline
     */
    static catmullRom(p0: InterpolationPoint, p1: InterpolationPoint, p2: InterpolationPoint, p3: InterpolationPoint, t: number, alpha?: number): {
        x: number;
        y: number;
    };
    private static getT;
    /**
     * Hermite interpolation
     */
    static hermite(p0: InterpolationPoint, p1: InterpolationPoint, m0: {
        x: number;
        y: number;
    }, m1: {
        x: number;
        y: number;
    }, t: number): {
        x: number;
        y: number;
    };
    /**
     * Cubic Bezier interpolation
     */
    static bezier(p0: InterpolationPoint, p1: InterpolationPoint, p2: InterpolationPoint, p3: InterpolationPoint, t: number): {
        x: number;
        y: number;
    };
    /**
     * B-spline interpolation
     */
    static bSpline(points: InterpolationPoint[], t: number, degree?: number): {
        x: number;
        y: number;
    };
    private static bSplineBasis;
    /**
     * Smooth step interpolation
     */
    static smoothStep(edge0: number, edge1: number, x: number): number;
    /**
     * Smoother step interpolation
     */
    static smootherStep(edge0: number, edge1: number, x: number): number;
    /**
     * Interpolate along a path defined by points
     */
    static interpolatePath(points: InterpolationPoint[], config: InterpolationConfig, t: number): {
        x: number;
        y: number;
    };
    private static interpolateLinear;
    private static interpolateCubic;
    private static interpolateHermite;
    private static calculateTangent;
    private static interpolateBezier;
}
export declare const interpolate: {
    linear: (a: number, b: number, t: number) => number;
    smooth: (a: number, b: number, t: number) => number;
    smoother: (a: number, b: number, t: number) => number;
    color: (color1: string, color2: string, t: number) => string;
    path: (points: InterpolationPoint[], config: InterpolationConfig, t: number) => {
        x: number;
        y: number;
    };
    array: (arr1: number[], arr2: number[], t: number) => number[];
};
//# sourceMappingURL=interpolation.d.ts.map