import { BufferId, BufferUsage } from '../types'; export interface BufferEntry { id: BufferId; usage: BufferUsage; byteLength: number; lastUpdated: number; } export interface IBufferStore { /** Create or update a buffer with new data */ createOrUpdate(id: BufferId, data: ArrayBufferView, usage?: BufferUsage): void; /** Partially update a buffer at an offset */ partialUpdate(id: BufferId, data: ArrayBufferView, offsetBytes: number): boolean; /** Get buffer metadata */ getInfo(id: BufferId): BufferEntry | undefined; /** Check if buffer exists */ has(id: BufferId): boolean; /** Delete a buffer */ delete(id: BufferId): void; /** Get all buffer IDs */ keys(): IterableIterator; /** Get buffer count */ readonly size: number; /** Cleanup all buffers */ destroy(): void; } /** * Abstract base class for buffer stores */ export declare abstract class BaseBufferStore implements IBufferStore { protected entries: Map; abstract createOrUpdate(id: BufferId, data: ArrayBufferView, usage?: BufferUsage): void; abstract partialUpdate(id: BufferId, data: ArrayBufferView, offsetBytes: number): boolean; abstract delete(id: BufferId): void; abstract destroy(): void; getInfo(id: BufferId): BufferEntry | undefined; has(id: BufferId): boolean; keys(): IterableIterator; get size(): number; }