import { createLocaleFromRouteGetter, LocaleObject } from 'vue-i18n-routing';
import type { Route, RouteLocationNormalized, RouteLocationNormalizedLoaded, BaseUrlResolveHandler, PrefixableOptions, SwitchLocalePathIntercepter } from 'vue-i18n-routing';
import type { NuxtApp } from '#app';
import type { I18n, Locale, FallbackLocale, LocaleMessages, DefineLocaleMessage } from 'vue-i18n';
import type { NuxtI18nOptions, DetectBrowserLanguageOptions } from '#build/i18n.options.mjs';
import type { DetectLocaleContext } from '#build/i18n.internal.mjs';
import type { DeepRequired } from 'ts-essentials';
export declare function _setLocale(i18n: I18n, locale: Locale): any;
export declare function setCookieLocale(i18n: I18n, locale: Locale): any;
export declare function setLocaleMessage(i18n: I18n, locale: Locale, messages: Record<string, any>): any;
export declare function mergeLocaleMessage(i18n: I18n, locale: Locale, messages: Record<string, any>): any;
export declare function onLanguageSwitched(i18n: I18n, oldLocale: string, newLocale: string): void;
export declare function finalizePendingLocaleChange(i18n: I18n): Promise<any>;
export declare function loadInitialMessages<Context extends NuxtApp = NuxtApp>(context: Context, messages: LocaleMessages<DefineLocaleMessage>, options: DeepRequired<NuxtI18nOptions<Context>> & {
    initialLocale: Locale;
    fallbackLocale: FallbackLocale;
    localeCodes: string[];
}): Promise<Record<string, any>>;
export declare function loadAndSetLocale<Context extends NuxtApp = NuxtApp>(newLocale: string, context: Context, i18n: I18n, { useCookie, skipSettingLocaleOnNavigate, differentDomains, initial, lazy }?: Pick<DetectBrowserLanguageOptions, 'useCookie'> & Pick<NuxtI18nOptions<Context>, 'lazy' | 'skipSettingLocaleOnNavigate' | 'differentDomains'> & {
    initial?: boolean;
}): Promise<[boolean, string]>;
type LocaleLoader = () => Locale;
export declare function detectLocale<Context extends NuxtApp = NuxtApp>(route: string | Route | RouteLocationNormalized | RouteLocationNormalizedLoaded, context: any, routeLocaleGetter: ReturnType<typeof createLocaleFromRouteGetter>, nuxtI18nOptions: DeepRequired<NuxtI18nOptions<Context>>, initialLocaleLoader: Locale | LocaleLoader, detectLocaleContext: DetectLocaleContext, normalizedLocales: LocaleObject[], localeCodes?: string[]): any;
export declare function detectRedirect<Context extends NuxtApp = NuxtApp>({ route, context, targetLocale, routeLocaleGetter, nuxtI18nOptions, calledWithRouting }: {
    route: {
        to: Route | RouteLocationNormalized | RouteLocationNormalizedLoaded;
        from?: Route | RouteLocationNormalized | RouteLocationNormalizedLoaded;
    };
    context: Context;
    targetLocale: Locale;
    routeLocaleGetter: ReturnType<typeof createLocaleFromRouteGetter>;
    nuxtI18nOptions: DeepRequired<NuxtI18nOptions<Context>>;
    calledWithRouting?: boolean;
}): string;
type NavigateArgs = {
    i18n: I18n;
    redirectPath: string;
    locale: string;
    route: Route | RouteLocationNormalized | RouteLocationNormalizedLoaded;
};
export declare function navigate<Context extends NuxtApp = NuxtApp>(args: NavigateArgs, { status, rootRedirect, differentDomains, skipSettingLocaleOnNavigate, enableNavigate }?: {
    status?: number;
    enableNavigate?: boolean;
} & Pick<NuxtI18nOptions<Context>, 'skipSettingLocaleOnNavigate' | 'differentDomains' | 'rootRedirect'>): Promise<any>;
export declare function injectNuxtHelpers(nuxt: NuxtApp, i18n: I18n): void;
export declare function extendPrefixable(differentDomains: boolean): (opts: PrefixableOptions) => boolean;
export declare function extendSwitchLocalePathIntercepter(differentDomains: boolean, normalizedLocales: LocaleObject[], nuxt: NuxtApp): SwitchLocalePathIntercepter;
export declare function extendBaseUrl<Context extends NuxtApp = NuxtApp>(baseUrl: string | BaseUrlResolveHandler<Context>, options: Pick<Required<NuxtI18nOptions<Context>>, 'differentDomains'> & {
    nuxt?: Context;
    localeCodeLoader: Locale | LocaleLoader;
    normalizedLocales: LocaleObject[];
}): BaseUrlResolveHandler<Context>;
export {};
