import { type RendererOptions } from "../Renderer";
import type { RenderDeviceDiagnostics } from "../RenderDevice";
import { type ProductionPixelMetrics, type ProductionRenderProof, type ProductionRendererFeature, type ProductionRendererInput, type CurrentRoutesProductionRenderer, type RuntimeParityFrameRenderResult } from "./ProductionRendererTypes";
export interface ProductionWebGL2RendererOptions extends Omit<RendererOptions, "backend"> {
    readonly canvas: HTMLCanvasElement | OffscreenCanvas;
    readonly width: number;
    readonly height: number;
}
export declare class ProductionWebGL2Renderer implements CurrentRoutesProductionRenderer {
    private readonly renderer;
    private width;
    private height;
    readonly backend: "webgl2";
    private constructor();
    static create(options: ProductionWebGL2RendererOptions): Promise<ProductionWebGL2Renderer>;
    renderInteractiveFrame(input: ProductionRendererInput): RuntimeParityFrameRenderResult;
    renderFrame(input: ProductionRendererInput): RuntimeParityFrameRenderResult;
    resize(width: number, height: number): void;
    captureProof(input: ProductionRendererInput): ProductionRenderProof;
    renderImportedAsset(input: ProductionRendererInput): ProductionRenderProof;
    getFeatures(diagnostics?: RenderDeviceDiagnostics, input?: ProductionRendererInput, pixels?: ProductionPixelMetrics): readonly ProductionRendererFeature[];
    getDiagnostics(): RenderDeviceDiagnostics;
    dispose(): void;
    private validateImportedAsset;
    private getInteractiveFeatures;
}
export declare function summarizeProductionWebGL2Proof(proof: ProductionRenderProof): {
    pass: boolean;
    missing: ("pixel-readback" | "real-webgl2-context" | "no-canvas2d-proof" | "no-mock-device" | "imported-gltf-render-source" | "pbr-materials" | "texture-upload-diagnostics" | "render-target-diagnostics" | "draw-call-diagnostics" | "hdr-ibl-ready")[];
    drawCalls: number;
    liveTextures: number;
    textureBytes: number;
    nonBlackPixels: number;
    averageLuma: number;
    maxLuma: number;
    uniqueColorBuckets: number;
};
export declare function summarizeProductionProductionProof(proof: ProductionRenderProof): {
    pass: boolean;
    backend: import("./ProductionRendererTypes").ProductionRendererBackend;
    missing: ("pixel-readback" | "real-webgl2-context" | "no-canvas2d-proof" | "no-mock-device" | "imported-gltf-render-source" | "pbr-materials" | "texture-upload-diagnostics" | "render-target-diagnostics" | "draw-call-diagnostics" | "hdr-ibl-ready" | "real-webgpu-context" | "native-webgpu-render-pipeline" | "native-webgpu-sampled-textures" | "native-webgpu-texture-readback" | "native-webgpu-pbr-submissions")[];
    drawCalls: number;
    liveTextures: number;
    textureBytes: number;
    nonBlackPixels: number;
    averageLuma: number;
    maxLuma: number;
    uniqueColorBuckets: number;
};
export declare function analyzePixels(pixels: Uint8Array, width: number, height: number): ProductionPixelMetrics;
//# sourceMappingURL=ProductionWebGL2Renderer.d.ts.map