/** @packageDocumentation
 * @module Curve
 */
import { GeometryHandler } from "../geometry3d/GeometryHandler";
import { Point3d } from "../geometry3d/Point3dVector3d";
import { CurveChain } from "./CurveCollection";
import { VariantCurveExtendParameter } from "./CurveExtendMode";
import { CurveLocationDetail } from "./CurveLocationDetail";
import { CurvePrimitive } from "./CurvePrimitive";
import { RecursiveCurveProcessor } from "./CurveProcessor";
import { GeometryQuery } from "./GeometryQuery";
import { StrokeOptions } from "./StrokeOptions";
/**
 * * A `Path` object is a collection of curves that join head-to-tail to form a path.
 * * A `Path` object does not bound a planar region. Use `Loop` to indicate region bounding.
 * @see [Curve Collections]($docs/learning/geometry/CurveCollection.md) learning article.
 * @public
 */
export declare class Path extends CurveChain {
    /** String name for schema properties */
    readonly curveCollectionType = "path";
    /** Test if `other` is an instance of `Path` */
    isSameGeometryClass(other: GeometryQuery): boolean;
    /** Invoke `processor.announcePath(this, indexInParent)` */
    announceToCurveProcessor(processor: RecursiveCurveProcessor, indexInParent?: number): void;
    /** Construct an empty path. */
    constructor();
    /**
     * Create a path from a variable length list of curve primitives
     * * CurvePrimitive params are captured.
     * @param curves variable length list of individual curve primitives or point arrays.
     */
    static create(...curves: Array<CurvePrimitive | Point3d[]>): Path;
    /**
     * Create a path from a an array of curve primitives.
     * @param curves array of individual curve primitives.
     */
    static createArray(curves: CurvePrimitive[]): Path;
    /** Return a deep copy, with leaf-level curve primitives stroked. */
    cloneStroked(options?: StrokeOptions): Path;
    /**
     * Return the closest point on the contained curves.
     * @param spacePoint point in space.
     * @param extend compute the closest point to the path extended according to variant type:
     * * false: do not extend the path
     * * true: extend the path at both start and end
     * * CurveExtendOptions: extend the path in the specified manner at both start and end
     * * CurveExtendOptions[]: first entry applies to path start; second, to path end; any other entries ignored
     * @param result optional pre-allocated detail to populate and return.
     * @returns details of the closest point.
     */
    closestPoint(spacePoint: Point3d, extend?: VariantCurveExtendParameter, result?: CurveLocationDetail): CurveLocationDetail | undefined;
    /** Return the boundary type (1) of a corresponding MicroStation CurveVector */
    dgnBoundaryType(): number;
    /** Clone as a new `Path` with no primitives */
    cloneEmptyPeer(): Path;
    /** Second step of double dispatch: call `handler.handlePath(this)` */
    dispatchToGeometryHandler(handler: GeometryHandler): any;
}
//# sourceMappingURL=Path.d.ts.map