/**
 * boolean operation
 *
 */
import { TypedSopNode } from './_Base';
import { BooleanOperation } from '../../operations/sop/Boolean';
import { NodeParamsConfig } from '../utils/params/ParamsConfig';
import { CoreGroup } from '../../../core/geometry/Group';
declare class BooleanSopParamsConfig extends NodeParamsConfig {
    /** @param url to load the geometry from */
    operation: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
    /** @param preserves the color attribute of both input */
    keepVertexColor: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
    /** @param add any additional attribute to be preserved */
    additionalAttributes: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.STRING>;
    /** @param defines if only the material from the first input is used, or if the ones from both inputs should be used */
    keepMaterials: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
    /** @param if one of the input has multiple material for a single object, and you'd like to preserve those, toggle this on */
    useInputGroups: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
    /** @param intersectionEdgesOnly */
    intersectionEdgesOnly: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
}
export declare class BooleanSopNode extends TypedSopNode<BooleanSopParamsConfig> {
    paramsConfig: BooleanSopParamsConfig;
    static type(): string;
    initializeNode(): void;
    setOperation(operation: BooleanOperation): void;
    private _operation;
    cook(inputCoreGroups: CoreGroup[]): void;
}
export {};
