import { Language, Translations } from './translationsReader';
import { Either } from './utils';
export declare const readTranslations: (reader: () => Promise<Either<Error, Record<Language, Translations>>>) => Promise<Either<Error, Record<Language, Translations>>>;
export declare const getMissingTranslations: (defaultTranslations: Translations, targetTranslations: Translations) => Translations;
export declare const extractDefaultAndOthers: (defaultLanguage: Language, translations: Record<Language, Translations>) => {
    default: {
        language: string;
        translations: Translations;
    };
    others: {
        language: string;
        translations: Translations;
    }[];
};
export declare const extractMissingTranslations: (translations: {
    default: TranslationWithLanguageCode;
    others: TranslationWithLanguageCode[];
}) => TranslationWithLanguageCode[];
export declare const addTranslator: (defaultLanguage: Language, translator: (text: string) => Promise<string>) => (translation: TranslationWithLanguageCode) => TranslationWithTranslator;
export declare const translate: (translation: TranslationWithTranslator) => Promise<Either<Error, TranslationWithLanguageCode>>;
export declare const addMissingTranslations: (defaultLanguage: Language, dependencies: TranslationsParserDependencies) => Promise<void>;
export type TranslationsParserDependencies = {
    reader: () => Promise<Either<Error, Record<Language, Translations>>>;
    writer: (translations: Record<Language, Translations>) => Promise<Either<Error, void>>;
    translator: (text: string) => Promise<string>;
};
export type TranslationWithLanguageCode = {
    language: Language;
    translations: Translations;
};
export type TranslationWithTranslator = TranslationWithLanguageCode & {
    translate: (text: string) => Promise<string>;
};
