import { BloomEffect, EffectComposer, EffectPass, ToneMappingEffect } from "postprocessing";
import { PerspectiveCamera, Scene, Vector2, WebGLRenderer } from "three";
import { TimeManager } from "../time/TimeManager";
import { BrightnessContrastSaturation } from "./post-effects/bright-contrast-sat";
import { GaussGrainEffect } from "./post-effects/gauss-grain";
import { N8SSAOPass } from "./post-effects/n8-ssao/N8SSAOPass";
export declare const PP_GLOBALLY_ENABLED = false;
export interface EffectState {
    name: string;
    enabled: boolean;
    wasEnabledBeforeGlobalDisable: boolean;
    instance: any;
    passIndex?: number;
}
export interface PostProcessingConfig {
    enabled?: boolean;
    bloom?: {
        intensity?: number;
    };
    bcs?: {
        brightness?: number;
        contrast?: number;
        saturation?: number;
    };
    grain?: {
        amount?: number;
    };
    ssao?: {
        enabled?: boolean;
        halfRes?: boolean;
        aoRadius?: number;
        distanceFalloff?: number;
        intensity?: number;
        aoSamples?: number;
        denoiseSamples?: number;
        denoiseRadius?: number;
    };
    toneMapping?: {
        mode?: number;
        resolution?: number;
        whitePoint?: number;
        middleGrey?: number;
        minLuminance?: number;
        averageLuminance?: number;
        adaptationRate?: number;
    };
}
export declare class PostProcessingManager {
    private renderer;
    private scene;
    private camera;
    private width;
    private height;
    isGloballyEnabled: boolean;
    effectComposer: EffectComposer;
    private effectStates;
    private renderPass;
    private fxaaEffect;
    private fxaaPass;
    private bloomEffect;
    private bloomPass;
    private toneMappingEffect;
    private toneMappingPass;
    private n8aopass;
    private bcs;
    private bcsPass;
    private gaussGrainEffect;
    private gaussGrainPass;
    resolution: Vector2;
    constructor(renderer: WebGLRenderer, scene: Scene, camera: PerspectiveCamera, width: number, height: number, initialConfig?: PostProcessingConfig);
    private initializeEffects;
    private registerEffect;
    private setupPipeline;
    private rebuildPipeline;
    enableEffect(name: string): void;
    disableEffect(name: string): void;
    toggleGlobalPostProcessing(enabled?: boolean): void;
    updateEffectConfiguration(config: PostProcessingConfig): void;
    updateCamera(camera: PerspectiveCamera): void;
    resizeActiveEffects(width: number, height: number): void;
    render(timeManager: TimeManager): void;
    getEffectState(name: string): EffectState | undefined;
    getAllEffectStates(): EffectState[];
    isEffectEnabled(name: string): boolean;
    get n8ssaoPass(): N8SSAOPass;
    get toneMappingEffectInstance(): ToneMappingEffect;
    get toneMappingPassInstance(): EffectPass;
    get bcsInstance(): typeof BrightnessContrastSaturation;
    get bloomEffectInstance(): BloomEffect;
    get gaussGrainEffectInstance(): typeof GaussGrainEffect;
    dispose(): void;
}
//# sourceMappingURL=PostProcessingManager.d.ts.map