export declare enum ServiceType {
    OSS = "oss",
    TOS = "tos"
}
export interface UploadProgress {
    loaded: number;
    total: number;
    percentage: number;
    fileName: string;
}
export interface UploadResult {
    success: boolean;
    fileName: string;
    localPath: string;
    remotePath: string;
    url?: string;
    error?: string;
    size?: number;
}
export interface BatchUploadResult {
    totalFiles: number;
    successCount: number;
    failedCount: number;
    results: UploadResult[];
    totalSize: number;
    duration: number;
}
export interface CDNConfig {
    accessKeyId: string;
    accessKeySecret: string;
    region?: string;
    endpoint?: string;
    cdnDomain?: string;
    autoRefresh?: boolean;
}
export interface TOSCDNConfig {
    cdnDomain: string;
}
export interface OSSConfig {
    region: string;
    accessKeyId: string;
    accessKeySecret: string;
    bucket: string;
    endpoint?: string;
    cdn?: CDNConfig;
}
export interface TOSConfig {
    region: string;
    accessKeyId: string;
    accessKeySecret: string;
    bucket: string;
    endpoint?: string;
    cdn?: TOSCDNConfig;
}
export interface ServiceConfig {
    name: string;
    type: ServiceType;
    config: OSSConfig | TOSConfig;
    isDefault?: boolean;
}
export interface GlobalConfig {
    services: ServiceConfig[];
    defaultService?: string;
}
export interface UploadOptions {
    serviceName: string;
    localPath: string;
    remotePath: string;
    overwrite?: boolean;
    enableResume?: boolean;
    maxRetries?: number;
    chunkSize?: number;
    contentsOnly?: boolean;
    customCacheControl?: string;
    preload?: boolean;
    preloadOptions?: {
        area?: 'domestic' | 'overseas';
        l2Preload?: boolean;
        withHeader?: Record<string, string[]>;
        queryHashkey?: boolean;
        consistencyHash?: boolean;
    };
}
export type ProgressCallback = (progress: UploadProgress) => void;
export interface IUploader {
    upload(localPath: string, remotePath: string, options?: {
        overwrite?: boolean;
        enableResume?: boolean;
        maxRetries?: number;
        chunkSize?: number;
        onProgress?: ProgressCallback;
    }): Promise<UploadResult>;
    uploadBatch(files: Array<{
        localPath: string;
        remotePath: string;
    }>, options?: {
        overwrite?: boolean;
        enableResume?: boolean;
        maxRetries?: number;
        chunkSize?: number;
        onProgress?: ProgressCallback;
    }): Promise<BatchUploadResult>;
    validateConfig(): Promise<boolean>;
    preloadCDNCache?(url: string, options?: any): Promise<boolean>;
    preloadCDNCacheBatch?(urls: string[], options?: any): Promise<{
        success: number;
        failed: number;
    }>;
}
export interface FileInfo {
    path: string;
    name: string;
    size: number;
    isDirectory: boolean;
    relativePath: string;
}
export interface CDNRefreshResult {
    success: boolean;
    taskId?: string;
    url?: string;
    error?: string;
}
export interface CDNRefreshTask {
    taskId: string;
    url: string;
    status: 'Complete' | 'Refreshing' | 'Failed';
    progress?: number;
    createTime?: string;
    finishTime?: string;
}
//# sourceMappingURL=index.d.ts.map