declare class VideoScheduleQueueService {
    private queue;
    private worker;
    constructor();
    /**
     * Start the worker to process scheduled publish/unpublish jobs
     */
    startWorker(): void;
    /**
     * Schedule a video to be published at a specific time
     */
    schedulePublish(videoId: number, publishAt: Date, scheduledByUserId: string): Promise<{
        jobId: string;
        scheduledFor: Date;
    }>;
    /**
     * Schedule a video to be unpublished at a specific time
     */
    scheduleUnpublish(videoId: number, unpublishAt: Date, scheduledByUserId: string): Promise<{
        jobId: string;
        scheduledFor: Date;
    }>;
    /**
     * Cancel a scheduled publish or unpublish
     */
    cancelSchedule(videoId: number, action: 'publish' | 'unpublish'): Promise<void>;
    /**
     * Get upcoming scheduled publish/unpublish operations
     */
    getUpcomingSchedules(limit?: number): Promise<Array<{
        jobId: string;
        videoId: number;
        videoTitle: string | null;
        action: 'publish' | 'unpublish';
        scheduledFor: Date;
        status: string;
    }>>;
    /**
     * Get schedule history for a video
     */
    getScheduleHistory(videoId: number, limit?: number): Promise<({
        scheduledBy: {
            id: string;
            email: string;
            name: string | null;
        };
    } & {
        status: string;
        error: string | null;
        id: number;
        createdAt: Date;
        videoId: number;
        action: string;
        scheduledFor: Date;
        executedAt: Date | null;
        scheduledByUserId: string;
    })[]>;
    /**
     * Get queue stats
     */
    getStats(): Promise<{
        waiting: number;
        active: number;
        delayed: number;
        completed: number;
        failed: number;
    }>;
    /**
     * Pause the queue
     */
    pause(): Promise<void>;
    /**
     * Resume the queue
     */
    resume(): Promise<void>;
    /**
     * Clean up old completed and failed jobs
     */
    cleanup(): Promise<number>;
    /**
     * Close queue and worker
     */
    close(): Promise<void>;
}
export declare const videoScheduleQueueService: VideoScheduleQueueService;
export {};
//# sourceMappingURL=video-schedule-queue.service.d.ts.map