import DownloaderUploader from "@newSdk/factory/DownloaderUploader";
import { BucketInfoType } from "@newSdk/model/BucketInfo";
export declare type ProgressHandler = (progressEvent: any) => void;
export declare type ThumbInfo = {
    width: number;
    height: number;
    isBig?: boolean;
};
export declare type FileInfo = {
    filename: string;
    fileType: string;
    bucketID?: string;
};
export default abstract class BaseDownloader extends DownloaderUploader {
    abstract download(key: FileInfo, thumbInfo?: ThumbInfo, handler?: ProgressHandler): Promise<any>;
    abstract downloadUrl(key: FileInfo, thumbInfo?: ThumbInfo, handler?: ProgressHandler): Promise<any>;
    abstract headObject(key: FileInfo): Promise<any>;
    abstract getObjectSize(key: FileInfo): Promise<number>;
    abstract downloadThump(key: FileInfo, thumbInfo: ThumbInfo, handler?: ProgressHandler): Promise<any>;
    abstract downloadStream(key: FileInfo): Promise<{
        body: ReadableStream;
        total: number;
    } | undefined>;
    getBucketInfo(): Promise<BucketInfoType>;
    streamToBuffer(stream: ReadableStream, total: number, handler?: ProgressHandler): Promise<any>;
}
