import { FileItem, FileItemEventResponse, UploadOptions } from './file-item.class';
import { Observable } from 'rxjs/Observable';
export interface QueueOptions {
    queueLimit?: number;
    removeAfterUpload?: boolean;
    parallel?: boolean;
    retryFailedItem?: boolean;
}
export declare class QueueController {
    private queueOptions;
    private uploadingQueue;
    queueProgress: number;
    isUploading: boolean;
    private itemUploaded;
    private itemError;
    private itemPause;
    private itemProgress;
    private itemCancel;
    constructor(options: QueueOptions);
    onItemUploaded(): Observable<FileItemEventResponse>;
    onItemError(): Observable<FileItemEventResponse>;
    onItemPause(): Observable<FileItemEventResponse>;
    onItemProgress(): Observable<FileItemEventResponse>;
    onItemCancel(): Observable<FileItemEventResponse>;
    getNotUploadedItems(): any[];
    getQueueLenght(): number;
    addFilesToQueue(files: File[], options: UploadOptions, validate?: boolean): FileItem[];
    private subscribeToFileItemEvents(uploadingItem);
    addFileItemsToQueue(files: FileItem[], validate?: boolean): FileItem[];
    removeFromQueue(file: FileItem): void;
    uploadAll(): void;
    private getNextToUpload();
    cancelAll(): void;
    clearQueue(): void;
    private calculateProgress();
    private uploadItem(uploadingItem);
    private isFilesUploading();
}
