import { HalfEdge, HalfEdgeGraph } from "./Graph";
/** @packageDocumentation
 * @module Topology
 */
/**
 * Context for building a half edge graph from loops defined only by indices.
 * * Direct use case:
 *   * Create the context.
 *   * Repeatedly call insertLoop(indicesAroundLoop) to announce various loops.
 *   * Finish by accessing the graph property.
 * @internal
 */
export declare class HalfEdgeGraphFromIndexedLoopsContext {
    constructor();
    private _unmatchedEdges;
    private _graph;
    get graph(): HalfEdgeGraph;
    private _halfEdgesAroundCurrentLoop;
    private indexPairToString;
    /** Create a loop with specified indices at its vertices.
     * * For an edge with index pair [indexA, indexB]:
     *   * if [indexB, indexA] has never appeared, a HalfEdge mated pair is created.
     *      * One of that mated pair becomes a HalfEdge in this loop.
     *      * The other is "unmatched" and gets the EXTERIOR mask.
     *      * When announceMatedHalfEdges(halfEdge) is called:
     *         * halfEdge and its mate are "new".
     *         * each contains (as its `i` property) one index of the [indexA,indexB] pair.
     *         * all coordinates are zeros.
     *         * these coordinates and indices will never be referenced again by this construction sequence.
     *         * typically the caller sets the halfEdge/mate coordinates in this callback.
     *   * if [indexB, indexA] appeared previously (and its outer HalfEdge was left "unmatched"),
     *     the "unmatched" HalfEdge is used in the loop being constructed, and its EXTERIOR mask is cleared.
     * @param indices Array of indices around the loop.  This is accessed cyclically, so first and last indices should be different.
     * @param announceMatedHalfEdges optional function to be called as mated pairs are created. At the call,
     *     the given HalfEdge and its mate will have a pair of successive indices from the array in their `i` property.
     */
    insertLoop(indices: number[], announceMatedHalfEdges?: (halfEdge: HalfEdge) => void): HalfEdge | undefined;
}
//# sourceMappingURL=HalfEdgeGraphFromIndexedLoopsContext.d.ts.map