///
///
///
import type { DataItem, DataItemCreateOptions } from "arbundles";
import type { Readable } from "stream";
import { EventEmitter } from "events";
import type Api from "./api.js";
import { type Arbundles, type Token, type UploadOptions, type UploadResponse } from "./types.js";
import type { AxiosResponse } from "axios";
type ChunkingUploaderEvents = {
chunkUpload: ({ id, offset, size, totalUploaded }: {
id: number;
offset: number;
size: number;
totalUploaded: number;
}) => void;
chunkError: ({ id, offset, size, res }: {
id: number;
offset: number;
size: number;
res: AxiosResponse;
}) => void;
resume: () => void;
pause: () => void;
done: (finishedUpload: any) => void;
};
export declare interface ChunkingUploader {
on(event: U, listener: ChunkingUploaderEvents[U]): this;
emit(event: U, ...args: Parameters): boolean;
}
export declare class ChunkingUploader extends EventEmitter {
protected tokenConfig: Token;
protected api: Api;
uploadID: string;
protected token: string;
protected chunkSize: number;
protected batchSize: number;
protected paused: boolean;
protected isResume: boolean;
protected uploadOptions: UploadOptions | undefined;
protected arbundles: Arbundles;
constructor(tokenConfig: Token, api: Api);
setResumeData(uploadID: string | undefined): this;
/**
* Note: Will return undefined unless an upload has been started.
* @returns
*/
getResumeData(): string | undefined;
setChunkSize(size: number): this;
setBatchSize(size: number): this;
pause(): void;
resume(): void;
uploadTransaction(data: Readable | Buffer | DataItem, opts?: UploadOptions): Promise>;
uploadData(dataStream: Readable | Buffer, options?: DataItemCreateOptions & {
upload?: UploadOptions;
}): Promise>;
runUpload(dataStream: Readable | Buffer, transactionOpts?: DataItemCreateOptions & {
upload?: UploadOptions;
}): Promise>;
get completionPromise(): Promise>;
}
export {};