/**
 * Update a scene before some passes are rendered
 *
 * @remarks
 * The node can also be provided a second input, which has to be an UpdateScene post node.
 * This node will then be able to reset the changes made by this node.
 *
 */
import { TypedPostNode, TypedPostNodeContext } from './_Base';
import { NodeParamsConfig } from '../utils/params/ParamsConfig';
import { UpdateScenePass } from './utils/effects/UpdateScenePass';
import { CoreObjectType, ObjectContent } from '../../../core/geometry/ObjectContent';
import { PostType } from '../../poly/registers/nodes/types/Post';
declare class UpdateScenePostParamsConfig extends NodeParamsConfig {
    /** @param reset */
    reset: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
    /** @param objects Mask */
    objectsMask: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.STRING>;
    /** @param invertMask */
    invertMask: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
    /** @param prints which objects are targeted by this node, for debugging */
    /** @param update selected objects material to a matte one */
    setMatteMaterial: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
    /** @param set visible state  */
    setVisible: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
    /** @param set visible state  */
    visible: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
    /** @param reset */
    resetChanges: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BUTTON>;
}
export declare class UpdateScenePostNode extends TypedPostNode<UpdateScenePass, UpdateScenePostParamsConfig> {
    paramsConfig: UpdateScenePostParamsConfig;
    static type(): PostType;
    initializeNode(): void;
    createPass(context: TypedPostNodeContext): UpdateScenePass;
    updatePass(pass: UpdateScenePass): void;
    private _nodeToReset;
    static PARAM_CALLBACK_resetChanges(node: UpdateScenePostNode): void;
    private _objectsList;
    objectsList(): ObjectContent<CoreObjectType>[];
    private _materialByMesh;
    private _visibleByObject;
    applyChanges(): void;
    resetChanges(): void;
    private _updateObjectBound;
    private _updateObject;
}
export {};
