/*! Copyright 2025 the gnablib contributors MPL-1.1 */ interface IShiftOps { lShift(by: number): T; lRot(by: number): T; rShift(by: number): T; rRot(by: number): T; } interface IShiftEqOps { lShiftEq(by: number): T; lRotEq(by: number): T; rShiftEq(by: number): T; rRotEq(by: number): T; } interface ILogicOps { xor(o: T): T; or(o: T): T; and(o: T): T; not(): T; } interface ILogicEqOps { xorEq(o: T): T; orEq(o: T): T; andEq(o: T): T; notEq(): T; } interface IArithOps { add(o: T): T; sub(o: T): T; mul(o: T): T; } interface IArithSignOps extends IArithOps { get negative(): boolean; abs(): T; } interface IArithEqOps { addEq(o: T): T; subEq(o: T): T; mulEq(o: T): T; } interface IArithEqSignOps extends IArithEqOps { get negative(): boolean; absEq(): T; } interface IComparable { eq(o: T): boolean; gt(o: T): boolean; gte(o: T): boolean; lt(o: T): boolean; lte(o: T): boolean; } export interface ICtComparable { ctEq(o: T): boolean; ctGt(o: T): boolean; ctGte(o: T): boolean; ctLt(o: T): boolean; ctLte(o: T): boolean; ctSwitch(o: T, other: boolean): T; } interface IBasic { get size32(): number; clone(): T; clone32(): Uint32Array; toBytesBE(): Uint8Array; toString(): string; getByte(idx: number): number; } interface IBasicMut { set(v: Tro): T; zero(): T; } export interface IInt extends IBasic, IShiftOps, ILogicOps, IArithOps, IArithSignOps, IComparable { } export interface IUint extends IBasic, IShiftOps, ILogicOps, IArithOps, IComparable { } export interface IIntMut extends IInt, IBasicMut, IShiftEqOps, ILogicEqOps, IArithEqSignOps { } export interface IUintMut extends IUint, IBasicMut, IShiftEqOps, ILogicEqOps, IArithEqOps { } export {};