import { BackgroundJob } from 'src/common/entities';
import { AppLoggerService } from 'src/common/services/logger.service';
import { UserTypeFilterValue } from 'src/common/utils/user-type-filter.util';
import { ExportJobStatus } from 'src/common/enum/export-job-status.enum';
import { OnlineSessionService } from 'src/online-session/services/online-session.service';
import { BulkRegistrationFailureList, ProvisionRegistrationList, ProvisionRegistrationStatus, ProvisionStatusOverview } from 'src/online-session/interfaces/online-session.interface';
import { ZoomRegistrationRepository } from '../repositories/zoom-registration.repository';
import { ZoomGeneratedRegistrantLinkRepository } from '../repositories/zoom-generated-registrant-link.repository';
import { ZoomRegistrationService } from './zoom-registration.service';
import { ZoomFinalSessionAttendanceService } from './zoom-final-session-attendance.service';
import { BulkRegisterZoomDto } from '../dto/bulk-register-zoom.dto';
export declare class ZoomBulkRegistrationService {
    private readonly repository;
    private readonly generatedLinkRepository;
    private readonly registrationService;
    private readonly onlineSessionService;
    private readonly finalSessionAttendanceService;
    private readonly logger;
    constructor(repository: ZoomRegistrationRepository, generatedLinkRepository: ZoomGeneratedRegistrantLinkRepository, registrationService: ZoomRegistrationService, onlineSessionService: OnlineSessionService, finalSessionAttendanceService: ZoomFinalSessionAttendanceService, logger: AppLoggerService);
    startBulkRegistration(dto: BulkRegisterZoomDto, actorUserId?: number): Promise<{
        jobId: number;
        status: ExportJobStatus;
        total: number;
    }>;
    retryFailedRegistration(jobId: number, actorUserId?: number): Promise<{
        jobId: number;
        status: ExportJobStatus;
        total: number;
    }>;
    getProgramFailures(programId: number, query: {
        sessionId?: number;
        page: number;
        limit: number;
    }, rmContactId?: number): Promise<BulkRegistrationFailureList>;
    retryProgramFailures(programId: number, sessionId?: number, actorUserId?: number): Promise<{
        jobId: number;
        status: ExportJobStatus;
        total: number;
    }>;
    private hasSessionStarted;
    getProgramProvisionStatus(programId: number, sessionId?: number, rmContactId?: number, userType?: UserTypeFilterValue[]): Promise<ProvisionStatusOverview>;
    private static capitalizeFirst;
    getSessionProvisionRegistrations(sessionId: number, query: {
        status?: ProvisionRegistrationStatus;
        page: number;
        limit: number;
        userType?: UserTypeFilterValue[];
    }, rmContactId?: number): Promise<ProvisionRegistrationList>;
    private buildProvisionKpis;
    private resolveTargetSessions;
    getBulkJobStatus(jobId: number): Promise<BackgroundJob>;
    getBulkJobFailures(jobId: number, paging: {
        page: number;
        limit: number;
    }, rmContactId?: number): Promise<BulkRegistrationFailureList>;
    private enrichFailures;
    private restrictFailuresToRm;
    private mergeJobFailures;
    private dropResolvedFailures;
    private buildWorkItems;
    private loadIneligible;
    private resolveFailedWorkItems;
    private processWorkItems;
    private isPanelistBatchable;
    private groupByRegistration;
    private registerRegistrantGroup;
    private registerOneItem;
    private registerPanelistGroup;
    private persistFailedExtension;
    private toFailure;
    private delay;
}
