import { EventEmitter } from './modules';
import { Observable } from 'rxjs';
import { FileChunk, ID, MaybePromise, TPromise, UploadFile, UploadTask } from '../interface';
export default class Base extends EventEmitter {
    private uploaderID?;
    protected constructor(uploaderID?: string | number | undefined);
    protected toObserverble<T>(input: TPromise<T>): Observable<T>;
    protected createObserverble<T>(input: T | ((...args: any[]) => TPromise<T>), ...args: any[]): Observable<T>;
    protected presist(task: UploadTask, file: UploadFile, chunk: FileChunk): void;
    presistChunkOnly(...chunks: FileChunk[]): Promise<void>;
    presistFileOnly(...files: UploadFile[]): Promise<void>;
    presistTaskOnly(...tasks: UploadTask[]): Promise<void>;
    protected presistUploadFile(file: UploadFile | undefined): Promise<any>;
    protected presistBlob(key: string, blob: Blob): Promise<unknown>;
    presistTaskWithoutBlob(tasks: UploadTask[], nofication$?: Observable<any>): Observable<UploadTask[]>;
    presistTask(tasks: UploadTask[], nofication$?: Observable<any>): Observable<UploadTask[]>;
    protected removeChunkFromStroage(...chunks: FileChunk[] | ID[]): Promise<void>;
    protected removeFileFromFileStore(...fileIDs: ID[]): void;
    protected removeFileFromStroage(...files: UploadFile[] | ID[]): Promise<void>;
    protected removeTaskFromStroage(...tasks: UploadTask[]): Promise<void>;
    protected clearStorage(uploaderID?: ID): Promise<unknown>;
    protected hookWrap<T extends MaybePromise, V = any>(fn: T, promiseValue?: V): Promise<any>;
}
