import type { EffectComposer } from "three/examples/jsm/postprocessing/EffectComposer";
import type { Renderer, WebGLRenderer } from "three/src/Three";
/**
 * webgl global object.
 *
 * you can use Unsafe API by casting this to `WebGLGlobalObject`
 */
export interface IReadonlyWebGLGlobalObject {
    get renderer(): Omit<Renderer, "domElement">;
    get webglRenderer(): WebGLRenderer | null;
    get effectComposer(): EffectComposer | null;
}
/**
 * webgl global object.
 */
export declare class WebGLGlobalObject implements IReadonlyWebGLGlobalObject {
    private readonly _renderer;
    private readonly _webglRenderer;
    private _effectComposer;
    constructor(renderer: Omit<Renderer, "domElement">, webglRenderer: WebGLRenderer | null);
    /**
     * get abstract renderer.
     */
    get renderer(): Omit<Renderer, "domElement">;
    /**
     * get webgl renderer.
     */
    get webglRenderer(): WebGLRenderer | null;
    /**
     * get effect composer.
     *
     * if you not use post process, this value is null.
     */
    get effectComposer(): EffectComposer | null;
    /**
     * set effect composer.
     *
     * this is unsafe API that use only for post process volume.
     */
    set effectComposer(effectComposer: EffectComposer | null);
}
