import { ProgramRegistration, ProgramRegistrationOnlineSession } from 'src/common/entities';
import { AppLoggerService } from 'src/common/services/logger.service';
import { ExcelService } from 'src/common/services/excel.service';
import { ZoomRegistrationRepository } from '../repositories/zoom-registration.repository';
import { ZoomAnalyticsAttendeeSummaryRepository } from '../repositories/zoom-analytics-attendee-summary.repository';
import { ZoomFinalSessionAttendanceService } from './zoom-final-session-attendance.service';
import { RegistrationWithJoinUrl, EligibleActivationSummary, ProgramEligibleRegistrationRow, ProgramEligibleRegistrationsQuery, ProgramEligibleKpiTile, RmContactOption, RegistrationActivationResult } from '../interfaces/zoom-registration.interface';
import { SessionAttendanceSummary } from 'src/online-session/interfaces/online-session.interface';
import { RegistrationOnlineSessionActivationStatus } from 'src/common/enum/registration-online-session-activation-status.enum';
import { RegistrationOnlineSessionActivationSource } from 'src/common/enum/registration-online-session-activation-source.enum';
import { ProgramSession } from 'src/common/entities';
import { WebinarService } from '../sessions/webinar.service';
import { MeetingService } from '../sessions/meeting.service';
import { RegisterZoomUserDto } from '../dto/register-zoom-user.dto';
import { ZoomRole } from '../enums/zoom-role.enum';
import { OnlineSessionService } from 'src/online-session/services/online-session.service';
import { PanelistBulkOutcome } from '../interfaces/zoom-registration.interface';
export declare class ZoomRegistrationService {
    private readonly registrationRepository;
    private readonly webinar;
    private readonly meeting;
    private readonly logger;
    private readonly excelService;
    private readonly onlineSessionService;
    private readonly attendeeSummaryRepository;
    private readonly finalSessionAttendanceService;
    constructor(registrationRepository: ZoomRegistrationRepository, webinar: WebinarService, meeting: MeetingService, logger: AppLoggerService, excelService: ExcelService, onlineSessionService: OnlineSessionService, attendeeSummaryRepository: ZoomAnalyticsAttendeeSummaryRepository, finalSessionAttendanceService: ZoomFinalSessionAttendanceService);
    getSessionAttendanceSummary(sessions: ProgramSession[], rmContactId?: number): Promise<Map<number, SessionAttendanceSummary>>;
    private resolveFinalSessionRegisteredAdjustments;
    listSessionRegistrations(sessionId: number, query: {
        page: number;
        limit: number;
        search?: string;
    }, rmContactId?: number): Promise<{
        data: RegistrationWithJoinUrl[];
        pagination: {
            page: number;
            limit: number;
            total: number;
        };
    }>;
    exportSessionRegistrations(sessionId: number, search?: string, rmContactId?: number): Promise<{
        fileUrl: string;
    }>;
    listProgramEligibleRegistrations(programId: number, query: ProgramEligibleRegistrationsQuery): Promise<{
        data: ProgramEligibleRegistrationRow[];
        pagination: {
            offset: number;
            limit: number;
            total: number;
        };
        kpis: ProgramEligibleKpiTile[];
    }>;
    private static buildProgramEligibleKpiTiles;
    getProgramEligibleRmContacts(): Promise<RmContactOption[]>;
    private resolveSession;
    setRegistrationActivation(registrationId: number, activationStatus: RegistrationOnlineSessionActivationStatus, reason: string | null | undefined, actingUserId: number | null | undefined): Promise<RegistrationActivationResult>;
    cascadeTerminalActivation(registrationId: number, source: RegistrationOnlineSessionActivationSource.ARCHIVED | RegistrationOnlineSessionActivationSource.CANCELLED | RegistrationOnlineSessionActivationSource.DELETED, actingUserId: number | null | undefined): Promise<void>;
    getEligibleCount(sessionId: number): Promise<EligibleActivationSummary>;
    handle(dto: RegisterZoomUserDto, options?: {
        restrictUnregisterToTargetSession?: boolean;
    }): Promise<ProgramRegistrationOnlineSession | void>;
    private handlerFor;
    private register;
    registerForBulk(registration: ProgramRegistration, session: ProgramSession | null | undefined, role: ZoomRole, actingUserId?: number): Promise<'registered' | 'skipped'>;
    registerPanelistsForBulk(registrations: ProgramRegistration[], session: ProgramSession, actingUserId?: number): Promise<Map<number, PanelistBulkOutcome>>;
    private pushParticipant;
    private resolveParticipant;
    private requireOnlineSession;
    private unregister;
    private downgrade;
    private contactInfo;
    private requireRegistration;
    private requireExtension;
}
