import { Effect, EffectComposer, Pass } from "postprocessing";
import { Context } from "../../engine/engine_setup.js";
import type { Constructor } from "../../engine/engine_types.js";
import { PostProcessingEffect } from "./PostProcessingEffect.js";
/**
 * PostProcessingHandler is responsible for applying post processing effects to the scene. It is internally used by the {@link Volume} component
 */
export declare class PostProcessingHandler {
    private _composer;
    private _lastVolumeComponents?;
    private _effects;
    get isActive(): boolean;
    get composer(): EffectComposer | null;
    private _isActive;
    private readonly context;
    constructor(context: Context);
    apply(components: PostProcessingEffect[]): void;
    unapply(): void;
    dispose(): void;
    private onApply;
    /** Build composer passes */
    private applyEffects;
    private orderEffects;
}
export declare const effectsOrder: Array<Constructor<Effect | Pass>>;
