import { BatchUploadResult, IUploader, ProgressCallback, ServiceConfig, UploadResult } from '../types';
export declare abstract class BaseUploader implements IUploader {
    protected config: ServiceConfig;
    protected maxRetries: number;
    protected defaultChunkSize: number;
    constructor(config: ServiceConfig);
    /**
     * 上传单个文件或目录
     */
    upload(localPath: string, remotePath: string, options?: {
        overwrite?: boolean;
        enableResume?: boolean;
        maxRetries?: number;
        chunkSize?: number;
        onProgress?: ProgressCallback;
        customCacheControl?: string;
    }): Promise<UploadResult>;
    /**
     * 批量上传文件
     */
    uploadBatch(files: Array<{
        localPath: string;
        remotePath: string;
    }>, options?: {
        overwrite?: boolean;
        enableResume?: boolean;
        maxRetries?: number;
        chunkSize?: number;
        onProgress?: ProgressCallback;
    }): Promise<BatchUploadResult>;
    /**
     * 上传目录
     */
    private uploadDirectory;
    /**
     * 上传单个文件（抽象方法，由子类实现）
     */
    protected abstract uploadSingleFile(localPath: string, remotePath: string, options?: {
        overwrite?: boolean;
        enableResume?: boolean;
        maxRetries?: number;
        chunkSize?: number;
        onProgress?: ProgressCallback;
    }): Promise<UploadResult>;
    /**
     * 验证配置（抽象方法，由子类实现）
     */
    abstract validateConfig(): Promise<boolean>;
    /**
     * 重试机制
     */
    protected retryOperation<T>(operation: () => Promise<T>, maxRetries?: number, delay?: number): Promise<T>;
    /**
     * 睡眠函数
     */
    protected sleep(ms: number): Promise<void>;
    /**
     * 获取文件大小
     */
    protected getFileSize(filePath: string): Promise<number>;
    /**
     * 创建进度回调
     */
    protected createProgressCallback(fileName: string, onProgress?: ProgressCallback): (loaded: number, total: number) => void;
    /**
       * 获取上传头信息
       */
    protected getUploadHeaders(localPath: string, customCacheControl?: string): Record<string, string>;
}
//# sourceMappingURL=BaseUploader.d.ts.map