import type { FCurrency, FdoDecimal, FdoDinero } from '@feedmepos/core/entity';
import type { FormatNumberOptions } from './type';
export type AdjustmentAmount = FdoDecimal;
export declare function zeroDinero(currency: FCurrency): FdoDinero;
export declare function formatNumber(number: number, factor: number, precision: number): number;
export declare function numberWithCommas(x: number): string;
export declare function normalizeDecimal<T extends AdjustmentAmount>(a: AdjustmentAmount): T;
export declare function adjustmentAmountConvertPrecision(a: AdjustmentAmount, precision: number): AdjustmentAmount;
export declare function adjustmentAmountSubtract(a: AdjustmentAmount, b: AdjustmentAmount): AdjustmentAmount;
export declare function adjustmentAmountAdd(a: AdjustmentAmount, b: AdjustmentAmount): AdjustmentAmount;
export declare function adjustmentAmountMultiply(a: AdjustmentAmount, multiplier: AdjustmentAmount): AdjustmentAmount;
export declare function adjustmentAmountMultiplyDecimal(left: AdjustmentAmount, right: AdjustmentAmount): AdjustmentAmount;
export declare function adjustmentAmountDivide(a: AdjustmentAmount, divisor: AdjustmentAmount): number;
export declare function adjustmentAmountDivideDecimal(a: AdjustmentAmount, divisor: AdjustmentAmount): AdjustmentAmount;
export declare function upgradePrecision(a: FdoDecimal, minimumPrecision: number): {
    amount: number;
    precision: number;
};
export declare function trimPrecision(decimal: FdoDecimal): {
    amount: number;
    precision: number;
};
export declare function adjustmentAmountFormat(a: AdjustmentAmount, toPrecision?: boolean): string;
/** Trims the number to the least precision possible */
export declare function numberFormatTrimPrecision(amount: number, precision?: number): string;
export declare function adjustmentCurrencyFormat(a: FdoDinero, asSuffix?: boolean, precision?: number): string;
export declare function adjustmentAmountAbs(a: AdjustmentAmount): AdjustmentAmount;
export declare function getPrecision(a: number): number;
export declare function toAdjustmentAmount(a: number): AdjustmentAmount;
export declare function toAdjustmentWithPrecision(amt: string | number, precision?: number, allowNegative?: boolean): {
    amount: number;
    precision: number;
};
export declare function countDivisibleByTrailingZero(n: number | BigInt): number;
/**
 * Returns the valid precision for a base unit or a converted measurement.
 * Documentation at: https://www.notion.so/feedmepos/Precision-Handling-Logic-8e2211106b4a4a0f9fae8ee9c1e897da?pvs=4
 */
export declare function getAllowedPrecision(unit: FdoInventoryUnit, measurement?: FdoUnitMeasurement | null): number;
export declare const isNumeric: (value: any) => boolean | 0;
export declare function formatToLocale(value: number | string | AdjustmentAmount, options?: FormatNumberOptions): string;
