import { type RendererOptions } from "../Renderer";
import type { RenderDeviceDiagnostics } from "../RenderDevice";
import { type ProductionWebGL2RendererOptions } from "./ProductionWebGL2Renderer";
import type { ProductionPixelMetrics, ProductionProductionRenderer, ProductionRenderProof, ProductionRendererFeature, ProductionRendererInput, RuntimeParityFrameRenderResult } from "./ProductionRendererTypes";
export type ProductionWebGPUStatus = "available" | "unavailable" | "blocked";
export interface ProductionWebGPURendererOptions extends Omit<RendererOptions, "backend"> {
    readonly canvas?: HTMLCanvasElement | OffscreenCanvas;
    readonly width: number;
    readonly height: number;
}
export declare class ProductionWebGPURenderer implements ProductionProductionRenderer {
    private readonly renderer;
    private readonly width;
    private readonly height;
    readonly backend: "webgpu";
    private constructor();
    static create(options: ProductionWebGPURendererOptions | ProductionWebGL2RendererOptions): Promise<ProductionWebGPURenderer>;
    renderFrame(input: ProductionRendererInput): RuntimeParityFrameRenderResult;
    renderFrameAsync(input: ProductionRendererInput): Promise<RuntimeParityFrameRenderResult>;
    renderImportedAsset(input: ProductionRendererInput): ProductionRenderProof;
    renderImportedAssetAsync(input: ProductionRendererInput): Promise<ProductionRenderProof>;
    getFeatures(diagnostics?: RenderDeviceDiagnostics, input?: ProductionRendererInput, pixels?: ProductionPixelMetrics): readonly ProductionRendererFeature[];
    getDiagnostics(): RenderDeviceDiagnostics;
    dispose(): void;
    private validateImportedAsset;
    private createProofTarget;
    private createProof;
}
export interface ProductionWebGPUReport {
    readonly schema: "a3d-production-runtime-webgpu-report";
    readonly status: ProductionWebGPUStatus;
    readonly adapterName: string | null;
    readonly preferredFormat: string | null;
    readonly canCreateDevice: boolean;
    readonly realHardwareRequiredForParity: true;
    readonly doesNotBlockWebGL2Production: true;
    readonly warnings: readonly string[];
}
export interface ProductionWebGPUReadinessItem {
    readonly id: string;
    readonly status: "ready" | "missing" | "blocked";
    readonly evidence: string;
}
export interface ProductionWebGPUReadinessReport {
    readonly schema: "a3d-production-runtime-webgpu-readiness";
    readonly availability: ProductionWebGPUReport;
    readonly productionBackend: "webgpu-production-sdk-path";
    readonly primaryRendererClaim: true;
    readonly safetyChecks: readonly ProductionWebGPUReadinessItem[];
    readonly requiredForCompletion: readonly ProductionWebGPUReadinessItem[];
    readonly blockers: readonly string[];
}
export interface ProductionWebGPULike {
    requestAdapter(): Promise<ProductionWebGPUAdapterLike | null>;
    getPreferredCanvasFormat?(): string;
}
export interface ProductionWebGPUAdapterLike {
    readonly name?: string;
    readonly info?: {
        readonly vendor?: string;
        readonly architecture?: string;
        readonly device?: string;
        readonly description?: string;
    };
    requestDevice(): Promise<unknown>;
}
export declare function createProductionWebGPUReport(gpu: ProductionWebGPULike | undefined | null): Promise<ProductionWebGPUReport>;
export declare function createProductionWebGPUReadinessReport(gpu: ProductionWebGPULike | undefined | null): Promise<ProductionWebGPUReadinessReport>;
//# sourceMappingURL=ProductionWebGPURenderer.d.ts.map