import type { Point, Polygon, Triangle, TypedLine, TypedPolygon, TypedTriangle } from '@allmaps/types';
export type TriangulationToUnique = {
    interpolatedPolygon: Polygon;
    interpolatedPolygonPoints: Point[];
    gridPoints: Point[];
    gridPointsInPolygon: Point[];
    uniquePoints: Point[];
    triangles: Triangle[];
    uniquePointIndexTriangles: TypedTriangle<number>[];
    uniquePointIndexInterpolatedPolygon: TypedPolygon<number>;
    uniquePointIndexEdges: TypedLine<number>[];
};
export type TriangluationOptions = {
    steinerPoints: Point[];
    minimumTriangleAngle: number;
};
/**
 * Triangulate a polygon to triangles smaller then a distance
 *
 * Grid points are placed inside the polygon to obtain small, well conditioned triangles.
 *
 * @param polygon - Polygon
 * @param distance - Distance that conditions the triangles
 * @param triangulationOptions - Triangulation Options.
 * @returns Array of triangles partitioning the polygon
 */
export declare function triangulate(polygon: Polygon, distance?: number, triangulationOptions?: Partial<TriangluationOptions>): Triangle[];
/**
 * Triangulate a polygon to triangles smaller then a distance, and return them via unique points.
 *
 * Grid points are placed inside the polygon to obtain small, well conditioned triangles.
 *
 * This function returns the triangulation as an array of unique points, and triangles of indices refering to those unique points.
 *
 * @param polygon - Polygon
 * @param distance - Distance that conditions the triangles
 * @param triangulationOptions - Triangulation Options.
 * @returns Triangulation Object with uniquePointIndexTriangles and uniquePoints
 */
export declare function triangulateToUnique(polygon: Polygon, distance?: number, triangulationOptions?: Partial<TriangluationOptions>): TriangulationToUnique;
