import { MatrixEvent, Room } from "matrix-js-sdk/src/matrix";
import { ExportType, IExportOptions } from "./exportUtils";
type BlobFile = {
    name: string;
    blob: Blob;
};
export default abstract class Exporter {
    protected room: Room;
    protected exportType: ExportType;
    protected exportOptions: IExportOptions;
    protected setProgressText: React.Dispatch<React.SetStateAction<string>>;
    protected files: BlobFile[];
    protected cancelled: boolean;
    protected constructor(room: Room, exportType: ExportType, exportOptions: IExportOptions, setProgressText: React.Dispatch<React.SetStateAction<string>>);
    get destinationFileName(): string;
    protected onBeforeUnload(e: BeforeUnloadEvent): string;
    protected updateProgress(progress: string, log?: boolean, show?: boolean): void;
    protected addFile(filePath: string, blob: Blob): void;
    protected makeFileNameNoExtension(brand?: string): string;
    protected downloadZIP(): Promise<string | void>;
    protected cleanUp(): string;
    cancelExport(): Promise<void>;
    protected downloadPlainText(fileName: string, text: string): void;
    protected setEventMetadata(event: MatrixEvent): MatrixEvent;
    getLimit(): number;
    protected getRequiredEvents(): Promise<MatrixEvent[]>;
    /**
     * Decrypts if necessary, and fetches media from a matrix event
     * @param event - matrix event with media event content
     * @resolves when media has been fetched
     * @throws if media was unable to be fetched
     */
    protected getMediaBlob(event: MatrixEvent): Promise<Blob>;
    splitFileName(file: string): string[];
    getFilePath(event: MatrixEvent): string;
    protected isReply(event: MatrixEvent): boolean;
    protected isAttachment(mxEv: MatrixEvent): boolean;
    abstract export(): Promise<void>;
}
export {};
