import { AnyRegion } from "../curve/CurveTypes";
import { Loop } from "../curve/Loop";
import { IndexedReadWriteXYZCollection, IndexedXYZCollection } from "./IndexedXYZCollection";
import { Point3d } from "./Point3dVector3d";
import { Range3d } from "./Range";
/**
 * A `SortablePolygon` carries a (single) xy-loop with data useful for sorting for inner-outer structure.
 * @internal
 */
export declare class SortablePolygon {
    private _loopCarrier;
    anyPoint?: Point3d;
    sortKey: number;
    range: Range3d;
    parentIndex?: number;
    isHole: boolean;
    outputSetIndex?: number;
    /**
     *
     * @param loop Loop to capture.
     */
    constructor(loop: IndexedReadWriteXYZCollection | Loop, range: Range3d);
    /** Push loop with sort data onto the array.
     * * No action if no clear normal.
     * * return true if pushed.
     */
    static pushPolygon(loops: SortablePolygon[], loop: IndexedReadWriteXYZCollection): boolean;
    /** Push loop with sort data onto the array.
     * * No action if no clear normal.
     * * return true if pushed.
     */
    static pushLoop(loops: SortablePolygon[], loop: Loop): boolean;
    /** Push loop with sort data onto the array.
     * * No action if no clear normal.
     * * return true if pushed.
     */
    private static assignParentsAndDepth;
    private static assemblePolygonSet;
    private static assembleLoopSet;
    static sortAsAnyRegion(loops: SortablePolygon[]): AnyRegion;
    static sortAsArrayOfArrayOfPolygons(loops: SortablePolygon[]): IndexedReadWriteXYZCollection[][];
    grabPolygon(): IndexedXYZCollection | undefined;
    grabLoop(): Loop | undefined;
    reverseForAreaSign(targetSign: number): void;
    getAnyInteriorPoint(): Point3d | undefined;
}
//# sourceMappingURL=SortablePolygon.d.ts.map