/** * @module * * Types and functions for defining a member. */ import type { MemberableClass, MemberableClassKeys } from './members.js'; import type { ArrayBufferType } from './native.js'; /** * Get next/current/default member offset for type. * * @param Type Type class. * @returns Byte offset. */ export declare function nextByteOffset(Type: MemberableClass): number; /** * Ensure byte length of type is defined. * * @template T Type class. * @param Type Type class. * @param byteLength Byte length to ensure at-least. * @returns Updated type byte length. */ export declare function ensureByteLength(Type: T, byteLength?: number): number; /** * Define member. * * @template T Type class. * @template M Member type. * @param Type Type class. * @param name Member name. * @param desc Member descriptor. * @returns Updated type byte length. */ export declare function defineMember(Type: T, name: MemberableClassKeys, byteLength: number, byteOffset: number | null, get: (this: InstanceType & Record) => M, set: (this: InstanceType & Record, value: M) => void): number; /** * Member constructor. * * @template T Member type. * @template TArrayBuffer Buffer type. */ export interface MemberConstructor = ArrayBufferType> { /** * Member constructor. * * @template _TArrayBuffer Buffer type. * @param buffer Buffer data. * @param byteOffset Byte offset. * @param littleEndian Little endian, big endian, or inherit. */ new <_TArrayBuffer extends TArrayBuffer>(buffer: _TArrayBuffer, byteOffset?: number, littleEndian?: boolean | null): T & ArrayBufferView<_TArrayBuffer>; /** * Member constructor. * * @param buffer Buffer data. * @param byteOffset Byte offset. * @param littleEndian Little endian, big endian, or inherit. */ new (buffer: TArrayBuffer, byteOffset?: number, littleEndian?: boolean | null): T & ArrayBufferView; /** * Member prototype. */ readonly prototype: T & ArrayBufferView; /** * Byte length. */ readonly BYTE_LENGTH: number; } /** * Member: generic. * * @template T Type class. * @template M Member type. * @param Member Member constructor. * @param Type Type class. * @param name Member name. * @param byteOffset Byte offset. * @param littleEndian Little endian, big endian, or inherit. * @returns Updated type byte length. */ export declare function member(Member: MemberConstructor>>, Type: T, name: MemberableClassKeys, byteOffset?: number | null, littleEndian?: boolean | null): number; /** * Member: generic, big endian. * * @template T Type class. * @template M Member type. * @param Member Member constructor. * @param Type Type class. * @param name Member name. * @param byteOffset Byte offset. * @returns Updated type byte length. */ export declare function memberBE(Member: MemberConstructor>>, Type: T, name: MemberableClassKeys, byteOffset?: number | null): number; /** * Member: generic, little endian. * * @template T Type class. * @template M Member type. * @param Member Member constructor. * @param Type Type class. * @param name Member name. * @param byteOffset Byte offset. * @returns Updated type byte length. */ export declare function memberLE(Member: MemberConstructor>>, Type: T, name: MemberableClassKeys, byteOffset?: number | null): number; /** * Member: pad. * * @template T Type class. * @param byteLength Padding size. * @param Type Type class. * @param name Member name. * @param byteOffset Byte offset. * @returns Updated type byte length. */ export declare function pad(byteLength: number, Type: T, name?: MemberableClassKeys | null, byteOffset?: number | null): number; //# sourceMappingURL=member.d.ts.map