import type { Add, Sub, Eq, Bounded, BoundedOptions } from "./types"; /** * A wrapping integer class implementing {@link Number}, allowing a value * to be constrained to an arbitrary range, and wrapping around the range * when arithmetic operations cause it to overflow or underflow. * * @example * const u16 = new Wrapping({ max: 0xFFFF }, 1); * u16.add(0xFFFD); // 0xFFFE * u16.add(1); // 0xFFFF * u16.add(1); // 0x0000 * u16.add(1); // 0x0001 * * @throws a {@link RangeError} when range or value is invalid, or when * arguments to arithmetic methods are non-integers. */ export declare class Wrapping implements Bounded, Number, Add<[Number], Wrapping>, Sub<[Number], Wrapping>, Eq<[Number]> { #private; constructor({ max, min }: BoundedOptions, value?: number); static from(bounded: Bounded): Wrapping; add(n: N): Wrapping; sub(n: N): Wrapping; eq(other: Number): boolean; get value(): number; get min(): number; get max(): number; valueOf(): number; toFixed(fractionDigits?: number | undefined): string; toExponential(fractionDigits?: number | undefined): string; toPrecision(precision?: number | undefined): string; toString(radix?: number | undefined): string; toLocaleString(locales?: unknown, options?: unknown): string; toLocaleString(locales?: Intl.LocalesArgument, options?: Intl.NumberFormatOptions | undefined): string; [Symbol.toPrimitive](hint: string): string | number; get [Symbol.toStringTag](): string; }