import { Operators, ops, scalar, scalarRational, scalarExt, has, has0, Immutable, hasProperty } from "./core"; declare class extentT> { min: T; max: T; static fromCentreExtent>(centre: T, size: T): extentT; static from, U extends Iterable>(items: U): extentT | undefined; constructor(min: T, max: T); extent(): any; centre(): any; add(p: T): void; combine(b: extentT): void; encompasses(b: extentT): boolean; overlaps(b: extentT): boolean; contains(p: T): boolean; clamp(p: T): T; } export type canDenominator = Pick, 'from' | 'divmod' | 'recip' | 'lt'>; export declare const Gen: { dup>(a: T): T; neg>(a: T): T; add>(a: T, b: T): T; sub>(a: T, b: T): T; mul>(a: T, b: T): T; div>(a: T, b: T): T; ipow>(base: T, exp: number): T; eq>(a: T, b: T): boolean; lt>(a: T, b: T): boolean; copySign>(a: T, b: T): T; max>(...values: T[]): T; min>(...values: T[]): T; compare>(a: T, b: T): number; gcd, "sign" | "abs"> & hasProperty<"divmod", (b: T) => any>>(...values: T[]): T; lcm, "divmod" | "sign" | "abs" | "scale">>(...values: T[]): T; denominator(x: T, maxDen: bigint, eps?: T): bigint; commonDenominator>(numbers: T[], maxDen?: bigint, eps?: T): bigint | 0; rationalApprox & canDenominator>(x: Immutable, maxDen: bigint, eps?: T): [bigint, bigint]; continuedFractionT>(x: T, maxTerms?: number, eps?: T): (bigint | number)[]; modPow>(base: T, exp: number, mod: T): T; OperatorsBase>(_con: new (...args: any[]) => T): Pick, (keyof Operators & keyof T) | "func" | "ipow">; extent: typeof extentT; }; export default Gen; export declare namespace Gen { type extent> = extentT; }