import type { ReactNode } from 'react'; import type Formats from './Formats.js'; import type ICUArgs from './ICUArgs.js'; import type ICUTags from './ICUTags.js'; import type IntlConfig from './IntlConfig.js'; import type { MessageKeys, NamespaceKeys, NestedKeyOf, NestedValueOf } from './MessageKeys.js'; import type { MarkupTagsFunction, RichTagsFunction, TranslationValues } from './TranslationValues.js'; import { type Formatters, type IntlCache } from './formatters.js'; import type { Prettify } from './types.js'; type ICUArgsWithTags = ICUArgs & ([TagsFn] extends [never] ? {} : ICUTags); type OnlyOptional = Partial extends T ? true : false; export type TranslateArgs = string extends Value ? [ values?: Record, formats?: Formats ] : (Value extends any ? (key: ICUArgsWithTags) => void : never) extends (key: infer Args) => void ? OnlyOptional extends true ? [values?: undefined, formats?: Formats] : [values: Prettify, formats?: Formats] : never; type IntlMessages = Record; type NamespacedMessageKeys> = never> = MessageKeys, NestedKeyOf>>; type NamespacedValue>, TargetKey extends NamespacedMessageKeys> = NestedValueOf; /** * @private Not intended for direct use. */ export type Translator> = never> = { >(key: TargetKey, ...args: TranslateArgs>): string; rich>(key: TargetKey, ...args: TranslateArgs, RichTagsFunction>): ReactNode; markup>(key: TargetKey, ...args: TranslateArgs, MarkupTagsFunction>): string; raw>(key: TargetKey): any; has>(key: TargetKey): boolean; }; /** * Translates messages from the given namespace by using the ICU syntax. * See https://formatjs.io/docs/core-concepts/icu-syntax. * * If no namespace is provided, all available messages are returned. * The namespace can also indicate nesting by using a dot * (e.g. `namespace.Component`). */ export default function createTranslator> = never>({ _cache, _formatters, getMessageFallback, messages, namespace, onError, ...rest }: Omit & { messages?: TranslatorMessages; namespace?: Namespace; /** @private */ _formatters?: Formatters; /** @private */ _cache?: IntlCache; }): Translator; export {};