/** @packageDocumentation
 * @module Curve
 */
/**
 * NormalizedTransition is the (abstract) base class for clothoid, bloss, biquadratic, sine, and cosine transition functions.
 * * Each function maps fractional progress to a curvature value.
 *   * f(0) === 0
 *   * f(1) === 1
 *   * f(u) === 1 - f(1-u)
 * * Each implementation provides:
 *   * fractionToCurvature -- the f(u) function described above
 *   * fractionToCurvatureDerivative -- df(u)/du
 *   * fractionToArea -- antiderivative A of f, chosen such that A(0) = 0. The value of this function at
 *     fraction u is the area under f from 0 to u. In particular, the symmetry condition on f implies that
 *     1/2 = "integral of f over [0,1]" = A(1) - A(0) = A(1).
 * @internal
 */
export declare abstract class NormalizedTransition {
    /** Constructor initializes with 0..1 values. Call "setBearingCurvatureLengthCurvature" to apply real values. */
    constructor();
    /** At fractional position on the x axis, return the (normalized) curvature fraction. */
    abstract fractionToCurvatureFraction(fractionX: number): number;
    /** Return the derivative of the (normalized) curvature fraction. */
    abstract fractionToCurvatureFractionDerivative(fractionX: number): number;
    /**
     * Return the integrated area under the curve.
     * * This is equal to the accumulated angle change.
     */
    abstract fractionToArea(fractionX: number): number;
    private static _clothoidEvaluator?;
    private static _biquadraticEvaluator?;
    private static _blossEvaluator?;
    private static _sineEvaluator?;
    private static _cosineEvaluator?;
    /**
     * Return a standard evaluator identified by string as:
     * * clothoid
     * * bloss
     * * biquadratic
     * * sine
     * * cosine
     * Each of these types
     * * is instantiated (only once) as a single static object within the NormalizedTransition class.
     * * has no instance data or mutator methods.
     * @param name string name of the transition.
     */
    static findEvaluator(name: string): NormalizedTransition | undefined;
}
/**
 * Transition functions for clothoid spiral.
 * * Curvature variation is linear from (0,0) to (1,1).
 * @internal
 */
export declare class NormalizedClothoidTransition extends NormalizedTransition {
    constructor();
    /** At fractional position on the x axis, return the (normalized) curvature fraction. */
    fractionToCurvatureFraction(fractionX: number): number;
    /** Return the derivative of the (normalized) curvature fraction. */
    fractionToCurvatureFractionDerivative(_u: number): number;
    /**
     * Return the integrated area under the curve.
     * * This fraction is the angular change fraction.
     */
    fractionToArea(fractionX: number): number;
}
/**
 * Transition functions for bloss spiral.
 * * curvature variation is cubic from (0,0) with slope 0 to (1,1) with slope 1.
 * @internal
 */
export declare class NormalizedBlossTransition extends NormalizedTransition {
    constructor();
    /** At fractional position on the x axis, return the (normalized) curvature fraction. */
    fractionToCurvatureFraction(u: number): number;
    /** Return the derivative of the (normalized) curvature fraction. */
    fractionToCurvatureFractionDerivative(u: number): number;
    /**
     * Return the integrated area under the curve.
     * * This fraction is the angular change fraction.
     */
    fractionToArea(u: number): number;
}
/**
 * Transition functions for biquadratic transition.
 * * Curvature is a pair of joining quadratics.
 * * In lower half of the interval, the quadratic is from (0,0) to (0.5, 0.5) with zero slope at origin.
 * * In upper half of the interval, the quadratic is from (0.5,0.5) to (1,1) with zero slope at 1.
 * @internal
 */
export declare class NormalizedBiQuadraticTransition extends NormalizedTransition {
    constructor();
    private integratedBasis;
    private basis;
    private basisDerivative;
    /**
     * At fractional position on the x axis, return the (normalized) curvature fraction.
     *  * For [u <= 0.5, u > 0.5]
     *    * f(u) = [2u^2, 1 - 2(1-u)^2]
     *    * f'(u) = [4u, 4(1-u)]
     *    * If(u) = [2u^3 / 3, u + 2(1-u)^3 /3]
     */
    fractionToCurvatureFraction(u: number): number;
    /** Return the derivative of the (normalized) curvature fraction. */
    fractionToCurvatureFractionDerivative(u: number): number;
    /**
     * Return the integrated area under the curve.
     * * This fraction is the angular change fraction.
     */
    fractionToArea(u: number): number;
}
/**
 * Transition functions for sine transition.
 * * curvature variation is the sum of
 *   * straight line from (0,0) to (1,1), like clothoid.
 *   * additional full period of a sine wave, producing 0 slope at both ends.
 * @internal
 */
export declare class NormalizedSineTransition extends NormalizedTransition {
    constructor();
    /** At fractional position on the x axis, return the (normalized) curvature fraction. */
    fractionToCurvatureFraction(u: number): number;
    /** Return the derivative of the (normalized) curvature fraction. */
    fractionToCurvatureFractionDerivative(u: number): number;
    /**
     * Return the integrated area under the curve.
     * * This fraction is the angular change fraction.
     */
    fractionToArea(u: number): number;
}
/**
 * Transition functions for cosine.
 * * curvature variation is a half period of a cosine.
 * @internal
 */
export declare class NormalizedCosineTransition extends NormalizedTransition {
    constructor();
    /** At fractional position on the x axis, return the (normalized) curvature fraction. */
    fractionToCurvatureFraction(u: number): number;
    /** Return the derivative of the (normalized) curvature fraction. */
    fractionToCurvatureFractionDerivative(u: number): number;
    /**
     * Return the integrated area under the curve.
     * * This fraction is the angular change fraction.
     */
    fractionToArea(u: number): number;
}
//# sourceMappingURL=NormalizedTransition.d.ts.map