export default Triangulation;
/**
 * Single triangle; consists of 3 source points and 3 target points.
 */
export type Triangle = {
    /**
     * Source.
     */
    source: Array<import("../coordinate.js").Coordinate>;
    /**
     * Target.
     */
    target: Array<import("../coordinate.js").Coordinate>;
};
/**
 * @classdesc
 * Class containing triangulation of the given target extent.
 * Used for determining source data and the reprojection itself.
 */
declare class Triangulation {
    /**
     * @param {import("../proj/Projection.js").default} sourceProj Source projection.
     * @param {import("../proj/Projection.js").default} targetProj Target projection.
     * @param {import("../extent.js").Extent} targetExtent Target extent to triangulate.
     * @param {import("../extent.js").Extent} maxSourceExtent Maximal source extent that can be used.
     * @param {number} errorThreshold Acceptable error (in source units).
     * @param {?number} destinationResolution The (optional) resolution of the destination.
     * @param {import("../transform.js").Transform} [sourceMatrix] Source transform matrix.
     */
    constructor(sourceProj: import("../proj/Projection.js").default, targetProj: import("../proj/Projection.js").default, targetExtent: import("../extent.js").Extent, maxSourceExtent: import("../extent.js").Extent, errorThreshold: number, destinationResolution: number | null, sourceMatrix?: import("../transform.js").Transform);
    /**
     * @type {import("../proj/Projection.js").default}
     * @private
     */
    private sourceProj_;
    /**
     * @type {import("../proj/Projection.js").default}
     * @private
     */
    private targetProj_;
    /**
     * @param {import("../coordinate.js").Coordinate} c A coordinate.
     * @return {import("../coordinate.js").Coordinate} Transformed coordinate.
     * @private
     */
    private transformInv_;
    /**
     * @type {import("../extent.js").Extent}
     * @private
     */
    private maxSourceExtent_;
    /**
     * @type {number}
     * @private
     */
    private errorThresholdSquared_;
    /**
     * @type {Array<Triangle>}
     * @private
     */
    private triangles_;
    /**
     * Indicates that the triangulation crosses edge of the source projection.
     * @type {boolean}
     * @private
     */
    private wrapsXInSource_;
    /**
     * @type {boolean}
     * @private
     */
    private canWrapXInSource_;
    /**
     * @type {?number}
     * @private
     */
    private sourceWorldWidth_;
    /**
     * @type {?number}
     * @private
     */
    private targetWorldWidth_;
    /**
     * Adds triangle to the triangulation.
     * @param {import("../coordinate.js").Coordinate} a The target a coordinate.
     * @param {import("../coordinate.js").Coordinate} b The target b coordinate.
     * @param {import("../coordinate.js").Coordinate} c The target c coordinate.
     * @param {import("../coordinate.js").Coordinate} aSrc The source a coordinate.
     * @param {import("../coordinate.js").Coordinate} bSrc The source b coordinate.
     * @param {import("../coordinate.js").Coordinate} cSrc The source c coordinate.
     * @private
     */
    private addTriangle_;
    /**
     * Adds quad (points in clock-wise order) to the triangulation
     * (and reprojects the vertices) if valid.
     * Performs quad subdivision if needed to increase precision.
     *
     * @param {import("../coordinate.js").Coordinate} a The target a coordinate.
     * @param {import("../coordinate.js").Coordinate} b The target b coordinate.
     * @param {import("../coordinate.js").Coordinate} c The target c coordinate.
     * @param {import("../coordinate.js").Coordinate} d The target d coordinate.
     * @param {import("../coordinate.js").Coordinate} aSrc The source a coordinate.
     * @param {import("../coordinate.js").Coordinate} bSrc The source b coordinate.
     * @param {import("../coordinate.js").Coordinate} cSrc The source c coordinate.
     * @param {import("../coordinate.js").Coordinate} dSrc The source d coordinate.
     * @param {number} maxSubdivision Maximal allowed subdivision of the quad.
     * @private
     */
    private addQuad_;
    /**
     * Calculates extent of the `source` coordinates from all the triangles.
     *
     * @return {import("../extent.js").Extent} Calculated extent.
     */
    calculateSourceExtent(): import("../extent.js").Extent;
    /**
     * @return {Array<Triangle>} Array of the calculated triangles.
     */
    getTriangles(): Array<Triangle>;
}
//# sourceMappingURL=Triangulation.d.ts.map