import { CrowdinApi, DownloadLink, PaginationOptions, PatchRequest, ResponseList, ResponseObject, Status } from '../core';
/**
 * Translation Memory (TM) is a vault of translations that were previously made in other projects.
 * Those translations can be reused to speed up the translation process.
 * Every translation made in the project is automatically added to the project Translation Memory.
 *
 * Use API to create, upload, download, or remove specific TM.
 * Translation Memory export and import are asynchronous operations and shall be completed with sequence of API methods.
 */
export declare class TranslationMemory extends CrowdinApi {
    /**
     * @param options optional paramerers for the request
     * @see https://developer.crowdin.com/api/v2/#operation/api.tms.getMany
     */
    listTm(options?: TranslationMemoryModel.ListTMsOptions): Promise<ResponseList<TranslationMemoryModel.TranslationMemory>>;
    /**
     * @param groupId group identifier
     * @param limit maximum number of items to retrieve (default 25)
     * @param offset starting offset in the collection (default 0)
     * @deprecated optional parameters should be passed through an object
     * @see https://developer.crowdin.com/api/v2/#operation/api.tms.getMany
     */
    listTm(groupId?: number, limit?: number, offset?: number): Promise<ResponseList<TranslationMemoryModel.TranslationMemory>>;
    /**
     * @param request request body
     * @see https://developer.crowdin.com/api/v2/#operation/api.tms.post
     */
    addTm(request: TranslationMemoryModel.AddTranslationMemoryRequest): Promise<ResponseObject<TranslationMemoryModel.TranslationMemory>>;
    /**
     * @param tmId tm identifier
     * @see https://developer.crowdin.com/api/v2/#operation/api.tms.get
     */
    getTm(tmId: number): Promise<ResponseObject<TranslationMemoryModel.TranslationMemory>>;
    /**
     * @param tmId tm identifier
     * @see https://developer.crowdin.com/api/v2/#operation/api.tms.delete
     */
    deleteTm(tmId: number): Promise<void>;
    /**
     * @param tmId tm identifier
     * @param request request body
     * @see https://developer.crowdin.com/api/v2/#operation/api.tms.patch
     */
    editTm(tmId: number, request: PatchRequest[]): Promise<ResponseObject<TranslationMemoryModel.TranslationMemory>>;
    /**
     * @param tmId tm identifier
     * @param options optional paramerers for the request
     * @see https://developer.crowdin.com/api/v2/#operation/api.tms.segments.getMany
     */
    listTmSegments(tmId: number, options?: TranslationMemoryModel.ListSegmentsOptions): Promise<ResponseList<TranslationMemoryModel.TMSegment>>;
    /**
     * @param tmId tm identifier
     * @param request request body
     * @see https://developer.crowdin.com/api/v2/#operation/api.tms.segments.post
     */
    addTmSegment(tmId: number, request: TranslationMemoryModel.AddTMSegment): Promise<ResponseObject<TranslationMemoryModel.TMSegment>>;
    /**
     * @param tmId tm identifier
     * @see https://developer.crowdin.com/api/v2/#operation/api.tms.segments.clear
     */
    clearTm(tmId: number): Promise<void>;
    /**
     * @param tmId tm identifier
     * @param request request body
     * @see https://developer.crowdin.com/api/v2/#operation/api.tms.exports.post
     */
    exportTm(tmId: number, request?: TranslationMemoryModel.ExportTranslationMemoryRequest): Promise<ResponseObject<Status<TranslationMemoryModel.ExportTranslationMemoryAttribute>>>;
    /**
     * @param tmId tm identifier
     * @param exportId export identifier
     * @see https://developer.crowdin.com/api/v2/#operation/api.tms.exports.get
     */
    checkExportStatus(tmId: number, exportId: string): Promise<ResponseObject<Status<TranslationMemoryModel.ExportTranslationMemoryAttribute>>>;
    /**
     * @param tmId tm identifier
     * @param exportId export identifier
     * @see https://developer.crowdin.com/api/v2/#operation/api.tms.exports.download.download
     */
    downloadTm(tmId: number, exportId: string): Promise<ResponseObject<DownloadLink>>;
    /**
     * @param projectId project identifier
     * @param request request body
     * @see https://developer.crowdin.com/api/v2/#operation/api.projects.tms.concordance.post
     */
    concordanceSearch(projectId: number, request: TranslationMemoryModel.ConcordanceSearchRequest): Promise<ResponseList<TranslationMemoryModel.ConcordanceSearchResponse>>;
    /**
     * @param tmId tm identifier
     * @param request request body
     * @see https://developer.crowdin.com/api/v2/#operation/api.tms.imports.post
     */
    importTm(tmId: number, request: TranslationMemoryModel.ImportTranslationMemoryRequest): Promise<ResponseObject<Status<TranslationMemoryModel.ImportTranslationMemoryAttribute>>>;
    /**
     * @param tmId tm identifier
     * @param importId import identifier
     * @see https://developer.crowdin.com/api/v2/#operation/api.tms.imports.get
     */
    checkImportStatus(tmId: number, importId: string): Promise<ResponseObject<Status<TranslationMemoryModel.ImportTranslationMemoryAttribute>>>;
    /**
     * @param tmId tm identifier
     * @param segmentId segment identifier
     * @see https://developer.crowdin.com/api/v2/#operation/api.tms.segments.get
     */
    getTmSegment(tmId: number, segmentId: number): Promise<ResponseObject<TranslationMemoryModel.TMSegment>>;
    /**
     * @param tmId tm identifier
     * @param segmentId segment identifier
     * @see https://developer.crowdin.com/api/v2/#operation/api.tms.segments.delete
     */
    deleteTmSegment(tmId: number, segmentId: number): Promise<void>;
    /**
     * @param tmId tm identifier
     * @param segmentId segment identifier
     * @param request request body
     * @see https://developer.crowdin.com/api/v2/#operation/api.tms.segments.patch
     */
    editTmSegment(tmId: number, segmentId: number, request: PatchRequest[]): Promise<ResponseObject<TranslationMemoryModel.TMSegment>>;
    /**
     * @deprecated
     * @param tmId tm identifier
     * @param segmentId segment identifier
     * @param recordId record identifier
     * @see https://developer.crowdin.com/api/v2/#operation/api.tms.segments.records.delete
     */
    deleteTmSegmentRecord(tmId: number, segmentId: number, recordId: number): Promise<void>;
    /**
     * @deprecated
     * @param tmId tm identifier
     * @param segmentId segment identifier
     * @param recordId record identifier
     * @param request request body
     * @see https://developer.crowdin.com/api/v2/#operation/api.tms.segments.records.patch
     */
    editTmSegmentRecord(tmId: number, segmentId: number, recordId: number, request: PatchRequest[]): Promise<ResponseObject<TranslationMemoryModel.TMSegment>>;
    /**
     * @deprecated
     * @param tmId tm identifier
     * @param segmentId segment identifier
     * @param request request body
     * @see https://developer.crowdin.com/api/v2/#operation/api.tms.segments.records.post
     */
    addTmSegmentRecords(tmId: number, segmentId: number, request: TranslationMemoryModel.AddTMSegment): Promise<ResponseObject<TranslationMemoryModel.TMSegment>>;
}
export declare namespace TranslationMemoryModel {
    interface TranslationMemory {
        id: number;
        groupId: number;
        userId: number;
        name: string;
        languageId: string;
        languageIds: string[];
        segmentsCount: number;
        defaultProjectIds: number[];
        projectIds: number[];
        createdAt: string;
        webUrl: string;
    }
    interface AddTranslationMemoryRequest {
        name: string;
        languageId: string;
        groupId?: number;
    }
    interface ConcordanceSearchRequest {
        sourceLanguageId: string;
        targetLanguageId: string;
        autoSubstitution: boolean;
        minRelevant: number;
        expressions: string[];
        /**
         * @deprecated
         */
        expression?: string;
    }
    interface ConcordanceSearchResponse {
        tm: TranslationMemory;
        recordId: number;
        source: string;
        target: string;
        relevant: number;
        substituted: string;
        updatedAt: string;
    }
    interface ExportTranslationMemoryRequest {
        sourceLanguageId?: number;
        targetLanguageId?: number;
        format?: Format;
    }
    interface ImportTranslationMemoryRequest {
        storageId: number;
        firstLineContainsHeader?: boolean;
        scheme?: Scheme;
    }
    interface ExportTranslationMemoryAttribute {
        sourceLanguageId: string;
        targetLanguageId: string;
        format: string;
    }
    interface ImportTranslationMemoryAttribute {
        tmId: number;
        storageId: number;
        firstLineContainsHeader: number;
        scheme: Scheme;
    }
    type Format = 'tmx' | 'csv' | 'xlsx';
    interface Scheme {
        [key: string]: number;
    }
    interface ListTMsOptions extends PaginationOptions {
        groupId?: number;
        userId?: number;
        orderBy?: string;
    }
    interface ListSegmentsOptions extends PaginationOptions {
        croql?: string;
        orderBy?: string;
    }
    interface TMSegment {
        id: number;
        records: TMSegmentRecord[];
    }
    interface TMSegmentRecord {
        id: number;
        languageId: string;
        text: string;
        usageCount: number;
        createdBy: number;
        updatedBy: number;
        createdAt: string;
        updatedAt: string;
    }
    interface AddTMSegment {
        records: AddTMSegmentRecord[];
    }
    interface AddTMSegmentRecord {
        languageId: string;
        text: string;
    }
}
