/** @packageDocumentation
 * @module Curve
 */
import { XYCurveEvaluator } from "./XYCurveEvaluator";
/**
 * Intermediate class for evaluation of bare cubic spirals `y = m*x^3` with x axis from [0..xLength]
 * * This implements all the computations among fraction, x, and y.
 * * Derived classes implement specialized logic such as (a) precomputing `m` and (b) domain-specific fraction-to-distance
 * approximations.
 * @internal
 */
export declare abstract class CubicEvaluator extends XYCurveEvaluator {
    protected _cubicM: number;
    protected _axisLength: number;
    protected constructor(axisLength: number, cubicM: number);
    /** Update both constants. */
    setConstants(axisLength: number, cubicM: number): void;
    get axisLength(): number;
    get cubicM(): number;
    /**
     * Apply `scaleFactor` to the xLength and cubicM.
     * * Derived classes commonly call this as `super.scaleInPlace()`, and additionally apply the scale to their members.
     */
    scaleInPlace(scaleFactor: number): void;
    /** Evaluate X at fraction. */
    fractionToX(fraction: number): number;
    /** Evaluate derivative of X with respect to fraction. */
    fractionToDX(_fraction: number): number;
    /** Evaluate second derivative of X with respect to fraction. */
    fractionToDDX(_fraction: number): number;
    /** Evaluate third derivative of X with respect to fraction. */
    fractionToD3X(_fraction: number): number;
    /** Evaluate Y at fraction. */
    fractionToY(fraction: number): number;
    /** Evaluate derivative of Y with respect to fraction. */
    fractionToDY(fraction: number): number;
    /** Evaluate second derivative of Y with respect to fraction. */
    fractionToDDY(fraction: number): number;
    /** Evaluate third derivative of Y with respect to fraction. */
    fractionToD3Y(_fraction: number): number;
    /** Evaluate fraction at x. */
    xToFraction(x: number): number;
}
//# sourceMappingURL=CubicEvaluator.d.ts.map