import { CancellableUpload, InitiatedUploadWithFile, MultipartUploadChunk, OneUploadCompleteCallback, PendingChunkUpload, PresignedRequestInfo, SingleFileUploadChunk, UploadChunk, UploadCompleteCallback, UploadedChunk, UploadedFile, UploadErrorCallback, UploadProgressCallback } from './types';
export declare class UploadManager {
    private onProgress;
    private onComplete;
    private onUploadComplete;
    private onError;
    private getPartRequest;
    private uploads;
    private chunks;
    private totalChunksCount;
    private completedChunksCount;
    private maxConcurrent;
    private cancelAllOnError;
    private isCanceled;
    private pendingChunkUploads;
    private completedChunks;
    private completedUploads;
    private uploadPromise;
    private resolvePromise;
    private rejectPromise;
    constructor({ uploads, maxConcurrent, cancelAllOnError, onProgress, onComplete, onUploadComplete, onError, getPartRequest, }: {
        onProgress?: UploadProgressCallback;
        onComplete?: UploadCompleteCallback;
        onUploadComplete?: OneUploadCompleteCallback;
        onError?: UploadErrorCallback;
        cancelAllOnError?: boolean;
        uploads: InitiatedUploadWithFile[];
        maxConcurrent: number;
        getPartRequest?: (upload: MultipartUploadChunk) => Promise<PresignedRequestInfo>;
    });
    prepareChunks(): Promise<void>;
    start(): Promise<CancellableUpload[]>;
    upload(): void;
    completeOne(upload: InitiatedUploadWithFile): void;
    complete(): void;
    promise(): Promise<UploadedFile[]>;
    cancel(reason?: string): void;
    cancelOne(uploadId: string): void;
    chunkCompleted(uploadedChunk: UploadedChunk): void;
    chunkErrored(erroredChunk: PendingChunkUpload, error: Error): void;
    uploadChunk(chunk: UploadChunk): PendingChunkUpload;
    performSingleFileUpload(abortController: AbortController | {
        abort: () => void;
        signal: null;
    }, chunk: SingleFileUploadChunk): Promise<UploadedChunk>;
    performMultipartUpload(abortController: AbortController | {
        abort: () => void;
        signal: null;
    }, chunk: MultipartUploadChunk): Promise<UploadedChunk>;
}
