import { FileInfo, UploadStepEnum } from '../type';
/**
 * 持久化的文件信息（不包含File对象）
 */
interface PersistedFileInfo {
    fileId: string;
    fileName: string;
    fileSize: number;
    uploadedSize: number;
    progress: number;
    status: UploadStepEnum;
    mimeType?: string;
    lastUpdated?: number;
    totalChunks?: number;
    uploadInfo?: {
        parts?: Array<{
            etag: string;
            partNumber: number;
            partSize: number;
        }>;
        md5?: string;
        [key: string]: any;
    };
}
/**
 * 队列持久化管理器
 * 将上传队列状态保存到localStorage，支持浏览器刷新后恢复
 */
export declare class QueuePersistence {
    private enabled;
    private storageKey;
    private chunkStorageKey;
    constructor(enabled?: boolean, storageKey?: string);
    /**
     * 启用/禁用持久化
     */
    setEnabled(enabled: boolean): void;
    /**
     * 检查是否启用
     */
    isEnabled(): boolean;
    /**
     * 检查localStorage是否可用
     */
    private isStorageAvailable;
    /**
     * 保存文件队列状态
     */
    saveQueue(files: FileInfo[]): void;
    /**
     * 保存分片状态
     */
    saveChunkStatus(fileId: string, uploadedChunks: Set<number>, pendingChunks: Set<number>): void;
    /**
     * 加载文件队列状态
     */
    loadQueue(): PersistedFileInfo[];
    /**
     * 加载分片状态
     */
    loadChunkStatus(fileId: string): {
        uploaded: number[];
        pending: number[];
    } | null;
    /**
     * 加载所有分片状态
     */
    private loadAllChunkStatus;
    /**
     * 移除指定文件的记录
     */
    removeFile(fileId: string): void;
    /**
     * 移除分片状态
     */
    private removeChunkStatus;
    /**
     * 清除所有持久化数据
     */
    clearAll(): void;
    /**
     * 清理过期数据
     */
    cleanupExpiredData(): void;
    /**
     * 获取存储使用情况
     */
    getStorageInfo(): {
        queueSize: number;
        chunkSize: number;
        totalSize: number;
        estimatedQuota: number;
    };
}
export {};
//# sourceMappingURL=QueuePersistence.d.ts.map