/** @packageDocumentation
 * @module Polyface
 */
import { ClipPlane } from "../../clipping/ClipPlane";
import { ConvexClipPlaneSet } from "../../clipping/ConvexClipPlaneSet";
import { GrowableXYZArray } from "../../geometry3d/GrowableXYZArray";
import { IndexedXYZCollection } from "../../geometry3d/IndexedXYZCollection";
import { Point3d, Vector3d } from "../../geometry3d/Point3dVector3d";
import { Polyface } from "../Polyface";
import { AnnounceDrapePanel } from "../PolyfaceQuery";
export declare class SweepLineStringToFacetContext {
    private _spacePoints;
    private _spacePointsRange;
    private _numSpacePoints;
    private constructor();
    static create(xyz: IndexedXYZCollection): SweepLineStringToFacetContext | undefined;
    private _segmentPoint0;
    private _segmentPoint1;
    private _localSegmentPoint0;
    private _localSegmentPoint1;
    private _clipFractions;
    private _localFrame;
    private _polygonRange;
    /** process a single polygon.
     * @returns number crudely indicating how much work was done.
     */
    projectToPolygon(polygon: GrowableXYZArray, announce: AnnounceDrapePanel, polyface: Polyface, readIndex: number): number;
}
/**
 * Context for sweeping a line segment onto a convex polygon.
 * @internal
 */
export declare class EdgeClipData {
    /** Plane containing the edge and sweep vector */
    edgePlane: ClipPlane;
    /** Two clip planes facing each other at each end of the edge */
    clip: ConvexClipPlaneSet;
    /** work array for clipper method */
    private _crossingPoints;
    /** CAPTURE the planes */
    constructor(edgePlane: ClipPlane, clip: ConvexClipPlaneSet);
    /** create object from segment and sweep. Inputs are not captured. */
    static createPointPointSweep(pointA: Point3d, pointB: Point3d, sweep: Vector3d): EdgeClipData | undefined;
    /** Intersect this edge plane with the given convex polygon and announce the intersection segment to the callback. */
    processPolygon(polygon: Point3d[] | IndexedXYZCollection, announceEdge: (pointA: Point3d, pointB: Point3d) => void): void;
}
/**
 * Context for sweeping a line string onto a convex polygon.
 * @internal
 */
export declare class ClipSweptLineStringContext {
    private _edgeClippers;
    private _localToWorld?;
    private _worldToLocal?;
    private _localRange?;
    private constructor();
    static create(xyz: IndexedXYZCollection, sweepVector: Vector3d | undefined): ClipSweptLineStringContext | undefined;
    /**
     * Intersect a polygon with each of the edgeClippers.
     * * If transforms and local range are defined, test the polygon's local range to see if it offers a quick exit.
     */
    processPolygon(polygon: Point3d[], announceEdge: (pointA: Point3d, pointB: Point3d) => void): void;
}
//# sourceMappingURL=SweepLineStringToFacetContext.d.ts.map