import '../../../../globals.js';
/**
 * A GPUBuffer that is typed to a specific type, and can be used to encode/decode values to/from it.
 *
 * @author Jonathan Olson <jonathan.olson@colorado.edu>
 */
import { BufferLogger, ConcreteType, DeviceContext } from '../../imports.js';
export default class TypedBuffer<T = unknown> {
    readonly buffer: GPUBuffer;
    readonly type: ConcreteType<T>;
    constructor(buffer: GPUBuffer, type: ConcreteType<T>);
    setValue(device: GPUDevice, value: T): void;
    getValue(encoder: GPUCommandEncoder, bufferLogger: BufferLogger): Promise<T>;
    dispose(): void;
    static createArray<T>(deviceContext: DeviceContext, type: ConcreteType<T>, size: number, outOfRangeElement?: T): TypedBuffer<T[]>;
    static createArrayFromData<T>(deviceContext: DeviceContext, type: ConcreteType<T>, data: T[]): TypedBuffer<T[]>;
    static wrapArray<T>(buffer: GPUBuffer, type: ConcreteType<T>, outOfRangeElement?: T, size?: number): TypedBuffer<T[]>;
}
//# sourceMappingURL=TypedBuffer.d.ts.map