import { RestDocument } from "./RestDocument";
import { DocumentManager } from "./DocumentManager";
import { RestSession } from "../RestSession";
import { DocumentFile, FileCompress, FileExtract, HistoryEntry, Info, InfoType, PdfPassword } from "../../../generated-sources";
import { AxiosProgressEvent } from "axios";
import { RestDocumentState } from "./RestDocumentState";
export declare abstract class AbstractDocumentManager<T_REST_DOCUMENT extends RestDocument> implements DocumentManager<T_REST_DOCUMENT> {
    protected readonly session: RestSession<T_REST_DOCUMENT>;
    protected documentMap: Map<String, T_REST_DOCUMENT>;
    protected documentHistoryActive: boolean;
    constructor(session: RestSession<T_REST_DOCUMENT>);
    getSession(): RestSession<T_REST_DOCUMENT>;
    synchronizeDocument(documentFile: DocumentFile): Promise<T_REST_DOCUMENT>;
    synchronize(fileList?: Array<DocumentFile>): Promise<Array<T_REST_DOCUMENT>>;
    getDocument(documentId: string): T_REST_DOCUMENT;
    getDocuments(): Array<T_REST_DOCUMENT>;
    containsDocument(documentId: string): boolean;
    downloadDocument(documentId: string, options?: {
        onProgress?: (event: AxiosProgressEvent) => void;
        abortSignal?: AbortSignal;
    }): Promise<Buffer>;
    downloadArchive(documentIdList: Array<string>, options?: {
        onProgress?: (event: AxiosProgressEvent) => void;
        abortSignal?: AbortSignal;
    }): Promise<Buffer>;
    uploadDocument(data: Blob, fileName: string, options?: {
        onProgress?: (event: AxiosProgressEvent) => void;
        abortSignal?: AbortSignal;
    }): Promise<T_REST_DOCUMENT>;
    deleteDocument(documentId: string): Promise<void>;
    renameDocument(documentId: string, fileName: string): Promise<T_REST_DOCUMENT>;
    isDocumentHistoryActive(): boolean;
    setDocumentHistoryActive(documentHistoryActive: boolean): void;
    getDocumentHistory(documentId: string): Array<HistoryEntry>;
    getDocumentHistoryEntry(documentId: string, historyId: number): HistoryEntry;
    updateDocumentHistory(documentId: string, historyEntry: HistoryEntry): Promise<HistoryEntry>;
    protected abstract createDocument(documentFile: DocumentFile): T_REST_DOCUMENT;
    private createDocumentByFile;
    private synchronizeDocumentInfo;
    private synchronizeDocumentHistory;
    updateDocumentSecurity(documentId: string, passwordType: PdfPassword): Promise<T_REST_DOCUMENT>;
    private prepareHttpEntity;
    protected abstract accessInternalState(document: T_REST_DOCUMENT): RestDocumentState<T_REST_DOCUMENT>;
    getDocumentInfo(documentId: string, infoType: InfoType): Promise<Info>;
    extractDocument(documentId: string, fileExtract: FileExtract): Promise<Array<T_REST_DOCUMENT>>;
    extractArchiveFile(documentId: string, archivePath: string): Promise<Buffer>;
    compressDocuments(fileCompress: FileCompress): Promise<T_REST_DOCUMENT>;
    updateDocument(documentId: string, data: Blob): Promise<T_REST_DOCUMENT>;
}
