import { Clipper } from "./ClipUtils";
/**
 * A BooleanClipFactory is a factory to create objects that implement interior nodes of a tree of boolean clip operations.
 * * These methods create specific clip tree types:
 *   * Union
 *   * Intersection
 *   * Parity
 *   * Difference
 * * Each construction has a `keepInside` flag that optionally negates the initial result of the parity, intersection,
 * parity, or difference:
 *   * if `keepInside === true`, accept the "inside" of the initial result.
 *   * if `keepInside === false`, accept the "outside"  of the initial result.
 * * These methods create various other specialized clippers.
 * @public
 */
export declare class BooleanClipFactory {
    /**
     * Create a boolean clipper which performs a union over its children.
     * * if `keepInside === true`, accept the "inside" of the union result.
     * * if `keepInside === false`, accept the "outside" of the union result.
     * @param clippers clip objects to capture.
     * @param keepInside flag to select results inside or outside the clippers.
     */
    static createCaptureUnion(clippers: Clipper | Clipper[], keepInside: boolean): Clipper;
    /**
     * Create a boolean clipper which performs an intersection over its children.
     * * if `keepInside === true`, accept the "inside" of the intersection result.
     * * if `keepInside === false`, accept the "outside" of the intersection result.
     * @param clippers clip objects to capture.
     * @param keepInside flag to select results inside or outside the clippers.
     */
    static createCaptureIntersection(clippers: Clipper | Clipper[], keepInside: boolean): Clipper;
    /**
     * Create a boolean clipper which performs a parity over its children.
     * * if `keepInside === true`, accept the "inside" of the parity result.
     * * if `keepInside === false`, accept the "outside" of the parity result.
     * @param clippers clip objects to capture.
     * @param keepInside flag to select results inside or outside the clippers.
     */
    static createCaptureParity(clippers: Clipper | Clipper[], keepInside: boolean): Clipper;
    /**
     * Create a boolean clipper which performs a difference operation for points "inside `primaryClipper`" and
     * "outside `excludedClipper`".
     * * if `keepInside === true`, accept the "inside" of the difference.
     * * if `keepInside === false`, accept the "outside" of the difference.
     * @param primaryClipper any clip object whose output is treated as positive.
     * @param excludeClip any clipper whose output is treated as negative.
     * @param keepInside flag to select results inside or outside the initial `primary minus excludeClipper` clippers.
     */
    static createCaptureDifference(primaryClipper: Clipper, excludedClipper: Clipper, keepInside: boolean): Clipper;
    /**
     * Create a boolean clipper which performs the reverse of that of `primaryClipper`.
     * @param primaryClipper clip objects to capture.
     * @param keepInside flag to select results inside or outside the clippers.
     */
    static createCaptureClipOutside(primaryClipper: Clipper): Clipper;
    /**
     * Convert `source` to an array of clipper objects.
     * * ANY TYPE OF Clipper is accepted.
     * * REMARK: This is normally called only from the primary public method `parseToClipper`.
     */
    static parseToClipperArray(source: any): Clipper[] | undefined;
    /**
     * Look for content that represents a clipper.
     * * Possible outputs are
     *   * `ClipPlane`
     *   * `ConvexClipPlaneSet`
     *   * `UnionOfConvexClipPlaneSets`
     *   * One of the `ClipBoolean` derived classes
     *     * `ClipBooleanXOR`
     *     * `ClipBooleanOR`
     *     * `ClipBooleanAND`
     * @param source json object
     * @public
     */
    static parseToClipper(source?: object): Clipper | undefined;
    /** Choose a `toJSON` method appropriate to the clipper */
    static anyClipperToJSON(clipper: any): any;
}
//# sourceMappingURL=BooleanClipFactory.d.ts.map