import { OnModuleInit } from '@nestjs/common';
import { ProgramSession, ProgramRegistrationOnlineSession, BackgroundJob } from 'src/common/entities';
import { SessionProviderType } from 'src/common/enum/session-provider.enum';
import { CreateSessionInput, UpdateSessionInput, CreateSharedSessionInput } from 'src/common/interfaces/online-session.interface';
import { OnlineSessionProvider } from 'src/online-session/interfaces/online-session-provider.interface';
import { OnlineSessionProviderRegistry } from 'src/online-session/services/online-session-provider.registry';
import { BulkRegistrationStart, BulkRegistrationFailureList, SessionRegistrationList, ProvisionStatusOverview, ProvisionRegistrationList, ProvisionRegistrationStatus, EligibleCountSummary, ProgramEligibleRegistrationList, ProgramEligibleRegistrationsQuery, RmContactOption, RegistrationActivationResult, SessionAttendanceSummary } from 'src/online-session/interfaces/online-session.interface';
import { RegistrationOnlineSessionActivationStatus } from 'src/common/enum/registration-online-session-activation-status.enum';
import { RegisterParticipantDto } from 'src/online-session/dto/register-participant.dto';
import { BulkRegisterParticipantsDto } from 'src/online-session/dto/bulk-register-participants.dto';
import { WebinarService } from './sessions/webinar.service';
import { MeetingService } from './sessions/meeting.service';
import { ZoomRegistrationService } from './services/zoom-registration.service';
import { ZoomBulkRegistrationService } from './services/zoom-bulk-registration.service';
import { ZoomGeneratedLinkService } from './services/zoom-generated-link.service';
import { SessionCommunicationService } from 'src/session-communication/session-communication.service';
import { AppLoggerService } from 'src/common/services/logger.service';
import { UserTypeFilterValue } from 'src/common/utils/user-type-filter.util';
export declare class ZoomProvider implements OnlineSessionProvider, OnModuleInit {
    private readonly registry;
    private readonly webinar;
    private readonly meeting;
    private readonly registration;
    private readonly bulkRegistration;
    private readonly generatedLink;
    private readonly sessionCommunication;
    private readonly logger;
    readonly key = SessionProviderType.ZOOM;
    constructor(registry: OnlineSessionProviderRegistry, webinar: WebinarService, meeting: MeetingService, registration: ZoomRegistrationService, bulkRegistration: ZoomBulkRegistrationService, generatedLink: ZoomGeneratedLinkService, sessionCommunication: SessionCommunicationService, logger: AppLoggerService);
    onModuleInit(): void;
    create(input: CreateSessionInput): Promise<ProgramSession>;
    createShared(input: CreateSharedSessionInput): Promise<ProgramSession[]>;
    private generateSharedSessionRoleLinks;
    generateGeneralLinks(session: ProgramSession, actorUserId?: number): void;
    private sendPerSessionGeneralLinkNotifications;
    update(session: ProgramSession, input: UpdateSessionInput): Promise<ProgramSession>;
    remove(session: ProgramSession, actorUserId?: number): Promise<void>;
    register(input: RegisterParticipantDto): Promise<ProgramRegistrationOnlineSession | void>;
    bulkRegister(input: BulkRegisterParticipantsDto, actorUserId?: number): Promise<BulkRegistrationStart>;
    bulkRegisterStatus(jobId: number): Promise<BackgroundJob>;
    bulkRegisterFailures(jobId: number, paging: {
        page: number;
        limit: number;
    }, rmContactId?: number): Promise<BulkRegistrationFailureList>;
    retryBulkRegistration(jobId: number, actorUserId?: number): Promise<BulkRegistrationStart>;
    getProgramRegistrationFailures(programId: number, query: {
        sessionId?: number;
        page: number;
        limit: number;
    }, rmContactId?: number): Promise<BulkRegistrationFailureList>;
    retryProgramRegistration(programId: number, sessionId?: number, actorUserId?: number): Promise<BulkRegistrationStart>;
    getProgramProvisionStatus(programId: number, sessionId?: number, rmContactId?: number, userType?: UserTypeFilterValue[]): Promise<ProvisionStatusOverview>;
    getSessionProvisionRegistrations(sessionId: number, query: {
        status?: ProvisionRegistrationStatus;
        page: number;
        limit: number;
        userType?: UserTypeFilterValue[];
    }, rmContactId?: number): Promise<ProvisionRegistrationList>;
    listRegistrations(sessionId: number, query: {
        page: number;
        limit: number;
        search?: string;
    }, rmContactId?: number): Promise<SessionRegistrationList>;
    exportRegistrations(sessionId: number, search?: string, rmContactId?: number): Promise<{
        fileUrl: string;
    }>;
    setRegistrationActivation(registrationId: number, activationStatus: RegistrationOnlineSessionActivationStatus, reason: string | null | undefined, actingUserId: number | null | undefined): Promise<RegistrationActivationResult>;
    getEligibleCount(sessionId: number): Promise<EligibleCountSummary>;
    listProgramEligibleRegistrations(programId: number, query: ProgramEligibleRegistrationsQuery): Promise<ProgramEligibleRegistrationList>;
    getProgramEligibleRmContacts(): Promise<RmContactOption[]>;
    getSessionAttendanceSummary(sessions: ProgramSession[], rmContactId?: number): Promise<Map<number, SessionAttendanceSummary>>;
    private handler;
}
