import { ConfigService } from '@nestjs/config';
import { AppLoggerService } from 'src/common/services/logger.service';
import { ZoomOAuthService } from './zoom-oauth.service';
import { ZoomUserEndpoint, ZoomRegistrantStatusAction } from '../enums/zoom-role.enum';
import { ZoomWebinarCreatePayload, ZoomWebinarUpdatePayload, ZoomMeetingCreatePayload, ZoomMeetingUpdatePayload, ZoomApiResponse } from '../interfaces/zoom-api.interface';
export declare class ZoomApiService {
    private readonly configService;
    private readonly oauthService;
    private readonly logger;
    private readonly baseUrl;
    constructor(configService: ConfigService, oauthService: ZoomOAuthService, logger: AppLoggerService);
    private isEnabled;
    private request;
    private isRetryableTransient;
    private retryDelayMs;
    private delay;
    private toZoomStartTime;
    private send;
    createWebinar(payload: ZoomWebinarCreatePayload, hostEmail: string): Promise<ZoomApiResponse>;
    private toZoomRecurrence;
    listWebinarTemplates(hostEmail: string): Promise<ZoomApiResponse[]>;
    listMeetingTemplates(hostEmail: string): Promise<ZoomApiResponse[]>;
    updateWebinar(webinarIdExt: string, payload: ZoomWebinarUpdatePayload): Promise<ZoomApiResponse>;
    updateWebinarOccurrence(webinarIdExt: string, occurrenceId: string, payload: {
        startAt?: string;
        duration?: number;
    }): Promise<ZoomApiResponse>;
    deleteWebinar(webinarIdExt: string): Promise<ZoomApiResponse>;
    createMeeting(payload: ZoomMeetingCreatePayload, hostEmail: string): Promise<ZoomApiResponse>;
    updateMeetingOccurrence(meetingIdExt: string, occurrenceId: string, payload: {
        startAt?: string;
        duration?: number;
    }): Promise<ZoomApiResponse>;
    updateMeeting(meetingIdExt: string, payload: ZoomMeetingUpdatePayload): Promise<ZoomApiResponse>;
    deleteMeeting(meetingIdExt: string): Promise<ZoomApiResponse>;
    addMeetingRegistrant(meetingIdExt: string, registrant: {
        firstName: string;
        lastName?: string;
        email: string;
    }): Promise<ZoomApiResponse>;
    removeMeetingRegistrant(meetingIdExt: string, registrantIdExt: string): Promise<ZoomApiResponse>;
    updateMeetingRegistrantStatus(meetingIdExt: string, action: ZoomRegistrantStatusAction, registrant: {
        id: string;
        email?: string | null;
    }): Promise<void>;
    fetchMeetingRegistrants(meetingIdExt: string): Promise<ZoomApiResponse[]>;
    fetchMeetingParticipants(meetingIdExt: string, occurrenceId?: string): Promise<ZoomApiResponse[]>;
    addRegistrant(webinarIdExt: string, registrant: {
        firstName: string;
        lastName?: string;
        email: string;
    }): Promise<ZoomApiResponse>;
    addPanelist(webinarIdExt: string, panelist: {
        name: string;
        email: string;
    }): Promise<ZoomApiResponse>;
    addPanelistsBatch(webinarIdExt: string, panelists: {
        name: string;
        email: string;
    }[]): Promise<ZoomApiResponse>;
    removeUser(webinarIdExt: string, endpoint: ZoomUserEndpoint, registrationIdExt: string): Promise<ZoomApiResponse>;
    updateWebinarRegistrantStatus(webinarIdExt: string, action: ZoomRegistrantStatusAction, registrant: {
        id: string;
        email?: string | null;
    }): Promise<void>;
    fetchPanelists(webinarIdExt: string): Promise<ZoomApiResponse[]>;
    fetchRegistrants(webinarIdExt: string): Promise<ZoomApiResponse[]>;
    fetchParticipants(webinarIdExt: string, occurrenceId?: string): Promise<ZoomApiResponse[]>;
    fetchAbsentees(webinarIdExt: string, occurrenceId?: string): Promise<ZoomApiResponse[]>;
    private withOccurrence;
    private fetchAllPages;
}
