/** @packageDocumentation
 * @module Curve
 */
import { AngleSweep } from "../geometry3d/AngleSweep";
/**
 * Enumeration of condition for extending a curve beyond start or end point.
 * * Not all CurvePrimitives support these modes.
 * @public
 */
export declare enum CurveExtendMode {
    /** No extension allowed. */
    None = 0,
    /** Extend along continuation of the end tangent. */
    OnTangent = 1,
    /** Extend along continuation of the curve. */
    OnCurve = 2
}
/**
 * Logic for deciding how a curve may be extended for closest point or intersection searches.
 * @public
 */
export declare class CurveExtendOptions {
    /**
     * Given a `VariantCurveExtendParameter`, isolate the particular CurveExtendMode in effect at an end.
     * * Return `CurveExtendMode.None` if `param === false`.
     * * Return `CurveExtendMode.OnCurve` if `param === true`.
     * * Return the param if it is a single CurveExtendMode.
     * * Return dereferenced array at entry `endIndex` if the param is an array of CurveExtendMode.
     */
    static resolveVariantCurveExtendParameterToCurveExtendMode(param: VariantCurveExtendParameter, endIndex: 0 | 1): CurveExtendMode;
    /**
     * Correct fraction to be within [0,1].
     * * If fraction is in [0,1] return it unchanged.
     * * If fraction is less than 0 use `extendParam` to decide whether to return it unchanged, or to return 0.
     * * If fraction is greater than 1 use `extendParam` to decide whether to return it unchanged, or to return 1.
     */
    static correctFraction(extendParam: VariantCurveExtendParameter, fraction: number): number;
    /**
     * Adjust a radians value to an angle sweep, extending beyond or clamping to [0,1] according to `extendParam`:
     * * If `radians` is within the sweep, convert it to a fraction of the sweep.
     * * If `radians` is outside the sweep and `extendParam` does not allow extension at both ends, adjust the fraction:
     *   * fraction below 0 if `extendParam` allows extension only at start
     *   * fraction above 1 if `extendParam` allows extension only at end
     *   * fraction clamped to [0,1] if `extendParam` disallows extension at both ends
     * @returns adjusted fraction of sweep, and a boolean indicating whether it is valid, i.e. whether `radians` lies in
     * the sweep extended per `extendParam`.
     */
    static resolveRadiansToValidSweepFraction(extendParam: VariantCurveExtendParameter, radians: number, sweep: AngleSweep): {
        fraction: number;
        isValid: boolean;
    };
    /** Call [[resolveRadiansToValidSweepFraction]] and return only the fraction. */
    static resolveRadiansToSweepFraction(extendParam: VariantCurveExtendParameter, radians: number, sweep: AngleSweep): number;
}
/**
 * Variant options for extending a curve.
 * * Useful for specifying either a single boolean/`CurveExtendMode` option applicable to both ends of the curve,
 * or an array of options, the first entry of which applies to the curve start; the second, to curve end.
 * @public
 */
export type VariantCurveExtendParameter = boolean | CurveExtendMode | CurveExtendMode[];
//# sourceMappingURL=CurveExtendMode.d.ts.map