import type { Pass } from "three/examples/jsm/postprocessing/EffectComposer";
import { Component } from "../../hierarchy_object/Component";
import type { IReadonlyGameScreen } from "../../render/IReadonlyGameScreen";
export declare class WebGLGlobalPostProcessVolume extends Component {
    private _renderPass;
    private _effectComposer;
    private _willAddRenderPass;
    private _reInitializeWhenCameraChanged;
    private _reinitializeWhenScreenSizeChanged;
    private _passes;
    private _initializer;
    private _disposer;
    private readonly onCameraChanged;
    private readonly onScreenResize;
    onEnable(): void;
    onDisable(): void;
    private removeAndDisposePasses;
    private initializeEffectComposer;
    /**
     * set initializer for effect composer. this callback will be called multiple times when switching camera. or when screen size is changed.
     *
     * i recommend you make this callback as pure function.
     * @param initializer its return value is tuple of passes and disposer. you must dispose passes in disposer.
     */
    initializer(initializer: (scene: THREE.Scene, camera: THREE.Camera, screen: IReadonlyGameScreen) => readonly [readonly Pass[], (() => void)?]): void;
    /**
     * if true, render pass will be added to effect composer.
     * this value is only available before onEnable method is called.
     */
    get willAddRenderPass(): boolean;
    /**
     * if true, render pass will be added to effect composer.
     * this value is only available before onEnable method is called.
     */
    set willAddRenderPass(value: boolean);
    /**
     * if true, effect composer will be reinitialized when current camera is changed.
     */
    get reInitializeWhenCameraChanged(): boolean;
    /**
     * if true, effect composer will be reinitialized when current camera is changed.
     */
    set reInitializeWhenCameraChanged(value: boolean);
    /**
     * if true, effect composer will be reinitialized when screen size is changed.
     */
    get reinitializeWhenScreenSizeChanged(): boolean;
    /**
     * if true, effect composer will be reinitialized when screen size is changed.
     */
    set reinitializeWhenScreenSizeChanged(value: boolean);
}
