import { Uint64 } from '../uint';
export interface DoubleParts {
    sign: number;
    man: Uint64;
    exp: number;
    fFinite: boolean;
}
export declare class BigInteger {
    static readonly DB = 26;
    static readonly DM: number;
    static readonly DV: number;
    private _sign;
    private _bits;
    constructor(value: number | string | ArrayBuffer | Uint8Array);
    static readonly getDoubleParts: (dbl: number) => DoubleParts;
    static readonly MinusOne: BigInteger;
    static readonly One: BigInteger;
    static readonly Zero: BigInteger;
    static readonly fromString: (str: string, radix?: number | undefined) => BigInteger;
    readonly fromString: (str: string, radix?: number | undefined) => void;
    static readonly fromUint8Array: (arr: Uint8Array, sign?: number | undefined, littleEndian?: boolean | undefined) => BigInteger;
    readonly fromUint8Array: (arr: Uint8Array, sign?: number | undefined, littleEndian?: boolean | undefined) => void;
    readonly fromUint64: (i: Uint64, sign: number) => void;
    static readonly getActualLength: (arr: Uint8Array) => number;
    readonly isZero: () => boolean;
    static readonly mod: (x: number | BigInteger, y: number | BigInteger) => BigInteger;
    static readonly multiply: (x: number | BigInteger, y: number | BigInteger) => BigInteger;
    readonly multiply: (other: BigInteger) => BigInteger;
    static readonly multiplyTo: (x: number[], y: number[], r?: number[] | undefined, offset?: number | undefined) => void;
    readonly negate: () => BigInteger;
    static readonly parse: (str: string) => BigInteger;
    static readonly pow: (value: number | BigInteger, exponent: number) => BigInteger;
    readonly pow: (exponent: number) => BigInteger;
    static readonly subtract: (x: number | BigInteger, y: number | BigInteger) => BigInteger;
    readonly subtract: (other: BigInteger) => BigInteger;
    static readonly subtractTo: (x: number[], y: number[], r?: number[] | undefined) => boolean;
    readonly toInt32: () => number;
    readonly toString: (radix?: number | undefined) => string;
    readonly toUint8Array: (littleEndian?: boolean | undefined, length?: number | undefined) => Uint8Array;
    static readonly add: (x: number | BigInteger, y: number | BigInteger) => BigInteger;
    readonly add: (other: BigInteger) => BigInteger;
    static readonly addTo: (x: number[], y: number[], r: number[]) => void;
    readonly bitLength: () => number;
    static readonly bitLengthInternal: (w: number) => number;
    static readonly compare: (x: number | BigInteger, y: number | BigInteger) => number;
    static readonly compareAbs: (x: BigInteger, y: BigInteger) => number;
    readonly compareTo: (other: BigInteger) => number;
    static readonly create: (sign: number, bits: number[], clamp?: boolean | undefined) => BigInteger;
    static readonly divRem: (x: number | BigInteger, y: number | BigInteger) => {
        result: BigInteger;
        remainder: BigInteger;
    };
    readonly clamp: () => void;
}
