/** * @module * * Endian related constants, types, and factories. */ import { type Class } from '@hqtsm/class'; import type { ArrayBufferPointer } from './native.js'; /** * Is host big endian. */ export declare const BIG_ENDIAN: boolean; /** * Is host little endian. */ export declare const LITTLE_ENDIAN: boolean; /** * Endian aware. */ export interface EndianAware { /** * True for little endian, false for big endian. */ readonly littleEndian: boolean; } /** * Endian aware buffer pointer. * * @template TArrayBuffer Buffer type. */ export declare class Endian implements ArrayBufferPointer, EndianAware { /** * Type tag. */ readonly [Symbol.toStringTag]: string; /** * Create instance for buffer. * * @param buffer Buffer data. * @param byteOffset Byte offset into buffer. * @param littleEndian Host endian, little endian, big endian. */ constructor(buffer: TArrayBuffer, byteOffset?: number, littleEndian?: boolean | null); get buffer(): TArrayBuffer; get byteOffset(): number; get littleEndian(): boolean; /** * Type level endian override. */ static readonly LITTLE_ENDIAN: boolean | null; } /** * Endian constructor. * * @template TArrayBuffer Buffer type. */ export interface EndianConstructor extends Omit, never> { /** * Create instance for buffer. * * @template _TArrayBuffer Buffer type. * @param buffer Buffer data. * @param byteOffset Byte offset into buffer. * @param littleEndian Host endian, little endian, big endian. */ new <_TArrayBuffer extends TArrayBuffer>(buffer: _TArrayBuffer, byteOffset?: number, littleEndian?: boolean | null): Endian<_TArrayBuffer>; /** * Create instance for buffer. * * @param buffer Buffer data. * @param byteOffset Byte offset into buffer. * @param littleEndian Host endian, little endian, big endian. */ new (buffer: TArrayBuffer, byteOffset?: number, littleEndian?: boolean | null): Endian; /** * Type prototype. */ readonly prototype: Endian; } /** * Endian class. * * @template TArrayBuffer Buffer type. */ export type EndianClass = Class>; /** * Extend endian class as default endian. * * @template T Endian class. * @param Endian Endian class. * @returns Extended class. */ export declare function dynamicEndian(Endian: T): T; /** * Extend endian class as big endian. * * @template T Endian class. * @param Endian Endian class. * @returns Extended class. */ export declare function bigEndian(Endian: T): T; /** * Extend endian class as little endian. * * @template T Endian class. * @param Endian Endian class. * @returns Extended class. */ export declare function littleEndian(Endian: T): T; //# sourceMappingURL=endian.d.ts.map