import FileServer from '../file-server'; import { FileProgress, TaskProgress, TaskStatus, UploadTaskOptions } from './types'; declare type OperationFns = { extractFile: FileServer['extractFile']; remove: FileServer['remove']; mkdir: FileServer['mkdir']; }; export declare class FastUploadTask { private taskId; private taskName; private server; private options; private tracker; private status; private progressInterval?; private readonly fileInfoConcurrency; private readonly uploadConcurrency; private currentFileInfoConcurrency; private operationFns?; private activeFileInfoCount; private activeUploadCount; private pendingInfoQueue; private pendingInfoQueueHead; private pendingUploadQueue; private pendingUploadQueueHead; private pendingFiles; private rootDirStatusMap; private rootDirWaitingFiles; private activeRootInfoCount; private uploadContexts; private completedRequestIds; private isServerEventAttached; private isLoggedIn; private pendingEmptyDirs; private isScanComplete; private scannedFileCount; private inputFileCount; private hasReportedTaskStart; private taskIsAllDone; private requestIdCounter; private primaryRootName; private smallFileCompressor; private activeBundleFinalizeCount; private bundleLogicalGroups; private bundleLogicalProgressState; private pendingBundleExtractQueue; private pendingBundleExtractQueueHead; private activeExtractBundleRequestId?; private bundleExtractOpsByBundleRequest; /** 缓存 getFileInfo 响应 */ private fileInfoResponseMap; /** 缓存 uploadStart 响应 */ private uploadStartResponseMap; private loginInfo?; private groupId?; private spaceId?; constructor(server: FileServer, files: FileList | File[] | DataTransferItemList, options: UploadTaskOptions, loginInfo?: { username: string; password: string; spaceId: number; authWay: number; isEncrypt: boolean; }, groupId?: number, spaceId?: number, operationFns?: OperationFns); pause(): void; resume(): void; cancel(): void; getProgress(): TaskProgress; getTaskId(): number; getStatus(): TaskStatus; getAllFiles(): FileProgress[]; /** * Performance-oriented accessor. * Returns tracker's internal ordered list reference to avoid repeated full-array copies. * Callers must treat returned array as readonly. */ getAllFilesRef(): FileProgress[]; getFile(requestId: number): FileProgress | undefined; private isFileListOrArray; private processFileListDirectly; private scanDataTransferItems; private isCompressionEnabled; private maybeCollectSmallFile; private finalizeSmallFileCompression; private registerScannedFiles; private registerFile; private registerBundleFile; private startLogin; private processPendingFiles; private enqueueForFileInfo; private ensureRootDirectoryChecked; private flushRootWaitingFiles; private routeFileBySize; private enqueueDirectUpload; private enqueuePendingInfo; private pendingInfoQueueSize; private dequeuePendingInfo; private enqueuePendingUpload; private pendingUploadQueueSize; private dequeuePendingUpload; private pumpGetFileInfoQueue; private pumpUploadStartQueue; private startUploadWithoutBlocking; private sendUploadStart; private bindReader; private pumpReadAndSend; private sendUploadSuccessWhenReady; private sendChunk; /** * Send upload data directly through websocket to avoid occupying * FileServer.pending[requestId], which is single-slot per requestId. * This prevents ON_UPLOADING / ON_UPLOAD_SUCCESS from overwriting * the pending promise of ON_UPLOAD_START. */ private sendRawCommand; private handleInstantTransfer; private resolveSeek; private buildFullPath; private buildUploadPath; private nextRequestId; private shouldFilterFile; private extractFirstLevel; private extractDirectory; private extractRootDirectory; private buildRootPath; private normalizeServerPath; private calcInputCount; private getRootWaitingCount; private attachServerEvents; private markUploadResult; private startBundleExtractFlow; private enqueuePendingBundleExtract; private dequeuePendingBundleExtract; private removePendingBundleExtract; private compactPendingBundleExtractQueue; private pumpBundleExtractQueue; private handleExtractFileEvent; private finalizeBundleExtractFlow; private findBundleExtractOpByRequestId; private markBundleLogicalExtractedByPaths; private findSourceRequestIdByPathSuffix; private cleanupCompletedFileCaches; private releaseUploadSlot; private updateTaskStatusByPhase; private startProgressReporting; private stopProgressReporting; private checkCompletion; private handleError; private cleanupTaskCaches; private markBundleLogicalStart; private queueBundleLogicalProgress; private flushBundleLogicalProgress; private updateBundleLogicalProgress; private markBundleLogicalTerminal; private clearBundleLogicalProgressState; private closeServerConnection; private checkServerStatus; private isReportedConnectionInfo; private reportConnectionInfo; private reportTaskStart; private reportUploadProgress; private reportTaskCompletion; private createEmptyDirectory; private buildTaskName; private getPlatform; } export {};