import { IUniform, RenderTargetOptions, ShadowMapType, Vector2, Vector4, WebGLRenderer, WebGLRenderTarget, WebGLShadowMap } from 'three';
import { EffectComposer2, IPassID, IPipelinePass } from '../postprocessing';
import { IRenderTarget } from './RenderTarget';
import { RenderTargetManager } from './RenderTargetManager';
import { IShaderPropertiesUpdater } from '../materials';
import { IRenderManager, IRenderManagerOptions, IScene, ITexture, IWebGLRenderer } from '../core';
import { Class } from 'ts-browser-helpers';
import { UiObjectConfig } from 'uiconfig.js';
import { BlobExt } from '../assetmanager';
import { IRenderManagerEventMap, RendererBlitOptions } from '../core/IRenderer';
export declare class RenderManager<TE extends IRenderManagerEventMap = IRenderManagerEventMap> extends RenderTargetManager<IRenderManagerEventMap & TE> implements IShaderPropertiesUpdater, IRenderManager<IRenderManagerEventMap & TE> {
    private readonly _isWebGL2;
    private readonly _composer;
    private readonly _context;
    private readonly _renderSize;
    protected readonly _renderer: IWebGLRenderer<this>;
    private _renderScale;
    get renderScale(): number;
    set renderScale(value: number);
    shadowMapType: ShadowMapType;
    shadowMap: WebGLShadowMap;
    private _shadowMapTypeChanged;
    private _passes;
    private _pipeline;
    private _passesNeedsUpdate;
    private _frameCount;
    private _lastTime;
    private _totalFrameCount;
    static readonly POWER_PREFERENCE: WebGLPowerPreference;
    get renderer(): IWebGLRenderer<this>;
    /**
     * Use total frame count, if this is set to true, then frameCount won't be reset when the viewer is set to dirty.
     * Which will generate different random numbers for each frame during postprocessing steps. With TAA set properly, this will give a smoother result.
     */
    stableNoise: boolean;
    frameWaitTime: number;
    protected _dirty: boolean;
    /**
     * Set autoBuildPipeline = false to be able to set the pipeline manually.
     */
    autoBuildPipeline: boolean;
    rebuildPipeline(setDirty?: boolean): void;
    /**
     * Regenerates the render pipeline by resolving dependencies and sorting the passes.
     * This is called automatically when the passes are changed.
     */
    private _refreshPipeline;
    animationLoop(time: number, frame?: XRFrame): void;
    constructor({ canvas, alpha, renderScale, powerPreference, targetOptions }: IRenderManagerOptions);
    protected _initWebGLRenderer(canvas: HTMLCanvasElement, alpha: boolean, stencil: boolean, powerPreference?: WebGLPowerPreference): IWebGLRenderer<this>;
    setSize(width?: number, height?: number, force?: boolean): void;
    /**
     * Default value for renderToScreen in {@link render}
     */
    defaultRenderToScreen: boolean;
    render(scene: IScene, renderToScreen?: boolean): void;
    incRenderToScreen(): void;
    onPostFrame: () => void;
    get needsRender(): boolean;
    setDirty(reset?: boolean): void;
    reset(): void;
    resetShadows(): void;
    refreshPasses(): void;
    dispose(clear?: boolean): void;
    updateShaderProperties(material: {
        defines: Record<string, string | number | undefined>;
        uniforms: {
            [name: string]: IUniform;
        };
    }): this;
    registerPass(pass: IPipelinePass, replaceId?: boolean): void;
    unregisterPass(pass: IPipelinePass): void;
    get frameCount(): number;
    get totalFrameCount(): number;
    resetTotalFrameCount(): void;
    set pipeline(value: IPassID[]);
    get pipeline(): IPassID[];
    get composer(): EffectComposer2;
    get passes(): IPipelinePass[];
    get isWebGL2(): boolean;
    get composerTarget(): IRenderTarget;
    get composerTarget2(): IRenderTarget;
    /**
     * The size set in the three.js renderer.
     * Final size is renderSize * renderScale
     */
    get renderSize(): Vector2;
    get context(): WebGLRenderingContext;
    /**
     * Same as {@link renderer}
     */
    get webglRenderer(): WebGLRenderer;
    /**
     * @deprecated will be removed in the future
     */
    get useLegacyLights(): boolean;
    set useLegacyLights(v: boolean);
    get clock(): import('three').Clock;
    /**
     * blit - blits a texture to the screen or another render target.
     * @param destination - destination target, or screen if undefined or null
     * @param source - source Texture
     * @param viewport - viewport and scissor
     * @param material - override material
     * @param clear - clear before blit
     * @param respectColorSpace - does color space conversion when reading and writing to the target
     * @param blending - Note - Set to NormalBlending if transparent is set to false
     * @param transparent
     * @param opacity - opacity of the material, if not set, uses the material's opacity
     * @param blendAlpha - custom blending factor, if set, overrides blending. The material will use CustomBlending with ConstantAlphaFactor and OneMinusConstantAlphaFactor, useful to blend between textures.
     */
    blit(destination: IRenderTarget | undefined | null, { source, viewport, material, clear, respectColorSpace, blending, transparent, opacity, blendAlpha }?: RendererBlitOptions): void;
    clearColor({ r, g, b, a, target, depth, stencil, viewport }: {
        r?: number;
        g?: number;
        b?: number;
        a?: number;
        target?: IRenderTarget;
        depth?: boolean;
        stencil?: boolean;
        viewport?: Vector4;
    }): void;
    /**
     * If target is a `{texture}` / `{textures}` wrapper without framebuffer dimensions,
     * blits the texture to a temporary render target and calls the callback with it.
     * Otherwise returns undefined (caller should proceed with the original target).
     */
    private _withResolvedTarget;
    /**
     * Copies a render target to a new/existing canvas element.
     * Also supports `{texture}` or `{textures}` wrappers — these are blitted to a temporary render target first.
     * Note: this will clamp the values to [0, 1] and converts to srgb for float and half-float render targets.
     * @param target
     * @param textureIndex - index of the texture to use in the render target (only in case of multiple render target)
     * @param canvas - optional canvas to render to, if not provided a new canvas will be created.
     */
    renderTargetToCanvas(target: WebGLRenderTarget | IRenderTarget | {
        texture?: ITexture;
        textures?: ITexture[];
    }, textureIndex?: number, canvas?: HTMLCanvasElement): HTMLCanvasElement;
    /**
     * Converts a render target to a png/jpeg data url string.
     * Note: this will clamp the values to [0, 1] and converts to srgb for float and half-float render targets.
     * @param target
     * @param mimeType
     * @param quality
     * @param textureIndex - index of the texture to use in the render target (only in case of multiple render target)
     */
    renderTargetToDataUrl(target: WebGLRenderTarget | IRenderTarget | {
        texture?: ITexture;
        textures?: ITexture[];
    }, mimeType?: string, quality?: number, textureIndex?: number): string;
    /**
     * Rend pixels from a render target into a new Uint8Array|Uint16Array|Float32Array buffer
     * @param target - render target to read from
     * @param textureIndex - index of the texture to use in the render target (only in case of multiple render target)
     */
    renderTargetToBuffer(target: WebGLRenderTarget, textureIndex?: number): Uint8Array | Uint16Array | Float32Array;
    /**
     * Exports a render target to a blob. The type is automatically picked from exr to png based on the render target.
     * Also supports `{texture}` or `{textures}` wrappers — these are blitted to a temporary color render target for export.
     * @param target - render target to export, or a `{texture}` / `{textures}` wrapper
     * @param mimeType - mime type to use.
     * If auto (default), then it will be picked based on the render target type.
     * @param textureIndex - index of the texture to use in the render target (only in case of multiple render target)
     */
    exportRenderTarget(target: WebGLRenderTarget | IRenderTarget | {
        texture?: ITexture;
        textures?: ITexture[];
    }, mimeType?: string, textureIndex?: number): BlobExt;
    uiConfig?: UiObjectConfig;
    private _updated;
    protected _createTargetClass(clazz: Class<WebGLRenderTarget>, size: number[], options: RenderTargetOptions): IRenderTarget;
    static ShaderChunk: {
        alphahash_fragment: string;
        alphahash_pars_fragment: string;
        alphamap_fragment: string;
        alphamap_pars_fragment: string;
        alphatest_fragment: string;
        alphatest_pars_fragment: string;
        aomap_fragment: string;
        aomap_pars_fragment: string;
        batching_pars_vertex: string;
        begin_vertex: string;
        beginnormal_vertex: string;
        bsdfs: string;
        iridescence_fragment: string;
        bumpmap_pars_fragment: string;
        clipping_planes_fragment: string;
        clipping_planes_pars_fragment: string;
        clipping_planes_pars_vertex: string;
        clipping_planes_vertex: string;
        color_fragment: string;
        color_pars_fragment: string;
        color_pars_vertex: string;
        color_vertex: string;
        common: string;
        cube_uv_reflection_fragment: string;
        defaultnormal_vertex: string;
        displacementmap_pars_vertex: string;
        displacementmap_vertex: string;
        emissivemap_fragment: string;
        emissivemap_pars_fragment: string;
        colorspace_fragment: string;
        colorspace_pars_fragment: string;
        envmap_fragment: string;
        envmap_common_pars_fragment: string;
        envmap_pars_fragment: string;
        envmap_pars_vertex: string;
        envmap_physical_pars_fragment: string;
        envmap_vertex: string;
        fog_vertex: string;
        fog_pars_vertex: string;
        fog_fragment: string;
        fog_pars_fragment: string;
        gradientmap_pars_fragment: string;
        lightmap_fragment: string;
        lightmap_pars_fragment: string;
        lights_lambert_fragment: string;
        lights_lambert_pars_fragment: string;
        lights_pars_begin: string;
        lights_toon_fragment: string;
        lights_toon_pars_fragment: string;
        lights_phong_fragment: string;
        lights_phong_pars_fragment: string;
        lights_physical_fragment: string;
        lights_physical_pars_fragment: string;
        lights_fragment_begin: string;
        lights_fragment_maps: string;
        lights_fragment_end: string;
        logdepthbuf_fragment: string;
        logdepthbuf_pars_fragment: string;
        logdepthbuf_pars_vertex: string;
        logdepthbuf_vertex: string;
        map_fragment: string;
        map_pars_fragment: string;
        map_particle_fragment: string;
        map_particle_pars_fragment: string;
        metalnessmap_fragment: string;
        metalnessmap_pars_fragment: string;
        morphcolor_vertex: string;
        morphnormal_vertex: string;
        morphtarget_pars_vertex: string;
        morphtarget_vertex: string;
        normal_fragment_begin: string;
        normal_fragment_maps: string;
        normal_pars_fragment: string;
        normal_pars_vertex: string;
        normal_vertex: string;
        normalmap_pars_fragment: string;
        clearcoat_normal_fragment_begin: string;
        clearcoat_normal_fragment_maps: string;
        clearcoat_pars_fragment: string;
        iridescence_pars_fragment: string;
        opaque_fragment: string;
        packing: string;
        premultiplied_alpha_fragment: string;
        project_vertex: string;
        dithering_fragment: string;
        dithering_pars_fragment: string;
        roughnessmap_fragment: string;
        roughnessmap_pars_fragment: string;
        shadowmap_pars_fragment: string;
        shadowmap_pars_vertex: string;
        shadowmap_vertex: string;
        shadowmask_pars_fragment: string;
        skinbase_vertex: string;
        skinning_pars_vertex: string;
        skinning_vertex: string;
        skinnormal_vertex: string;
        specularmap_fragment: string;
        specularmap_pars_fragment: string;
        tonemapping_fragment: string;
        tonemapping_pars_fragment: string;
        transmission_fragment: string;
        transmission_pars_fragment: string;
        uv_pars_fragment: string;
        uv_pars_vertex: string;
        uv_vertex: string;
        worldpos_vertex: string;
        background_vert: string;
        background_frag: string;
        backgroundCube_vert: string;
        backgroundCube_frag: string;
        cube_vert: string;
        cube_frag: string;
        depth_vert: string;
        depth_frag: string;
        distanceRGBA_vert: string;
        distanceRGBA_frag: string;
        equirect_vert: string;
        equirect_frag: string;
        linedashed_vert: string;
        linedashed_frag: string;
        meshbasic_vert: string;
        meshbasic_frag: string;
        meshlambert_vert: string;
        meshlambert_frag: string;
        meshmatcap_vert: string;
        meshmatcap_frag: string;
        meshnormal_vert: string;
        meshnormal_frag: string;
        meshphong_vert: string;
        meshphong_frag: string;
        meshphysical_vert: string;
        meshphysical_frag: string;
        meshtoon_vert: string;
        meshtoon_frag: string;
        points_vert: string;
        points_frag: string;
        shadow_vert: string;
        shadow_frag: string;
        sprite_vert: string;
        sprite_frag: string;
    };
    static ShaderLib: {
        [name: string]: import('three').ShaderLibShader;
        basic: import('three').ShaderLibShader;
        lambert: import('three').ShaderLibShader;
        phong: import('three').ShaderLibShader;
        standard: import('three').ShaderLibShader;
        matcap: import('three').ShaderLibShader;
        points: import('three').ShaderLibShader;
        dashed: import('three').ShaderLibShader;
        depth: import('three').ShaderLibShader;
        normal: import('three').ShaderLibShader;
        sprite: import('three').ShaderLibShader;
        background: import('three').ShaderLibShader;
        cube: import('three').ShaderLibShader;
        equirect: import('three').ShaderLibShader;
        distanceRGBA: import('three').ShaderLibShader;
        shadow: import('three').ShaderLibShader;
        physical: import('three').ShaderLibShader;
    };
    /**
     * @deprecated use renderScale instead
     */
    get displayCanvasScaling(): number;
    /**
     * @deprecated use renderScale instead
     */
    set displayCanvasScaling(value: number);
}
//# sourceMappingURL=../src/rendering/RenderManager.d.ts.map