/**
 * motionPath.ts — Spline-based motion path editor for AnimationEditor.
 *
 * Cubic Bézier paths that can be evaluated at any t ∈ [0..1]
 * to drive bone position or object translation.
 */
export interface Vec2 {
    x: number;
    y: number;
}
export interface BezierPoint {
    /** Anchor position. */
    pos: Vec2;
    /** Control point before anchor (incoming tangent). */
    cpIn: Vec2;
    /** Control point after anchor (outgoing tangent). */
    cpOut: Vec2;
}
export interface MotionPath {
    id: string;
    name: string;
    points: BezierPoint[];
    closed: boolean;
}
export interface MotionPathKeyframe {
    /** Time in ms. */
    time: number;
    /** Parameter t on the path [0..1]. */
    t: number;
    /** Easing to next keyframe. */
    easing?: "linear" | "ease-in" | "ease-out" | "ease-in-out";
}
export interface MotionPathAnimation {
    pathId: string;
    keyframes: MotionPathKeyframe[];
    loop: boolean;
}
/** Create a straight-line motion path between two points. */
export declare function createLinearPath(id: string, from: Vec2, to: Vec2, name?: string): MotionPath;
/** Create a circular motion path. */
export declare function createCircularPath(id: string, cx: number, cy: number, radius: number, name?: string): MotionPath;
/** Create a figure-8 motion path. */
export declare function createFigure8Path(id: string, cx: number, cy: number, width: number, height: number, name?: string): MotionPath;
/** Evaluate a position on the motion path at parameter t ∈ [0..1]. */
export declare function evaluatePath(path: MotionPath, t: number): Vec2;
/** Get the tangent direction at parameter t. */
export declare function evaluatePathTangent(path: MotionPath, t: number): Vec2;
/** Approximate total path length by sampling. */
export declare function pathLength(path: MotionPath, samples?: number): number;
/** Compute arc-length parameterization lookup table. */
export declare function arcLengthTable(path: MotionPath, samples?: number): number[];
/** Convert distance fraction → parametric t using arc-length table. */
export declare function distanceToT(arcTable: number[], d: number): number;
/** Evaluate a motion path animation at a given time (ms). Returns position on path. */
export declare function evaluateMotionPathAnimation(path: MotionPath, anim: MotionPathAnimation, timeMs: number): Vec2 | null;
export declare const PRESET_PATHS: {
    bouncingArc: (cx: number, cy: number, w: number, h: number) => MotionPath;
    circle: (cx: number, cy: number, r: number) => MotionPath;
    figure8: (cx: number, cy: number, w: number, h: number) => MotionPath;
};
