declare const GPU_INTERACTION_SMOKE_STORAGE_FORMAT = "rgba16float"; export interface GPUInteractionStorageOptions { maxColliders: number; maxGridLinks: number; maxGlobalColliders: number; } export interface GPUInteractionStorageByteLengths { colliderMeta: number; colliderSource: number; colliderPosition: number; colliderQuaternion: number; colliderLinearVelocity: number; colliderAngularVelocity: number; colliderShapeData: number; colliderMaterial: number; colliderAabbMinimum: number; colliderAabbMaximum: number; colliderScanCount: number; gridCellOffsets: number; gridCellCursors: number; gridColliderIds: number; gridLinkCount: number; globalColliderIds: number; globalColliderCount: number; } export interface GPUInteractionLargestStorageBuffer { readonly name: keyof GPUInteractionStorageByteLengths | null; readonly bytes: number; } export interface GPUInteractionStorageBufferRequirements { readonly byteLengths: Readonly; readonly largestBuffer: GPUInteractionLargestStorageBuffer; readonly totalByteLength: number; } export interface GPUInteractionStorageRequiredRendererLimits { readonly [name: string]: number; readonly maxStorageBufferBindingSize: number; readonly maxBufferSize: number; } export interface GPUInteractionSmokeRequiredRendererLimits { readonly [name: string]: number; readonly maxTextureDimension3D: number; readonly maxStorageTexturesPerShaderStage: number; } export interface GPUInteractionRendererProbe { readonly backend?: unknown; readonly compute?: unknown; } export type GPUInteractionAvailableRendererLimits = Readonly>; export interface GPUInteractionLimitFailure { readonly name: string; readonly required: number; readonly available: number; } export interface GPUInteractionCapabilityWorld { readonly options: GPUInteractionStorageOptions; readonly spatialGrid: Readonly<{ cellCount: number; }>; readonly initialized: boolean; getSizingReport(): Readonly<{ totalBytes: number; }>; } export interface GPUInteractionSmokeCapabilitySource { readonly simRes: number; readonly interactionWorld?: unknown; readonly interaction?: Readonly<{ enabled?: boolean | undefined; }> | null; } export interface GPUInteractionCapabilityReport { readonly available: boolean | null; readonly webgpu: boolean | null; readonly compute: boolean | null; readonly initialized: boolean; readonly feedback: false; readonly feedbackReason: string; readonly sharedArrayBuffer: boolean; readonly storage: Readonly<{ compatible: boolean | null; requiredRendererLimits: GPUInteractionStorageRequiredRendererLimits; availableRendererLimits: GPUInteractionAvailableRendererLimits | null; largestBuffer: GPUInteractionLargestStorageBuffer; totalByteLength: number; failures: readonly GPUInteractionLimitFailure[]; }>; readonly smoke: Readonly<{ requiredStorageFormat: typeof GPU_INTERACTION_SMOKE_STORAGE_FORMAT; storageFormatSupported: boolean | null; reason: string | null; }>; readonly reasons: readonly string[]; } export interface GPUInteractionSmokeCapabilityReport { readonly available: boolean | null; readonly enabled: boolean; readonly requiredStorageFormat: typeof GPU_INTERACTION_SMOKE_STORAGE_FORMAT; readonly storageFormatSupported: boolean | null; readonly requiredRendererLimits: GPUInteractionSmokeRequiredRendererLimits; readonly availableRendererLimits: GPUInteractionAvailableRendererLimits | null; readonly failures: readonly GPUInteractionLimitFailure[]; readonly reason: string | null; readonly reasons: readonly string[]; } declare function getGPUInteractionStorageBufferRequirements(options: GPUInteractionStorageOptions, cellCount: number): GPUInteractionStorageBufferRequirements; declare function getGPUInteractionRequiredRendererLimits(options: GPUInteractionStorageOptions, cellCount: number): GPUInteractionStorageRequiredRendererLimits; declare function createGPUInteractionCapabilityReport(world: GPUInteractionCapabilityWorld, renderer?: GPUInteractionRendererProbe | null): GPUInteractionCapabilityReport; declare function assertGPUInteractionRendererCapabilities(world: GPUInteractionCapabilityWorld, renderer: GPUInteractionRendererProbe): GPUInteractionCapabilityReport; declare function createSmokeInteractionCapabilityReport(smoke: GPUInteractionSmokeCapabilitySource, renderer?: GPUInteractionRendererProbe | null): GPUInteractionSmokeCapabilityReport; export { GPU_INTERACTION_SMOKE_STORAGE_FORMAT, assertGPUInteractionRendererCapabilities, createGPUInteractionCapabilityReport, createSmokeInteractionCapabilityReport, getGPUInteractionRequiredRendererLimits, getGPUInteractionStorageBufferRequirements, };