import { ComponentCustomProperties, Reactive, Ref, App } from 'vue';
import { components as I18nComponents } from 'topvisor-openapi/src/ts/I18n';
export type Lang = 'ru' | 'en';
type Options = {
    /**
     * Предзагруженные словари
     *
     * Для загрузки нужного словаря используйте @r/i18n.esm.js
     *
     * ```js
     * import '@r/i18n.esm.js?Projects';
     * ```
     */
    i18n: I18nComponents['schemas'];
    /**
     * Текущий язык
     */
    lang: Lang;
};
/**
 * Загруженные словари
 *
 * Для загрузки нужного словаря используйте @r/i18n.esm.js
 *
 * ```js
 * import '@r/i18n.esm.js?Projects';
 * ```
 */
type I18n = Reactive<Options['i18n']>;
type I18nRender = <T extends keyof I18n>(categoryName: T, key: keyof I18n[T], props: Record<string, number | string>) => string;
declare module '@vue/runtime-core' {
    interface ComponentCustomProperties {
        /**
         * Загруженные словари
         *
         * Можно использовать как функцию для подстановки значений в формате: `Текст {{ propName }}`
         *
         * @see I18n
         * @see I18nRender
         */
        $i18n: I18n & I18nRender;
        /**
         * Текущий язык
         */
        $i18nLang: Ref<Lang>;
    }
}
/**
 * Плагин работает в сваязке с плагином requirejs('i18n')
 *
 * При инициализации необходимо указать в $i18n объект с предзагруежнными словарями, остальные словари можно импортировать диномически вместе с
 * компонентами
 *
 * Внутри UI дозагрузка словарей недоступна и требует предзагрузки необходимых словарей
 *
 * Добавляет глобальные свойства:
 * - \$i18n
 * - \$i18nLang
 * - \$i18nL
 *
 * Для загрузки необходимого словаря указывайте его в зависимостях компонента:
 *
 * ```js
 * import '@r/i18n.esm.js?Projects';
 * ```
 *
 * В setup():
 *
 * ```js
 * useI18n().Projects.Site; // выполнит inject('$i18n').Projects.Site, не используйте inject('$i18n') напрямую, так как он не типизирован
 * ```
 *
 * В template:
 *
 * ```html
 * {{ $i18n.Projects.Site }}
 * ```
 *
 * С подстановкой значений:
 * ```html
 * 	{{ $i18n('Projects', 'Site', {name: value}) }}
 * 	```
 */
declare const _default: {
    install: (app: App<any>, options: Options) => void;
};
export default _default;
/**
 * Получить доступ к загруженным словарям
 *
 * @see I18n
 */
export declare const useI18n: () => ComponentCustomProperties["$i18n"];
/**
 * Текущий язык
 */
export declare const useI18nLang: () => Ref<Lang>;
