///
import { Device } from "./device";
import { ATypedArray, Dtype } from "./dtype";
export type TensorArrayData = Array;
export declare abstract class UntypedStorage {
abstract get byteSize(): number;
abstract get mappedArrayBuffer(): ArrayBuffer | null;
abstract get isMapped(): boolean;
abstract mapReadAsync(): Promise;
abstract unmap(): void;
abstract destroy(): void;
getTypedArray(dtype: Dtype): ATypedArray;
}
export declare class ArrayBufferStorage extends UntypedStorage {
private _buffer;
get cpuBuffer(): ArrayBuffer;
get byteSize(): number;
get mappedArrayBuffer(): ArrayBuffer | null;
constructor(byteSize: number | ArrayBuffer | ATypedArray);
get isMapped(): boolean;
mapReadAsync(): Promise;
unmap(): void;
destroy(): void;
}
export declare class GPUBufferStorage extends UntypedStorage {
private _buffer;
private _mappedArrayBuffer;
private _device;
get byteSize(): number;
get gpuBuffer(): GPUBuffer;
get gpuDevice(): GPUDevice;
get mappedArrayBuffer(): ArrayBuffer | null;
constructor(buffer: GPUBuffer, device: GPUDevice);
constructor(byteSize: number, device: GPUDevice, usage: GPUBufferUsageFlags);
get isMapped(): boolean;
mapReadAsync(): Promise;
unmap(): void;
destroy(): void;
private copyBufferToReadableBuffer;
}
export declare function newTypedArrayForDtype(length: number, dtype: Dtype): Uint8Array | Int32Array | Float32Array;
export declare function newTypedArrayFromArray(data: TensorArrayData | null, dtype: Dtype, device: Device): {
storage: UntypedStorage;
shape: number[];
strides: number[];
};