///
import Bull from 'bull';
import { Logger } from '../core';
import { EpisodesService } from '../episodes';
import { FilesService } from '../files';
import { NotificationsService } from '../notifications/service';
import { PodacstsRepository } from './repository';
export interface ImportJob {
ownerId: string;
podcastId: string;
podcastName: string;
episodeId?: string;
episodeName?: string;
type: 'cover' | 'audio';
url: string;
}
export interface FailedJob extends ImportJob {
reason: string;
}
export interface ImportProgress {
waiting: number;
active: number;
completed: number;
failed: number;
failedJobs: FailedJob[];
}
export declare class ImportQueue {
private readonly podcastRepo;
private readonly episodeService;
private readonly filesService;
private readonly notificationsService;
private readonly getSocket;
private readonly logger;
private readonly queue;
constructor(logger: Logger, podcastRepo: PodacstsRepository, episodeService: EpisodesService, filesService: FilesService, notificationsService: NotificationsService, getSocket: () => SocketIO.Server);
addJob(job: ImportJob): Promise>;
getPodcastJobs(podcastId: string): Promise>>;
getEpisodeJobs(episodeId: string): Promise>>;
getEpisodeJobCount(episodeId: string): Promise;
clean(): Promise[]>;
start(): void;
process(job: ImportJob): Promise;
getImportProgress(podcastId: string): Promise;
private processAudio;
private processCover;
private checkEpisodeCompleted;
checkPodcastProgress(userId: string, podcastId: string): Promise;
}