import { CrowdinContextInfo, Environments, ModuleKey, UiModule } from '../../types';
import Crowdin, { SourceFilesModel, ProjectsGroupsModel, LanguagesModel, SourceStringsModel, StringTranslationsModel } from '@crowdin/crowdin-api-client';
export interface ExternalQaCheckModule extends Environments, ModuleKey {
    /**
     * module description
     */
    description?: string;
    /**
     * module name
     */
    name?: string;
    /**
     * jobs chunk size
     */
    batchSize?: number;
    validate: ({ client, file, project, sourceLanguage, strings, targetLanguage, translations, context, }: {
        client?: Crowdin;
        file?: SourceFilesModel.File;
        project?: ProjectsGroupsModel.Project;
        sourceLanguage: LanguagesModel.Language;
        strings: SourceStringsModel.String[];
        targetLanguage: LanguagesModel.Language;
        translations: StringTranslationsModel.StringTranslation[];
        context: CrowdinContextInfo;
    }) => Promise<ExternalQaCheckResponse>;
    /**
     * Settings UI module
     */
    settingsUiModule?: UiModule;
}
export interface ExternalQaCheckRequest {
    file: SourceFilesModel.File;
    project: ProjectsGroupsModel.Project;
    sourceLanguage: LanguagesModel.Language;
    strings: SourceStringsModel.String[];
    targetLanguage: LanguagesModel.Language;
    translations: StringTranslationsModel.StringTranslation[];
}
interface SuggestedFix {
    indexStart: number;
    indexEnd: number;
    replacement: string;
}
interface ValidationError {
    message: string;
    suggestedFixes?: SuggestedFix[];
}
interface Validation {
    translationId: number;
    passed: boolean;
    error?: ValidationError;
}
export interface ExternalQaCheckResponse {
    validations: Validation[];
    error?: string;
}
export {};
