export type CurrencyFormatOptions = { currencyCode?: string; currencySymbol?: string; locale?: string; minimumFractionDigits?: number; maximumFractionDigits?: number; }; export declare function getCurrencySymbol(currencyCode: string, locale?: string): string; export declare function formatMoney(amount: number, options?: CurrencyFormatOptions): string; /** The wire money shape, mirroring `MoneyStringSchema` in `@fanfare-io/fanfare-sdk-contracts`. */ export declare const MONEY_WIRE_PATTERN: RegExp; /** * Scales a wire money string to whole minor units, rounding half-up. * * Money crosses the wire with more precision than IEEE-754 carries, so every arithmetic step in * the SDK runs on the integer this scale defines and never on a `number`. Throws on anything that * is not a wire money string: a caller that cannot state a value exactly must not compute with it. */ export declare function toMinorUnits(amount: string, digits: number): bigint; /** Renders whole minor units back as a wire money string carrying exactly `digits` decimals. */ export declare function fromMinorUnits(units: bigint, digits: number): string; /** * Formats a wire money string for display, rounding it once at the currency's fraction digits. * * The amount is scaled to that minor unit as a BigInt and rounded half-up there — the only place * the value changes — so a figure beyond the range `number` represents exactly still rounds from * its full precision rather than from a float approximation of it. Symbol placement and the * group and decimal separators come from `formatToParts` over the integer part; the fraction is * spliced in from the scaled integer rather than re-derived from a float. Anything that is not a * wire money string is returned verbatim. */ export declare function formatMoneyString(amount: string, options?: CurrencyFormatOptions): string;