import { AbstractUploader, CommonOptions, VideoUploadResponse, WithAccessToken, WithApiKey, WithUploadToken } from "./abstract-uploader";
export interface ProgressiveUploadCommonOptions {
    preventEmptyParts?: boolean;
    mergeSmallPartsBeforeUpload?: boolean;
}
export interface ProgressiveUploaderOptionsWithUploadToken extends ProgressiveUploadCommonOptions, CommonOptions, WithUploadToken {
}
export interface ProgressiveUploaderOptionsWithAccessToken extends ProgressiveUploadCommonOptions, CommonOptions, WithAccessToken {
}
export interface ProgressiveUploaderOptionsWithApiKey extends ProgressiveUploadCommonOptions, CommonOptions, WithApiKey {
}
export interface ProgressiveUploadProgressEvent {
    part: number;
    uploadedBytes: number;
    totalBytes: number;
}
export declare class ProgressiveUploader extends AbstractUploader<ProgressiveUploadProgressEvent> {
    private currentPartNum;
    private currentPartBlobs;
    private currentPartBlobsSize;
    private queue;
    private preventEmptyParts;
    private fileName;
    private mergeSmallPartsBeforeUpload;
    private currentChunkCancel?;
    private canceled;
    constructor(options: ProgressiveUploaderOptionsWithAccessToken | ProgressiveUploaderOptionsWithUploadToken | ProgressiveUploaderOptionsWithApiKey);
    uploadPart(file: Blob): Promise<VideoUploadResponse | void>;
    cancel(): void;
    uploadLastPart(file: Blob): Promise<VideoUploadResponse>;
    private upload;
}
