import GenericGFPoly from './GenericGFPoly';
import AbstractGenericGF from './AbstractGenericGF';
/**
 * <p>This class contains utility methods for performing mathematical operations over
 * the Galois Fields. Operations use a given primitive polynomial in calculations.</p>
 *
 * <p>Throughout this package, elements of the GF are represented as an {@code int}
 * for convenience and speed (but at the cost of memory).
 * </p>
 *
 * @author Sean Owen
 * @author David Olivier
 */
export default class GenericGF extends AbstractGenericGF {
    private primitive;
    private size;
    private generatorBase;
    static AZTEC_DATA_12: GenericGF;
    static AZTEC_DATA_10: GenericGF;
    static AZTEC_DATA_6: GenericGF;
    static AZTEC_PARAM: GenericGF;
    static QR_CODE_FIELD_256: GenericGF;
    static DATA_MATRIX_FIELD_256: GenericGF;
    static AZTEC_DATA_8: GenericGF;
    static MAXICODE_FIELD_64: GenericGF;
    private zero;
    private one;
    /**
     * Create a representation of GF(size) using the given primitive polynomial.
     *
     * @param primitive irreducible polynomial whose coefficients are represented by
     *  the bits of an int, where the least-significant bit represents the constant
     *  coefficient
     * @param size the size of the field
     * @param b the factor b in the generator polynomial can be 0- or 1-based
     *  (g(x) = (x+a^b)(x+a^(b+1))...(x+a^(b+2t-1))).
     *  In most cases it should be 1, but for QR code it is 0.
     */
    constructor(primitive: number, size: number, generatorBase: number);
    getZero(): GenericGFPoly;
    getOne(): GenericGFPoly;
    /**
     * @return the monomial representing coefficient * x^degree
     */
    buildMonomial(degree: number, coefficient: number): GenericGFPoly;
    /**
     * @return multiplicative inverse of a
     */
    inverse(a: number): number;
    /**
     * @return product of a and b in GF(size)
     */
    multiply(a: number, b: number): number;
    getSize(): number;
    getGeneratorBase(): number;
    toString(): string;
    equals(o: Object): boolean;
}
