declare module "buffer-backed-object" { export type Descriptor = { size: number; align?: number; get(dataview: DataView, byteOffset: number): T; set(dataview: DataView, byteOffset: number, value: T): void; }; export type Descriptors> = { [key: string]: T; }; export type DecodedBuffer = { [K in keyof E]: ReturnType; }; export function structSize(descriptors: Descriptors): number; export function structAlign(descriptors: Descriptors): number; export function ArrayOfBufferBackedObjects(buffer: ArrayBuffer, descriptors: T, { byteOffset, length, align }?: { byteOffset?: number; length?: number; align?: number; }): Array>; export function BufferBackedObject(buffer: ArrayBuffer, descriptors: T, { byteOffset, align }?: { byteOffset?: number; align?: number; }): DecodedBuffer; export interface EndiannessOption { endianness: "little" | "big"; } export interface AlignOption { align: number; } export function Uint16({ endianness, align, }?: Partial): Descriptor; export function Uint32({ endianness, align, }?: Partial): Descriptor; export function Int16({ endianness, align, }?: Partial): Descriptor; export function Int32({ endianness, align, }?: Partial): Descriptor; export function Float32({ endianness, align, }?: Partial): Descriptor; export function Float64({ endianness, align, }?: Partial): Descriptor; export function BigInt64({ endianness, align, }?: Partial): Descriptor; export function BigUint64({ endianness, align, }?: Partial): Descriptor; export function Uint8(): Descriptor; export function Int8(): Descriptor; export function NestedBufferBackedObject(descriptors: T): Descriptor>; export function NestedArrayOfBufferBackedObjects(length: number, descriptors: T): Descriptor>>; export function UTF8String(maxBytes: number): Descriptor; export function reserved(size: number): Descriptor; }