/** * @module icu * ICU message format support for internationalization. * Provides pluralization, select, and value interpolation. * * @example * // Simple interpolation * formatICU('Hello, {name}!', { name: 'World' }); * // Returns: 'Hello, World!' * * @example * // Pluralization * formatICU('{count, plural, one {# item} other {# items}}', { count: 5 }); * // Returns: '5 items' * * @example * // Select * formatICU('{gender, select, male {He} female {She} other {They}}', { gender: 'female' }); * // Returns: 'She' */ /** * Function type for message formatters. * Implement this to provide custom message formatting. */ export type MessageFormatter = (message: string, values?: Record, locale?: string) => string; /** * Default ICU message formatter implementation. * Supports simple interpolation, pluralization with exact matches, and select. * * @param message - ICU format message string * @param values - Values to interpolate * @param locale - Locale for plural rules (default: 'en') * @returns Formatted message string * * @example * defaultFormatICU('{n, plural, =0 {none} one {# item} other {# items}}', { n: 0 }, 'en'); * // Returns: 'none' * * @example * defaultFormatICU('{role, select, admin {Full access} other {Limited access}}', { role: 'admin' }); * // Returns: 'Full access' */ export declare function defaultFormatICU(message: string, values: Record, locale?: string): string; /** * The active message formatter. Defaults to `defaultFormatICU`. * Can be replaced with `setMessageFormatter` for custom formatting. */ export declare let formatICU: MessageFormatter; /** * Replaces the default message formatter with a custom implementation. * Use this to integrate with external i18n libraries like FormatJS. * * @param formatter - The custom formatter function * * @example * // Use FormatJS IntlMessageFormat * import { IntlMessageFormat } from 'intl-messageformat'; * * setMessageFormatter((message, values, locale) => { * const fmt = new IntlMessageFormat(message, locale); * return fmt.format(values); * }); */ export declare function setMessageFormatter(formatter: MessageFormatter): void;