///
import { CompleteMultipartUploadCommandOutput } from "@aws-sdk/client-s3";
import { EventEmitter } from "events";
import { BodyDataTypes, Options, Progress } from "./types";
export interface RawDataPart {
partNumber: number;
data: BodyDataTypes;
lastPart?: boolean;
}
export declare class Upload extends EventEmitter {
/**
* S3 multipart upload does not allow more than 10,000 parts.
*/
private MAX_PARTS;
private readonly queueSize;
private readonly partSize;
private readonly leavePartsOnError;
private readonly tags;
private readonly client;
private readonly params;
private totalBytes?;
private bytesUploadedSoFar;
private abortController;
private concurrentUploaders;
private createMultiPartPromise?;
private abortMultipartUploadCommand;
private uploadedParts;
private uploadEnqueuedPartsCount;
/**
* Last UploadId if the upload was done with MultipartUpload and not PutObject.
*/
uploadId?: string;
uploadEvent?: string;
private isMultiPart;
private singleUploadResult?;
private sent;
constructor(options: Options);
abort(): Promise;
done(): Promise;
on(event: "httpUploadProgress", listener: (progress: Progress) => void): this;
private __uploadUsingPut;
private __createMultipartUpload;
private __doConcurrentUpload;
private __doMultipartUpload;
/**
* Abort the last multipart upload in progress
* if we know the upload id, the user did not specify to leave the parts, and
* we have a prepared AbortMultipartUpload command.
*/
private markUploadAsAborted;
private __notifyProgress;
private __abortTimeout;
private __validateInput;
}