/**
 * Adds or remove parents from the object hierarchy.
 *
 * @remarks
 * This can be useful after importing a geometry from a File SOP, where the part we want to manipulate is under one or several parents. This allows to extract it to make it available for other nodes.
 */
import { TypedSopNode } from './_Base';
import { CoreGroup } from '../../../core/geometry/Group';
import { HierarchyMode, AddChildMode } from '../../operations/sop/Hierarchy';
export declare const MODES_WITH_LEVEL: HierarchyMode[];
import { NodeParamsConfig } from '../utils/params/ParamsConfig';
import { SopType } from '../../poly/registers/nodes/types/Sop';
declare class HierarchySopParamsConfig extends NodeParamsConfig {
    /** @param defines if parent objects will be added or removed */
    mode: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
    /** @param defines how many parent objects will be added or removed */
    levels: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
    /** @param when the mode is set to add_child, the mask defines which parent the children are added to. If the mask is an empty string, the children will be added to the objects at the top of the hierarchy. Also, the children are taken from the second input. */
    objectMask: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.STRING>;
    /** @param defines how the children are added to the parents */
    addChildMode: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
}
export declare class HierarchySopNode extends TypedSopNode<HierarchySopParamsConfig> {
    paramsConfig: HierarchySopParamsConfig;
    static type(): SopType;
    initializeNode(): void;
    private _operation;
    cook(inputCoreGroups: CoreGroup[]): void;
    setMode(mode: HierarchyMode): void;
    setAddChildMode(mode: AddChildMode): void;
}
export {};
