/**
 * Applies a boolean operation
 *
 *
 */
import { CADSopNode } from './_BaseCAD';
import { NodeParamsConfig } from '../utils/params/ParamsConfig';
import { SopType } from '../../poly/registers/nodes/types/Sop';
import { CoreGroup } from '../../../core/geometry/Group';
export declare enum BooleanCadOperationType {
    INTERSECT = "intersect",
    SECTION = "section",
    SUBTRACT = "subtract",
    UNION = "union"
}
export declare const BOOLEAN_CAD_OPERATION_TYPES: BooleanCadOperationType[];
declare class CADBooleanSopParamsConfig extends NodeParamsConfig {
    /** @param operation */
    operation: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
    /** @param mode */
    mode: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
}
export declare class CADBooleanSopNode extends CADSopNode<CADBooleanSopParamsConfig> {
    paramsConfig: CADBooleanSopParamsConfig;
    static type(): SopType;
    protected initializeNode(): void;
    setOperation(operation: BooleanCadOperationType): void;
    cook(inputCoreGroups: CoreGroup[]): void;
    private _createBooleansAllInSequence;
    private _createBooleansOneToOne;
    private _createBooleansOneToMany;
}
export {};
