import { ProgramSession, ProgramRegistrationOnlineSession } from 'src/common/entities';
import { CreateSessionInput, UpdateSessionInput, CreateSharedSessionInput } from 'src/common/interfaces/online-session.interface';
import { ZoomRole } from '../enums/zoom-role.enum';
export interface ZoomContactInfo {
    firstName: string;
    lastName?: string;
    email: string;
    name: string;
}
export interface ZoomParticipantResult {
    joinUrl: string | null;
    zoomRegistrantId: string | null;
    isPanelist: boolean;
}
export interface ZoomSessionHandler {
    create(input: CreateSessionInput): Promise<ProgramSession>;
    update(session: ProgramSession, input: UpdateSessionInput): Promise<ProgramSession>;
    remove(session: ProgramSession, actorUserId?: number): Promise<void>;
    createSharedGroup(input: CreateSharedSessionInput): Promise<ProgramSession[]>;
    addParticipant(session: ProgramSession, contact: ZoomContactInfo, role: ZoomRole, autoApprove?: boolean): Promise<ZoomParticipantResult>;
    removeParticipant(session: ProgramSession, extension: ProgramRegistrationOnlineSession, contact: ZoomContactInfo | null): Promise<void>;
    approveParticipant(session: ProgramSession, extension: ProgramRegistrationOnlineSession, contact: ZoomContactInfo): Promise<ZoomParticipantResult>;
}
