/** @packageDocumentation
 * @module WebGL
 */
import { SceneContext } from "../../ViewContext";
import { ViewRect } from "../../common/ViewRect";
import { Pixel } from "../Pixel";
import { GraphicList } from "../RenderGraphic";
import { RenderMemory } from "../RenderMemory";
import { CachedGeometry } from "./CachedGeometry";
import { WebGLDisposable } from "./Disposable";
import { FrameBuffer } from "./FrameBuffer";
import { RenderCommands } from "./RenderCommands";
import { SolarShadowMap } from "./SolarShadowMap";
import { Target } from "./Target";
import { TextureHandle } from "./Texture";
import { Primitive } from "./Primitive";
import { ShaderProgramExecutor } from "./ShaderProgram";
import { EyeDomeLighting } from "./EDL";
export declare function collectTextureStatistics(texture: TextureHandle | undefined, stats: RenderMemory.Statistics): void;
export declare function collectGeometryStatistics(geom: CachedGeometry | undefined, stats: RenderMemory.Statistics): void;
/** Orchestrates rendering of the scene on behalf of a Target.
 * This base class exists only so we don't have to export all the types of the shared Compositor members like Textures, FrameBuffers, etc.
 * @internal
 */
export declare abstract class SceneCompositor implements WebGLDisposable, RenderMemory.Consumer {
    readonly target: Target;
    readonly solarShadowMap: SolarShadowMap;
    readonly eyeDomeLighting: EyeDomeLighting;
    protected _needHiddenEdges: boolean;
    abstract get isDisposed(): boolean;
    abstract dispose(): void;
    abstract preDraw(): void;
    abstract draw(_commands: RenderCommands): void;
    abstract drawForReadPixels(_commands: RenderCommands, sceneOverlays: GraphicList, worldOverlayDecorations: GraphicList | undefined, viewOverlayDecorations: GraphicList | undefined): void;
    abstract readPixels(rect: ViewRect, selector: Pixel.Selector): Pixel.Buffer | undefined;
    abstract readDepthAndOrder(rect: ViewRect): Uint8Array | undefined;
    abstract readFeatureIds(rect: ViewRect): Uint8Array | undefined;
    abstract updateSolarShadows(context: SceneContext | undefined): void;
    abstract drawPrimitive(primitive: Primitive, exec: ShaderProgramExecutor, outputsToPick: boolean): void;
    abstract forceBufferChange(): void;
    /** Obtain a framebuffer with a single spare RGBA texture that can be used for screen-space effect shaders. */
    abstract get screenSpaceEffectFbo(): FrameBuffer;
    abstract get featureIds(): TextureHandle;
    abstract get depthAndOrder(): TextureHandle;
    abstract get antialiasSamples(): number;
    get needHiddenEdges(): boolean;
    protected constructor(target: Target);
    static create(target: Target): SceneCompositor;
    abstract collectStatistics(stats: RenderMemory.Statistics): void;
}
//# sourceMappingURL=SceneCompositor.d.ts.map