import React from 'react';
import { Translation, TranslationLocale, TranslationCustomLocales, InternalLocale } from './Context';
export type TranslationId = string;
export type TranslationIdAsFunction<T = TranslationCustomLocales> = (messages: T & Translation) => string;
export type TranslationArguments = Record<TranslationId, unknown>;
export type UseTranslationMessages<T = Translation> = TranslationId | Translation | TranslationCustomLocales | Record<TranslationLocale, T>;
export default function useTranslation<T = Translation>(messages?: UseTranslationMessages<T>, args?: TranslationArguments): any;
export type CombineWithExternalTranslationsArgs = {
    translation: Translation;
    messages?: TranslationCustomLocales;
    locale?: InternalLocale;
};
export type AdditionalReturnUtils = {
    formatMessage: typeof formatMessage;
    renderMessage: typeof renderMessage;
};
export type CombineWithExternalTranslationsReturn = Translation & TranslationCustomLocales & AdditionalReturnUtils;
export declare function useAdditionalUtils(): {
    assignUtils: (translations: CombineWithExternalTranslationsReturn) => CombineWithExternalTranslationsReturn;
};
export declare function combineWithExternalTranslations({ translation, messages, locale, }: CombineWithExternalTranslationsArgs): CombineWithExternalTranslationsReturn;
export declare function formatMessage(id: TranslationId | TranslationIdAsFunction, args?: TranslationArguments, messages?: TranslationCustomLocales): any;
export declare function renderMessage(text: string | Array<React.ReactNode>): string | React.ReactNode;
