import type { Locale, InterpolationValues } from './I18n';
import { I18nManager } from './I18n';
/**
* Provider component to supply a custom I18nManager to the tree.
* If not used, the global singleton (getI18n()) is used automatically.
*/
export declare function I18nProvider({ i18n, children, }: {
i18n: I18nManager;
children: React.ReactNode;
}): React.ReactElement;
export interface UseTranslationResult {
/** Translate a key */
t: (key: string, values?: InterpolationValues) => string;
/** Current locale */
locale: Locale;
/** Change locale */
setLocale: (locale: Locale) => void;
/** Is current locale RTL? */
isRTL: boolean;
/** The underlying I18nManager */
i18n: I18nManager;
/** All supported locales */
locales: readonly Locale[];
/** Get human-readable name for a locale */
localeName: (locale: Locale) => string;
/** Format a number */
formatNumber: (value: number, options?: Intl.NumberFormatOptions) => string;
/** Format a date */
formatDate: (date: Date, options?: Intl.DateTimeFormatOptions) => string;
}
/**
* React hook for translations.
*
* @param defaultNamespace - Optional default namespace prefix
* @returns Translation utilities
*
* @example
* // Without namespace
* const { t } = useTranslation();
* t('engine:editor.tools.select');
*
* @example
* // With default namespace
* const { t } = useTranslation('engine');
* t('editor.tools.select'); // auto-prefixed to 'engine:editor.tools.select'
*/
export declare function useTranslation(defaultNamespace?: string): UseTranslationResult;
/**
* Declarative translated text component.
*
* @example
*
*
*/
export declare function TranslatedText({ tKey, values, ns, as: Tag, className, style, }: {
tKey: string;
values?: InterpolationValues;
ns?: string;
as?: keyof JSX.IntrinsicElements;
className?: string;
style?: React.CSSProperties;
}): React.ReactElement;
/**
* Dropdown for switching locale.
*
* @example
*
*
*/
export declare function LocaleSelect({ showNativeName, className, style, }?: {
showNativeName?: boolean;
className?: string;
style?: React.CSSProperties;
}): React.ReactElement;