/**
 * Number-format cascade for BigNumber.
 *
 * Resolves a `BigNumberFormat` shortcut (or custom fn) against the
 * card's locale + currency + precision props and returns a memoizable
 * formatter. All built-ins use `Intl.NumberFormat` so locale + grouping
 * behave correctly without bundling a separate number-format library.
 */
import type { BigNumberFormat } from "./types";
export interface FormatContext {
    locale?: string;
    currency?: string;
    precision?: number;
    notation?: Intl.NumberFormatOptions["notation"];
}
/**
 * Build a `(value) => string` formatter from a shortcut + context.
 * Custom-function shortcuts are returned as-is.
 */
export declare function buildFormatter(format: BigNumberFormat | undefined, ctx?: FormatContext): (value: number) => string;
/**
 * Format a millisecond duration as a short human string:
 * `2h 14m`, `45s`, `12ms`. Useful for latency-style KPIs.
 */
export declare function formatDuration(ms: number): string;
/**
 * Decorate a formatted number with prefix/suffix. Empty strings are
 * skipped without padding.
 */
export declare function decorate(formatted: string, prefix: string | undefined, suffix: string | undefined): string;
/**
 * Format a signed delta — always carry an explicit + on positive values
 * so the sign-as-information stays legible. Zero renders as `"0"`
 * unformatted-by-sign (no `+0`).
 */
export declare function formatSignedDelta(delta: number, formatter: (value: number) => string): string;
/**
 * Format a percent change. `from` of 0 yields `null` (undefined ratio).
 */
export declare function formatDeltaPercent(from: number, to: number, locale?: string, precision?: number): string | null;
