import { Path } from '@intlify/message-resolver'; export declare type CoreMissingType = 'translate' | 'datetime format' | 'number format'; export declare function createMessageContext(options?: MessageContextOptions): MessageContext; export declare const DEFAULT_MESSAGE_DATA_TYPE = "text"; declare type ExtractToStringFunction = T[ExtractToStringKey]; declare type ExtractToStringKey = Extract; /** @VueI18nGeneral */ export declare type FallbackLocale = Locale | Locale[] | { [locale in string]: Locale[]; } | false; /** @VueI18nGeneral */ export declare type LinkedModifiers = { [key: string]: LinkedModify; }; export declare type LinkedModify = (value: T) => MessageType; /** @VueI18nGeneral */ export declare type Locale = string; export declare interface MessageContext { list(index: number): unknown; named(key: string): unknown; plural(messages: T[]): T; linked(key: Path, modifier?: string): MessageType; message(key: Path): MessageFunction; type: string; interpolate: MessageInterpolate; normalize: MessageNormalize; } export declare interface MessageContextOptions { parent?: MessageContext; locale?: string; list?: unknown[]; named?: NamedValue; modifiers?: LinkedModifiers; pluralIndex?: number; pluralRules?: PluralizationRules; messages?: MessageFunctions | MessageResolveFunction; processor?: MessageProcessor; } export declare type MessageFunction = MessageFunctionCallable | MessageFunctionInternal; export declare type MessageFunctionCallable = (ctx: MessageContext) => MessageType; export declare type MessageFunctionInternal = { (ctx: MessageContext): MessageType; key?: string; locale?: string; source?: string; }; export declare type MessageFunctions = Record>; export declare type MessageInterpolate = (val: unknown) => MessageType; export declare type MessageNormalize = (values: MessageType[]) => MessageType; export declare interface MessageProcessor { type?: string; interpolate?: MessageInterpolate; normalize?: MessageNormalize; } export declare type MessageResolveFunction = (key: string) => MessageFunction; export declare type MessageType = T extends string ? string : StringConvertable; /** @VueI18nGeneral */ export declare type NamedValue = T & Record; export declare type PluralizationProps = { n?: number; count?: number; }; export declare type PluralizationRule = (choice: number, choicesLength: number, orgRule?: PluralizationRule) => number; /** @VueI18nGeneral */ export declare type PluralizationRules = { [locale: string]: PluralizationRule; }; declare type StringConvertable = ExtractToStringKey extends never ? unknown : ExtractToStringFunction extends (...args: any) => string ? T : unknown; export { }