import { Camera, Scene, WebGLRenderer } from 'three';
import { TypedNode } from '../_Base';
import { EffectComposer, Pass } from 'postprocessing';
import { NodeContext } from '../../poly/NodeContext';
import { NodeParamsConfig } from '../utils/params/ParamsConfig';
import { FlagsControllerDB } from '../utils/FlagsController';
import { ParamOptions } from '../../params/utils/OptionsController';
import { BaseNetworkPostProcessNodeType, EffectComposerController } from './utils/EffectComposerController';
import { BaseViewerType } from '../../viewers/_Base';
export interface TypedPostNodeContext {
    composerController: EffectComposerController;
    composer: EffectComposer;
    camera: Camera;
    renderer: WebGLRenderer;
    scene: Scene;
    viewer: BaseViewerType;
}
export declare const PostParamOptions: ParamOptions;
/**
 *
 *
 * TypedPostNode is the base class for all nodes that create post-processing passes. This inherits from [TypedNode](/docs/api/TypedNode).
 *
 */
export declare class TypedPostNode<P extends Pass, K extends NodeParamsConfig> extends TypedNode<NodeContext.POST, K> {
    static context(): NodeContext;
    readonly flags: FlagsControllerDB;
    protected _passesByEffectsComposer: Map<EffectComposer, P | P[]>;
    initializeNode(): void;
    cook(): void;
    setupComposer(context: TypedPostNodeContext): void;
    protected _setupComposerIfActive(context: TypedPostNodeContext): void;
    passesByComposer(composer: EffectComposer): P | P[] | undefined;
    protected _addPassFromInput(index: number, context: TypedPostNodeContext): void;
    createPassForContext(context: TypedPostNodeContext): P | P[] | undefined;
    createPass(context: TypedPostNodeContext): P | P[] | undefined;
    static PARAM_CALLBACK_updatePasses(node: BasePostProcessNodeType): void;
    protected _updatePasses(): void;
    protected updatePass(pass: P): void;
    protected _postProcessNetworkNode(): BaseNetworkPostProcessNodeType;
}
export type BasePostProcessNodeType = TypedPostNode<Pass, NodeParamsConfig>;
export declare class BasePostProcessNodeClass extends TypedPostNode<Pass, NodeParamsConfig> {
}
