import { Repository } from 'typeorm';
import { ProgramSession, SessionCommunicationStatus, BackgroundJob } from 'src/common/entities';
import { AppLoggerService } from 'src/common/services/logger.service';
import { ZoomWebinarStatus } from 'src/common/enum/zoom-webinar-status.enum';
import { JoinLinkGenerationStatus } from 'src/common/enum/join-link-generation-status.enum';
import { OnlineSessionListResult } from '../interfaces/online-session.interface';
export declare class OnlineSessionRepository {
    private readonly sessionRepo;
    private readonly communicationStatusRepo;
    private readonly backgroundJobRepo;
    private readonly logger;
    constructor(sessionRepo: Repository<ProgramSession>, communicationStatusRepo: Repository<SessionCommunicationStatus>, backgroundJobRepo: Repository<BackgroundJob>, logger: AppLoggerService);
    save(session: ProgramSession): Promise<ProgramSession>;
    setLinkGenerationStatus(id: number, status: JoinLinkGenerationStatus): Promise<void>;
    findById(id: number): Promise<ProgramSession | null>;
    findAll(limit: number, offset: number, status?: ZoomWebinarStatus, programId?: number): Promise<OnlineSessionListResult>;
    findSessionBulkStatuses(sessionIds: number[]): Promise<SessionCommunicationStatus[]>;
    findProgramLevelStatuses(programIds: number[]): Promise<SessionCommunicationStatus[]>;
    findPendingJobsBySessionIds(sessionIds: number[]): Promise<BackgroundJob[]>;
    findCompletedSince(since: Date): Promise<ProgramSession[]>;
}
