import { Constructor, valueof } from '../../../../types/GlobalTypes';
import { WebGLRenderer, Scene, Camera, UnsignedByteType, HalfFloatType, FloatType } from 'three';
import { EffectComposer, Pass } from 'postprocessing';
import { DisplayNodeController, DisplayNodeControllerCallbacks } from '../../utils/DisplayNodeController';
import { PostNodeChildrenMap } from '../../../poly/registers/nodes/Post';
import { BaseNodeType, TypedNode } from '../../_Base';
import { BasePostProcessNodeType } from '../_Base';
import { NodeParamsConfig } from '../../utils/params/ParamsConfig';
import { BaseViewerType } from '../../../viewers/_Base';
import { WithPolyId } from '../../../poly/RenderersController';
export interface POLYEffectComposer extends EffectComposer, WithPolyId {
}
export type PostProcessingTextureType = typeof UnsignedByteType | typeof HalfFloatType | typeof FloatType;
export declare function postProcessTextureTypeLabel(value: number): string | undefined;
export declare function PostProcessNetworkParamsConfigMixin<TBase extends Constructor>(Base: TBase): {
    new (...args: any[]): {
        prependRenderPass: import("../../utils/params/ParamsConfig").ParamTemplate<import("../../../index_all").ParamType.BOOLEAN>;
        depthBuffer: import("../../utils/params/ParamsConfig").ParamTemplate<import("../../../index_all").ParamType.BOOLEAN>;
        stencilBuffer: import("../../utils/params/ParamsConfig").ParamTemplate<import("../../../index_all").ParamType.BOOLEAN>;
        sampling: import("../../utils/params/ParamsConfig").ParamTemplate<import("../../../index_all").ParamType.INTEGER>;
        tTextureType: import("../../utils/params/ParamsConfig").ParamTemplate<import("../../../index_all").ParamType.BOOLEAN>;
        textureType: import("../../utils/params/ParamsConfig").ParamTemplate<import("../../../index_all").ParamType.INTEGER>;
    };
} & TBase;
declare const PostProcessNetworkParamsConfig_base: {
    new (...args: any[]): {
        prependRenderPass: import("../../utils/params/ParamsConfig").ParamTemplate<import("../../../index_all").ParamType.BOOLEAN>;
        depthBuffer: import("../../utils/params/ParamsConfig").ParamTemplate<import("../../../index_all").ParamType.BOOLEAN>;
        stencilBuffer: import("../../utils/params/ParamsConfig").ParamTemplate<import("../../../index_all").ParamType.BOOLEAN>;
        sampling: import("../../utils/params/ParamsConfig").ParamTemplate<import("../../../index_all").ParamType.INTEGER>;
        tTextureType: import("../../utils/params/ParamsConfig").ParamTemplate<import("../../../index_all").ParamType.BOOLEAN>;
        textureType: import("../../utils/params/ParamsConfig").ParamTemplate<import("../../../index_all").ParamType.INTEGER>;
    };
} & typeof NodeParamsConfig;
export declare class PostProcessNetworkParamsConfig extends PostProcessNetworkParamsConfig_base {
}
export interface BaseNetworkPostProcessNodeType extends TypedNode<any, PostProcessNetworkParamsConfig> {
    readonly displayNodeController: DisplayNodeController;
    createNode<S extends keyof PostNodeChildrenMap>(node_class: S): PostNodeChildrenMap[S];
    createNode<K extends valueof<PostNodeChildrenMap>>(node_class: Constructor<K>): K;
    children(): BasePostProcessNodeType[];
    nodesByType<K extends keyof PostNodeChildrenMap>(type: K): PostNodeChildrenMap[K][];
    readonly effectsComposerController: EffectComposerController;
}
interface CreateEffectsComposerOptions {
    renderer: WebGLRenderer;
    scene: Scene;
    camera: Camera;
    viewer: BaseViewerType;
}
export interface RenderTargetCreateOptions {
    width: number;
    height: number;
}
export declare class EffectComposerController {
    private node;
    private _composerAndOptionsByCamera;
    constructor(node: BaseNetworkPostProcessNodeType);
    displayNodeControllerCallbacks(): DisplayNodeControllerCallbacks;
    private _nextId;
    createEffectsComposer(options: CreateEffectsComposerOptions): EffectComposer;
    createEffectsComposerAndBuildPasses(options: CreateEffectsComposerOptions): EffectComposer;
    private _updateComposers;
    private _passByNodeInBuildPassesProcess;
    addPassByNodeInBuildPassesProcess(node: BaseNodeType, pass: Pass, composer: EffectComposer): void;
    private _buildPasses;
}
export {};
