import { OnlineTypeEnum } from '../enum/online-type.enum';
import { SessionProviderType } from '../enum/session-provider.enum';
import { ZoomWebinarStatus } from '../enum/zoom-webinar-status.enum';
import { SessionLaunchMode } from '../enum/session-launch-mode.enum';
import { SessionLinkModeEnum } from '../enum/session-link-mode.enum';
export interface CreateSessionInput {
    provider: SessionProviderType;
    onlineType: OnlineTypeEnum.WEBINAR | OnlineTypeEnum.MEETING;
    programSessionId: number;
    title?: string;
    startAt: string;
    duration: number;
    password?: string;
    hostEmail?: string;
    requireRegistration?: boolean;
    launchMode?: SessionLaunchMode;
    joinOpensMinutesBefore?: number;
    hostStartOpensMinutesBefore?: number;
    status?: ZoomWebinarStatus;
    registrationStartsAt?: string;
    registrationEndsAt?: string;
    actorUserId?: number;
}
export interface SessionRecurrenceInput {
    frequency: 'daily' | 'weekly' | 'monthly';
    repeatInterval?: number;
    weeklyDays?: string;
}
export interface CreateSharedSessionInput {
    provider: SessionProviderType;
    onlineType?: OnlineTypeEnum.WEBINAR | OnlineTypeEnum.MEETING;
    programSessionIds: number[];
    title?: string;
    password?: string;
    hostEmail?: string;
    requireRegistration?: boolean;
    linkType: SessionLinkModeEnum;
    launchMode?: SessionLaunchMode;
    joinOpensMinutesBefore?: number;
    hostStartOpensMinutesBefore?: number;
    status?: ZoomWebinarStatus;
    recurrence?: SessionRecurrenceInput;
    actorUserId?: number;
}
export interface UpdateSessionInput {
    title?: string;
    startAt?: string;
    duration?: number;
    password?: string;
    launchMode?: SessionLaunchMode;
    joinOpensMinutesBefore?: number;
    hostStartOpensMinutesBefore?: number;
    registrationStartsAt?: string;
    registrationEndsAt?: string;
    actorUserId?: number;
    status?: ZoomWebinarStatus;
}
export interface ParticipantData {
    extParticipantId: string | null;
    name: string | null;
    email: string | null;
    joinedAt: Date | null;
    leftAt: Date | null;
    durationSeconds: number;
}
