import type { BufferAttribute, ReadbackBuffer, Renderer } from 'three/webgpu'; interface ReadArrayBufferOptions { target?: ReadbackBuffer | null; byteOffset?: number; byteLength?: number; } declare function resolveReadbackAttribute(source: unknown): BufferAttribute; declare function createReadbackBuffer(byteLength: number): ReadbackBuffer | null; declare function ensureReadbackAttribute(renderer: Renderer, attribute: BufferAttribute): BufferAttribute; declare function readArrayBufferAsync(renderer: Renderer, source: unknown, { target, byteOffset, byteLength, }?: ReadArrayBufferOptions): Promise; /** * Reusable pool for ranged GPU-to-CPU buffer readbacks on Three.js dev. * Falls back to one-shot reads on Three.js versions without ReadbackBuffer. */ declare class RangedReadback { capacityBytes: number; free: ReadbackBuffer[]; constructor(capacityBytes: number); ensureCapacity(byteLength: number): void; read(renderer: Renderer, source: unknown, byteOffset: number, byteLength: number, decode: (buffer: ArrayBuffer) => T): Promise; dispose(): void; } export { RangedReadback, createReadbackBuffer, ensureReadbackAttribute, readArrayBufferAsync, resolveReadbackAttribute };