import { Angle } from "../geometry3d/Angle";
import { BarycentricTriangle } from "../geometry3d/BarycentricTriangle";
import { IndexedXYZCollection } from "../geometry3d/IndexedXYZCollection";
/** @packageDocumentation
 * @module Polyface
 */
/**
 * * Context for constructing triangulations between linestrings with dis-similar point counts and distribution.
 * @internal
 */
export declare class GreedyTriangulationBetweenLineStrings {
    private _vector1;
    private constructor();
    private _turnRadians;
    private isForwardVector;
    private isPlanarBase;
    /**
     * Starting at start in source, examine points to see how long they are close to being "in plane"
     * * child interval begins at parent.begin
     * * child interval end initializes at trialEnd and grows.
     * * child must be predefined by caller
     * * Return the accepted interval
     */
    private advanceToPlanarLimit;
    private _triangleA1?;
    private _triangleB1?;
    private _triangleA2?;
    private _triangleB2?;
    private _triangleA3?;
    private _triangleB3?;
    private _bestTriangle?;
    private _workTriangle?;
    /** evaluate aspect ratios to select heuristically best triangles with given index intervals.
     * (ASSUME NO DUPLICATES, as in caller.)
     */
    private addGreedy;
    private _xyzA;
    private _xyzB;
    private _forwardA;
    private _forwardB;
    private _crossA;
    private _crossB;
    /**
     * Working from start to finish, emit triangles with heuristic lookahead to get pleasing matching between the linestrings.
     * @param pointsA
     * @param pointsB
     * @param handler
     */
    emitTriangles(pointsA: IndexedXYZCollection, pointsB: IndexedXYZCollection, handler: (triangle: BarycentricTriangle) => void): void;
    /**
     * Run triangle logic on inputs with no duplicates.
     * @param pointsA
     * @param pointsB
     * @param handler
     */
    private emitTrianglesGo;
    /** Default angle for considering two vectors to be colinear */
    static defaultNearColinearAngle: Angle;
    static createContext(planarTurnAngle?: Angle): GreedyTriangulationBetweenLineStrings;
}
//# sourceMappingURL=GreedyTriangulationBetweenLineStrings.d.ts.map