import { type ProductionRuntimeRendererBackendPreference, type ProductionRuntimeRendererBackendSelection } from "../production-runtime/ProductionRuntimeRenderer";
import type { ProductionRendererInput, RuntimeParityFrameRenderResult } from "../production-runtime/ProductionRendererTypes";
import type { RenderDeviceDiagnostics } from "../RenderDevice";
import type { RendererPostProcessOptions } from "../Renderer";
export interface CurrentRoutesInteractiveRendererOptions {
    readonly canvas: HTMLCanvasElement | OffscreenCanvas;
    readonly width: number;
    readonly height: number;
    readonly backend?: ProductionRuntimeRendererBackendPreference;
    readonly preserveDrawingBuffer?: boolean;
    readonly errorCheckMode?: "strict" | "frame";
    readonly clearColor?: readonly [number, number, number, number];
}
export interface CurrentRoutesRuntimeMetrics {
    readonly frameCount: number;
    readonly lastFrameMs: number;
    readonly averageFrameMs: number;
    readonly lastRenderMs: number;
    readonly averageRenderMs: number;
    readonly drawCalls: number;
    readonly textures: number;
    readonly buffers: number;
    readonly shaders: number;
    readonly backend: "webgl2" | "webgpu";
    readonly stateCacheIssued?: number;
    readonly stateCacheSkipped?: number;
    readonly stateCacheProgramSwitches?: number;
    readonly stateCacheTextureBinds?: number;
    readonly stateCacheBufferBinds?: number;
    readonly stateCacheVertexArrayBinds?: number;
    readonly stateCacheSamplerBinds?: number;
}
export interface CurrentRoutesScreenshot {
    readonly mimeType: "image/png";
    readonly dataUrl: string;
    readonly width: number;
    readonly height: number;
}
export declare class CurrentRoutesInteractiveRenderer {
    private readonly renderer;
    readonly canvas: HTMLCanvasElement | OffscreenCanvas;
    readonly backend: "webgl2" | "webgpu";
    readonly backendSelection: ProductionRuntimeRendererBackendSelection;
    private readonly metrics;
    private constructor();
    static create(options: CurrentRoutesInteractiveRendererOptions): Promise<CurrentRoutesInteractiveRenderer>;
    renderFrame(input: ProductionRendererInput): Promise<RuntimeParityFrameRenderResult>;
    resize(width: number, height: number): void;
    getDiagnostics(): RenderDeviceDiagnostics;
    getMetrics(): CurrentRoutesRuntimeMetrics;
    screenshot(): CurrentRoutesScreenshot;
    dispose(): void;
}
export declare function createCurrentRoutesInteractiveRenderer(options: CurrentRoutesInteractiveRendererOptions): Promise<CurrentRoutesInteractiveRenderer>;
export declare function createCurrentRoutesPostprocess(exposure: number): RendererPostProcessOptions;
export declare function captureCurrentRoutesCanvasScreenshot(canvas: HTMLCanvasElement | OffscreenCanvas): CurrentRoutesScreenshot;
//# sourceMappingURL=index.d.ts.map