/**
 * Delete parts of the input geometry
 *
 * @remarks
 * This can be used in many ways to delete points or objects from the input.
 *
 */
import { TypedSopNode } from './_Base';
import { AttribClass } from '../../../core/geometry/Constant';
import { CoreGroup } from '../../../core/geometry/Group';
import { NodeParamsConfig } from '../utils/params/ParamsConfig';
import { EntitySelectionHelper } from './utils/delete/EntitySelectionHelper';
import { ByAttributeHelper } from './utils/delete/ByAttributeHelper';
import { ByExpressionHelper } from './utils/delete/ByExpressionHelper';
import { ByBboxHelper } from './utils/delete/ByBboxHelper';
import { ByObjectTypeHelper } from './utils/delete/ByObjectTypeHelper';
declare class DeleteSopParamsConfig extends NodeParamsConfig {
    /** @param defines the class that should be deleted (objects or vertices) */
    class: import("../utils/params/ParamsConfig").ParamTemplate<import("../../poly/ParamType").ParamType.INTEGER>;
    /** @param invert the selection created in the parameters below */
    invert: import("../utils/params/ParamsConfig").ParamTemplate<import("../../poly/ParamType").ParamType.BOOLEAN>;
    /** @param deletes objects by object type */
    byObjectType: import("../utils/params/ParamsConfig").ParamTemplate<import("../../poly/ParamType").ParamType.BOOLEAN>;
    /** @param sets which object types should be deleted */
    objectType: import("../utils/params/ParamsConfig").ParamTemplate<import("../../poly/ParamType").ParamType.INTEGER>;
    separatorObjectType: import("../utils/params/ParamsConfig").ParamTemplate<import("../../poly/ParamType").ParamType.SEPARATOR>;
    /** @param deletes objects by an expression */
    byExpression: import("../utils/params/ParamsConfig").ParamTemplate<import("../../poly/ParamType").ParamType.BOOLEAN>;
    /** @param sets the expression to select what should be deleted */
    expression: import("../utils/params/ParamsConfig").ParamTemplate<import("../../poly/ParamType").ParamType.BOOLEAN>;
    separatorExpression: import("../utils/params/ParamsConfig").ParamTemplate<import("../../poly/ParamType").ParamType.SEPARATOR>;
    /** @param deletes objects by an attribute */
    byAttrib: import("../utils/params/ParamsConfig").ParamTemplate<import("../../poly/ParamType").ParamType.BOOLEAN>;
    /** @param sets the type of the attribute for which items should be deleted */
    attribType: import("../utils/params/ParamsConfig").ParamTemplate<import("../../poly/ParamType").ParamType.INTEGER>;
    /** @param name of the attribute used */
    attribName: import("../utils/params/ParamsConfig").ParamTemplate<import("../../poly/ParamType").ParamType.STRING>;
    /** @param size of the attribute used */
    attribSize: import("../utils/params/ParamsConfig").ParamTemplate<import("../../poly/ParamType").ParamType.INTEGER>;
    /** @param comparison operator */
    attribComparisonOperator: import("../utils/params/ParamsConfig").ParamTemplate<import("../../poly/ParamType").ParamType.INTEGER>;
    /** @param value of the attribute to compare with (when using float attribute) */
    attribValue1: import("../utils/params/ParamsConfig").ParamTemplate<import("../../poly/ParamType").ParamType.FLOAT>;
    /** @param value of the attribute to compare with (when using vector2 attribute) */
    attribValue2: import("../utils/params/ParamsConfig").ParamTemplate<import("../../poly/ParamType").ParamType.VECTOR2>;
    /** @param value of the attribute to compare with (when using vector3 attribute) */
    attribValue3: import("../utils/params/ParamsConfig").ParamTemplate<import("../../poly/ParamType").ParamType.VECTOR3>;
    /** @param value of the attribute to compare with (when using vector4 attribute) */
    attribValue4: import("../utils/params/ParamsConfig").ParamTemplate<import("../../poly/ParamType").ParamType.VECTOR4>;
    /** @param value of the attribute to compare with (when using string attribute) */
    attribString: import("../utils/params/ParamsConfig").ParamTemplate<import("../../poly/ParamType").ParamType.STRING>;
    separatorAttrib: import("../utils/params/ParamsConfig").ParamTemplate<import("../../poly/ParamType").ParamType.SEPARATOR>;
    /** @param deletes objects that are inside a bounding box */
    byBbox: import("../utils/params/ParamsConfig").ParamTemplate<import("../../poly/ParamType").ParamType.BOOLEAN>;
    /** @param the bounding box size */
    bboxSize: import("../utils/params/ParamsConfig").ParamTemplate<import("../../poly/ParamType").ParamType.VECTOR3>;
    /** @param the bounding box center */
    bboxCenter: import("../utils/params/ParamsConfig").ParamTemplate<import("../../poly/ParamType").ParamType.VECTOR3>;
    separatorBbox: import("../utils/params/ParamsConfig").ParamTemplate<import("../../poly/ParamType").ParamType.SEPARATOR>;
    /** @param keeps points */
    keepPoints: import("../utils/params/ParamsConfig").ParamTemplate<import("../../poly/ParamType").ParamType.BOOLEAN>;
}
export declare class DeleteSopNode extends TypedSopNode<DeleteSopParamsConfig> {
    params_config: DeleteSopParamsConfig;
    static type(): string;
    private _marked_for_deletion_per_object_index;
    readonly entity_selection_helper: EntitySelectionHelper;
    readonly byBbox_helper: ByBboxHelper;
    readonly byExpression_helper: ByExpressionHelper;
    readonly byAttribute_helper: ByAttributeHelper;
    readonly byObjectType_helper: ByObjectTypeHelper;
    static displayedInputNames(): string[];
    initializeNode(): void;
    cook(input_contents: CoreGroup[]): Promise<void>;
    set_class(attrib_class: AttribClass): void;
    private _eval_for_objects;
    private _eval_for_points;
    private _point_object;
}
export {};
