import type { i18n } from 'i18next';
export interface IcuFormats {
    number?: {
        [styleName: string]: Intl.NumberFormatOptions;
    };
    date?: {
        [styleName: string]: Intl.DateTimeFormatOptions;
    };
    time?: {
        [styleName: string]: Intl.DateTimeFormatOptions;
    };
}
export interface IcuConfig {
    memoize?: boolean;
    memoizeFallback?: boolean;
    formats?: IcuFormats;
    bindI18n?: string;
    bindI18nStore?: 'added' | 'removed';
    localeData?: any;
    parseErrorHandler?: (err: Error, key: string, res: string, options: Object) => string;
    parseLngForICU?: (lng: string) => string;
}
/**
 * Copied from original ICU source code.
 * @source https://github.com/i18next/i18next-icu/blob/7809547c821a7ef3b2bb9ab2610cdbbcfedcb2f9/src/index.js
 *
 * It's done in order to support `IntlMessageFormat` out of the box.
 * `IntlMessageFormat` is adding formatters that are not provided by i18n.
 * For example, `select` formatter - https://formatjs.io/docs/core-concepts/icu-syntax#select-format
 * It allows to use following translation value: 'Welcome back{inputData, select, 0 {} 1 {, John}}'
 * See example in tests: __tests__/i18n.spec.tsx
 */
declare class ICU {
    options: IcuConfig | undefined;
    formats: IcuFormats | undefined;
    type: string;
    mem: Record<string, any>;
    constructor(options: IcuConfig);
    init(i18next: i18n | null, options: IcuConfig): void;
    addLocaleData(data: any): void;
    addUserDefinedFormats(formats: IcuFormats): void;
    parse(res: string, options: IcuConfig, lng: string, ns: string, key: string, info: any): any;
    addLookupKeys(finalKeys: any): any;
    clearCache(): void;
}
export default ICU;
//# sourceMappingURL=icu.d.ts.map