/**
 * Sets the layer of the input objects
 *
 * @remarks
 * This should be combined with the layer of a camera. This will allow some objects to be only visible via some cameras.
 */
import { TypedSopNode } from './_Base';
import { NodeParamsConfig } from '../utils/params/ParamsConfig';
import { CoreGroup } from '../../../core/geometry/Group';
import { SopType } from '../../poly/registers/nodes/types/Sop';
export declare enum LayerUpdateMode {
    SET = "set",
    ADD = "add",
    REMOVE = "remove"
}
export declare const UPDATE_MODES: LayerUpdateMode[];
type AvailableLayerIndex = 0 | 1 | 2 | 3;
declare class LayerSopParamsConfig extends NodeParamsConfig {
    /** @param group to assign the material to */
    group: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.STRING>;
    layersCount: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
    /** @param updateMode */
    updateMode0: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
    /** @param layer */
    layer0: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
    /** @param updateMode */
    updateMode1: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
    /** @param layer */
    layer1: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
    /** @param updateMode */
    updateMode2: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
    /** @param layer */
    layer2: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
    /** @param updateMode */
    updateMode3: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
    /** @param layer */
    layer3: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
}
export declare class LayerSopNode extends TypedSopNode<LayerSopParamsConfig> {
    paramsConfig: LayerSopParamsConfig;
    static type(): SopType;
    initializeNode(): void;
    cook(inputCoreGroups: CoreGroup[]): void;
    private _updateLayers;
    private _updateLayer;
    setMode(index: AvailableLayerIndex, mode: LayerUpdateMode): void;
    setLayer(index: AvailableLayerIndex, layer: number): void;
}
export {};
