import { Intersection } from '../data_structures/smart_intersections';
import type { Point } from '../classes/Point';
import type { Polygon } from '../classes/Polygon';
import type { Shape } from '../classes/Shape';
export declare enum BooleanOp {
UNION = 1,
INTERSECT = 2,
SUBTRACT = 3
}
/**
* Unify two polygons polygons and returns new polygon.
* Point belongs to the resulted polygon if it belongs to the first OR to the second polygon
*/
export declare function unify(polygon1: Polygon, polygon2: Polygon): Polygon;
/**
* Subtract second polygon from the first and returns new polygon
* Point belongs to the resulted polygon if it belongs to the first polygon AND NOT to the second polygon
*/
export declare function subtract(polygon1: Polygon, polygon2: Polygon): Polygon;
/**
* Intersect two polygons and returns new polygon
* Point belongs to the resulted polygon is it belongs to the first AND to the second polygon
*/
export declare function intersect(polygon1: Polygon, polygon2: Polygon): Polygon;
/**
* Returns boundary of intersection between two polygons as two arrays of shapes (Segments/Arcs)
* The first array are shapes from the first polygon, the second array are shapes from the second
*/
export declare function innerClip(polygon1: Polygon, polygon2: Polygon): Shape[][];
/**
* Returns boundary of subtraction of the second polygon from first polygon as array of shapes
*/
export declare function outerClip(polygon1: Polygon, polygon2: Polygon): Shape[];
/**
* Returns intersection points between boundaries of two polygons as two array of points
* Points in the first array belong to first polygon, points from the second - to the second.
* Points in each array are ordered according to the direction of the correspondent polygon
*/
export declare function calculateIntersections(polygon1: Polygon, polygon2: Polygon): Point[][];
export declare function removeNotRelevantChains(polygon: Polygon, op: BooleanOp, int_points: Intersection[], is_res_polygon: boolean): void;
export declare function removeOldFaces(polygon: Polygon, int_points: Intersection[]): void;
export declare function restoreFaces(polygon: Polygon, int_points: Intersection[], other_int_points: Intersection[]): void;
//# sourceMappingURL=booleanOperations.d.ts.map