/** Point-like object with x, y and optional z components. */ interface CurvePoint { x: number; y: number; z?: number; equals?(other: CurvePoint): boolean; } /** Abstract base class for parametric curves. */ export declare class Curve { #private; type: string; arcLengthDivisions: number; /** * Returns the point on the curve at parameter t. * Abstract - subclasses must override. */ getPoint(_t: number, _target?: CurvePoint): CurvePoint | undefined; /** Returns the point on the curve at arc-length fraction u. */ getPointAt(u: number, target?: CurvePoint): CurvePoint | undefined; /** Returns an array of (divisions + 1) points evenly spaced by parameter. */ getPoints(divisions?: number): Array; /** Returns an array of (divisions + 1) points evenly spaced by arc length. */ getSpacedPoints(divisions?: number): Array; /** Returns the total arc length of the curve. */ getLength(): number; /** Computes and caches cumulative arc lengths at each subdivision. */ getLengths(divisions?: number): number[]; /** Invalidates the arc length cache, forcing recomputation on next call. */ updateArcLengths(): void; /** Maps a uniform arc-length fraction u (or absolute distance) to curve parameter t. */ getUtoTmapping(u: number, distance?: number): number; /** Returns the unit tangent vector at parameter t using numerical differentiation. */ getTangent(t: number, target?: CurvePoint): CurvePoint | undefined; /** Returns the unit tangent vector at arc-length fraction u. */ getTangentAt(u: number, target?: CurvePoint): CurvePoint | undefined; /** Returns a new Curve with the same properties. */ clone(): Curve; /** Copies properties from source into this curve. */ copy(source: Curve): this; /** Returns a plain JSON representation of this curve. */ toJSON(): Record; /** Restores this curve from a plain JSON object. */ fromJSON(json: Record): this; } export {}; //# sourceMappingURL=Curve.d.ts.map