import { scalar } from "./core"; export declare class Monomial extends Array { constructor(...v: number[]); key(): string; map(f: (e: number, i: number, array: Monomial) => T): T[]; degree(): number; without(v: number): Monomial; divides(b: Monomial): boolean; div(a: Monomial): Monomial | undefined; mul(a: Monomial): Monomial; static lcm(a: Monomial, b: Monomial): Monomial; eq(a: Monomial): boolean; toString(): string; } type Compare = (a: Monomial, b: Monomial) => number; declare function compareGrevlex(a: Monomial, b: Monomial): number; export declare function lexOrder(a: Monomial, b: Monomial): number; export interface MVTerm { coef: T; mon: Monomial; } export declare class MVPoly> { terms: MVTerm[]; constructor(terms?: MVTerm[]); dup(): MVPoly; isZero(): boolean; eq(b: MVPoly): boolean; sort(ordering: Compare): void; contains(v: number): boolean; collect(v: number): MVPoly[]; addTerm(mon: Monomial, coef: T): void; leadingTerm(ordering: Compare): MVTerm; mulMono(m: Monomial): MVPoly; add(b: MVPoly): MVPoly; sub(b: MVPoly): MVPoly; divCoef(coef: T): MVPoly; mulCoef(coef: T): MVPoly; mulPoly(b: MVPoly): MVPoly; divPoly(divisors: MVPoly[], ordering: Compare): MVTerm[][]; toString(): string; } export declare function groebnerBasis>(G: MVPoly[], ordering?: typeof compareGrevlex): MVPoly[]; export {};