export interface Task { id: string; priority: number; action: () => Promise; retries: number; } export type DownloadManagerOptions = { method?: "simple" | "queue" | "thread"; concurrencyLimit?: number; retries?: number; consoleLog?: boolean; downloadFolder?: string; getFileName?: (url: string) => string; onBeforeDownload?: (url: string, file: string, fileName: string) => Promise; onAfterDownload?: (url: string, file: string, fileName: string) => Promise; overWriteFile?: boolean; requestOptions?: RequestInit; stream?: boolean; backOff?: boolean; timeout?: number; maxWorkers?: number; }; export type EmitDataType = { message: string; url?: string; fileName?: string; file?: string; error?: unknown; progress?: string; totalSize?: number; downloaded?: number; speed?: string; }; export type WorkerTask = { id: string; fileName: string; url: string; options: DownloadManagerOptions; };