import I18next, { IntlInitOptions } from './i18n';
import { IntlMessageFormat } from '@ies/intl-icu-plugin';
import { Callback, TFunction, FallbackLng, i18n, TFunctionKeys, StringMap } from 'i18next';
export declare enum IntlModuleType {
    intl3rdParty = "intl3rdParty",
    backend = "backend",
    logger = "logger",
    languageDetector = "languageDetector",
    postProcessor = "postProcessor",
    i18nFormat = "i18nFormat",
    '3rdParty' = "3rdParty"
}
export interface IntlModule<T extends keyof typeof IntlModuleType = keyof typeof IntlModuleType> {
    type: T;
    name?: string;
    init?: (i18n: any) => void | Promise<any>;
}
export declare type IntlThirdPartyModule = IntlModule<'intl3rdParty'>;
/**
 * I18n实例
 * 自定义配置
 */
declare class Intl {
    plugins: IntlModule[];
    i18nInstance: I18next;
    ignoreWarning: boolean;
    constructor();
    use(plugin: IntlModule): this;
    init(config: IntlInitOptions, initCallback?: Callback): Promise<{
        err: Error;
        t: TFunction;
    }>;
    get language(): string;
    setLang(lng: string, callback?: Callback): void;
    getLanguages(): FallbackLng;
    setLangWithPromise(lng: string): Promise<unknown>;
    dir(lng: string): "ltr" | "rtl";
    t: <TKeys extends TFunctionKeys = string, TInterpolationMap extends object = StringMap>(keys: TKeys | TKeys[], options?: TInterpolationMap, fallbackText?: string) => string | TKeys;
    addResourceBundle(lng: string, ns: string, resources: any, deep?: boolean, overwrite?: boolean): i18n;
}
export default Intl;
export { IntlMessageFormat };
