import { TaskQueue } from '../upload-core/TaskQueue';
import type { RequestStrategy } from './RequestStrategy.ts';
import type { ChunkSplitor } from './split/ChunkSplitor.ts';
import type { Chunk } from './split/FileChunk.ts';
export interface FileListener {
    uploadSuccessListener(chunk: Chunk): void;
    chunkListener(chunks: Chunk[]): void;
    chunkEndListener(hash: string): void;
}
export declare class MaxFileUpload {
    private requestStrategy;
    private splitStrategy;
    private taskQueue;
    private file;
    private token;
    private uploadEmitter;
    private chunkSize;
    private fileListener;
    setFileListener(listener: FileListener): this;
    setRequestStrategy(requestStrategy: RequestStrategy): this;
    setSplitStrategy(splitStrategy: ChunkSplitor): this;
    setTaskQueue(taskQueue: TaskQueue): this;
    setFile(file: File): this;
    setToken(token: string): this;
    setChunkSize(chunkSize: number): this;
    static with(file: File): MaxFileUpload;
    private constructor();
    start(): Promise<void>;
    private handleChunks;
    uploadChunk(chunk: Chunk): Promise<void>;
    private handleWholeHash;
}
