import type { InjectionKey, Ref, ShallowRef } from 'vue'; export interface LocaleMessages { [key: string]: LocaleMessages | string; } export interface LocaleOptions { decimalSeparator?: string; messages?: LocaleMessages; locale?: string; fallback?: string; adapter?: LocaleInstance; } export interface LocaleInstance { name: string; decimalSeparator: ShallowRef; messages: Ref; current: Ref; fallback: Ref; t: (key: string, ...params: unknown[]) => string; n: (value: number) => string; provide: (props: LocaleOptions) => LocaleInstance; } export declare const LocaleSymbol: InjectionKey; export declare function createLocale(options?: LocaleOptions & RtlOptions): { name: string; decimalSeparator: ShallowRef; messages: Ref; current: Ref; fallback: Ref; t: (key: string, ...params: unknown[]) => string; n: (value: number) => string; provide: (props: LocaleOptions) => LocaleInstance; isRtl: Ref; rtl: Ref>; rtlClasses: Ref; }; export declare function useLocale(): LocaleInstance & RtlInstance; export declare function provideLocale(props: LocaleOptions & RtlProps): { name: string; decimalSeparator: ShallowRef; messages: Ref; current: Ref; fallback: Ref; t: (key: string, ...params: unknown[]) => string; n: (value: number) => string; provide: (props: LocaleOptions) => LocaleInstance; isRtl: Ref; rtl: Ref>; rtlClasses: Ref; }; export interface RtlOptions { rtl?: Record; } export interface RtlProps { rtl?: boolean; } export interface RtlInstance { isRtl: Ref; rtl: Ref>; rtlClasses: Ref; } export declare const RtlSymbol: InjectionKey; export declare function createRtl(i18n: LocaleInstance, options?: RtlOptions): RtlInstance; export declare function provideRtl(locale: LocaleInstance, rtl: RtlInstance['rtl'], props: RtlProps): RtlInstance; export declare function useRtl(): { isRtl: Ref; rtlClasses: Ref; };