import { Observable } from 'rxjs';
import { ID, Obj, UploaderOptions, UploadFile, UploadTask, FileChunk } from '../../interface';
import Base from '../Base';
export declare abstract class TaskHandler extends Base {
    task: UploadTask;
    protected uploaderOptions: UploaderOptions;
    constructor(task: UploadTask, uploaderOptions: UploaderOptions);
    abstract handle(): this;
    abstract pause(): this;
    abstract resume(): this;
    abstract retry(): this;
    abstract abort(): this;
    abstract abortFile(...files: UploadFile[]): this;
    abstract pauseFile(...files: UploadFile[]): this;
    protected computeFileHash(file: Blob | ArrayBuffer): Observable<string>;
    protected computeFileMd5ByWorker(uploadFile: UploadFile): Observable<string>;
    protected computeFileMd5ByWorker(blob: Blob): Observable<string>;
    protected toFormData(params: Obj): FormData;
    protected getServerURL(uploadfile: UploadFile, chunk: FileChunk): Observable<string>;
    protected getRequestMethod(uploadfile: UploadFile, chunk: FileChunk): Observable<"GET" | "POST" | "PUT" | "PATCH" | "DELETE" | undefined>;
    protected getResponseType(uploadfile: UploadFile, chunk: FileChunk): Observable<"text" | "json" | undefined>;
    protected getRequestHeaders(uploadfile: UploadFile, chunk: FileChunk): Observable<Obj | undefined>;
    protected getRequestParams(uploadfile: UploadFile, chunk: FileChunk, baseParams: Obj): Observable<Obj | undefined>;
    protected getUploadFileByID(id: ID): Observable<Nullable<UploadFile>>;
    protected readFile(uploadfile: UploadFile, start?: number, end?: number): Observable<Blob>;
    protected isResumable(): Boolean;
}
