import type { i18n, TFunction } from 'i18next'; type TopicName = string; type TranslatorName = string; export type Translator = Record> = (params: { key: string; value: string; t: TFunction; options: O; }) => string | null; export type TranslationTopicOptions = Record> = { i18next: i18n; translators?: Record>; }; export declare abstract class TranslationTopic = Record> { protected options: TranslationTopicOptions; protected translators: Map>; protected i18next: i18n; constructor(options: TranslationTopicOptions); abstract translate(value: string, key: string, options: O): string; setTranslator: (name: string, translator: Translator) => void; removeTranslator: (name: string) => void; } export type TranslationTopicConstructor = new (options: TranslationTopicOptions) => TranslationTopic; export declare class TranslationBuilder { private i18next; private topics; private translatorRegistrationsBuffer; constructor(i18next: i18n); registerTopic: (name: TopicName, Topic: TranslationTopicConstructor) => TranslationTopic>; disableTopic: (topicName: TopicName) => void; getTopic: (topicName: TopicName) => TranslationTopic> | undefined; registerTranslators(topicName: TopicName, translators: Record): void; removeTranslators(topicName: TopicName, translators: TranslatorName[]): void; } export {}; //# sourceMappingURL=TranslationBuilder.d.ts.map