export declare enum Rounding {
    ROUND_UP = 0,
    ROUND_DOWN = 1,
    ROUND_CEIL = 2,
    ROUND_FLOOR = 3,
    ROUND_HALF_UP = 4,
    ROUND_HALF_DOWN = 5,
    ROUND_HALF_EVEN = 6,
    ROUND_HALF_CEIL = 7,
    ROUND_HALF_FLOOR = 8
}
export declare enum Decimals {
    left = "left",
    right = "right",
    min = "min",
    max = "max",
    add = "add",
    sub = "sub"
}
export type PrecisionResolution = Decimals | number | bigint;
export declare class FixedPoint {
    static min(arg0: FixedPoint, ...args: FixedPoint[]): FixedPoint;
    static max(arg0: FixedPoint, ...args: FixedPoint[]): FixedPoint;
    private _base;
    private _precision;
    constructor(base: bigint, precision: bigint);
    get base(): bigint;
    get precision(): bigint;
    add(arg: FixedPoint, resultPrecision?: PrecisionResolution): FixedPoint;
    plus: (arg: FixedPoint, resultPrecision?: PrecisionResolution) => FixedPoint;
    sub(arg: FixedPoint, resultPrecision?: PrecisionResolution): FixedPoint;
    minus: (arg: FixedPoint, resultPrecision?: PrecisionResolution) => FixedPoint;
    mul(arg: FixedPoint, resultPrecision?: PrecisionResolution): FixedPoint;
    times: (arg: FixedPoint, resultPrecision?: PrecisionResolution) => FixedPoint;
    multipliedBy: (arg: FixedPoint, resultPrecision?: PrecisionResolution) => FixedPoint;
    div(arg: FixedPoint, resultPrecision?: PrecisionResolution): FixedPoint;
    dividedBy: (arg: FixedPoint, resultPrecision?: PrecisionResolution) => FixedPoint;
    cmp(arg: FixedPoint, comparator: (a: bigint, b: bigint) => boolean): boolean;
    eq(arg: FixedPoint): boolean;
    isEqualTo: (arg: FixedPoint) => boolean;
    gt(arg: FixedPoint): boolean;
    isGreaterThan: (arg: FixedPoint) => boolean;
    lt(arg: FixedPoint): boolean;
    isLessThan: (arg: FixedPoint) => boolean;
    gte(arg: FixedPoint): boolean;
    isGreaterThanOrEqualTo: (arg: FixedPoint) => boolean;
    lte(arg: FixedPoint): boolean;
    isLessThanOrEqualTo: (arg: FixedPoint) => boolean;
    neg(): FixedPoint;
    negated: () => FixedPoint;
    abs(): FixedPoint;
    absoluteValue: () => FixedPoint;
    isZero(): boolean;
    isPositive(): boolean;
    isNegative(): boolean;
    floor(): FixedPoint;
    ceil(): FixedPoint;
    round(mode?: Rounding): FixedPoint;
    setPrecision(newPrecision: bigint, rounding?: Rounding): void;
    toPrecision(resultPrecision: number | bigint, rounding?: Rounding): FixedPoint;
    toString(): string;
    toJSON(): string;
    toDecimalString(): string;
    toDecimal(): number;
    valueOf(): number;
}
