import type { SimulationProgram } from "@skenora/contracts"; import { SimulationRuntimeModel } from "./simulation-runtime-model.js"; export interface WebGpuSimulationRendererOptions { readonly canvas: HTMLCanvasElement; readonly program: Readonly; readonly autoStart?: boolean; readonly maxPixelRatio?: number; } export interface WebGpuSimulationSnapshot { readonly version: 1; readonly backend: "webgpu"; readonly kernel: SimulationProgram["kernel"]; readonly status: ReturnType["status"]; readonly topologySignature: string; readonly grid: Readonly<{ width: number; height: number; }>; readonly canvas: Readonly<{ width: number; height: number; }>; readonly resources: readonly [string, string]; readonly currentResource: string; readonly storageBytes: number; readonly passesPerStep: number; readonly swaps: number; readonly fixedSteps: number; readonly frames: number; readonly readbacks: number; readonly droppedMilliseconds: number; readonly features: readonly string[]; readonly limits: Readonly>; readonly loss?: Readonly<{ reason: string; message: string; }>; } export interface WebGpuSimulationProbeReport { readonly version: 1; readonly verdict: "healthy" | "unhealthy"; readonly byteLength: number; readonly finiteSamples: number; readonly nonZeroSamples: number; readonly maximumAbsoluteValue: number; readonly steadyStateReadbacks: 0; } export declare class WebGpuSimulationUnsupportedError extends Error { constructor(message?: string); } /** * Optional public WebGPU compute/fullscreen renderer. It owns all GPU objects * and exposes only serializable snapshots and explicit probe data. */ export declare class WebGpuSimulationRenderer { #private; private constructor(); static create(options: WebGpuSimulationRendererOptions): Promise; snapshot(): WebGpuSimulationSnapshot; pause(): void; resume(): void; reset(): void; probe(): Promise; dispose(): void; } export declare function isWebGpuSimulationSupported(): boolean; //# sourceMappingURL=webgpu-simulation-renderer.d.ts.map