/** * @module * * Types for constant types. */ import type { Arr } from './arr.js'; import type { ArrayBufferPointer, ArrayBufferType } from './native.js'; import type { Ptr } from './ptr.js'; /** * Constant type. * * @template T Type. */ export type Const = T extends Function | RegExp | Date ? T : T extends Arr ? ConstArr & Const> : T extends Ptr ? ConstPtr & Const> : T extends ArrayBufferPointer ? { readonly [K in keyof T]: (K extends 'buffer' ? T[K] : Const); } : T extends object ? { readonly [K in keyof T]: Const; } : T; /** * Constant pointer. * * @template T Pointer type. */ export interface ConstPtr> extends Const, ArrayBufferType>, 'set'>> { } /** * Constant array. * * @template T Array type. */ export interface ConstArr> extends Const, ArrayBufferType>, 'set'>> { } //# sourceMappingURL=const.d.ts.map