/**
 * Frontend-facing response shapes for the Analytics module. Kept distinct
 * from the Zoom module's internal ZoomSessionKpis/etc — today a straight
 * pass-through, but the module boundary means either side can evolve
 * independently (e.g. Analytics blending in a non-Zoom data source later
 * without the Zoom module knowing).
 */

export interface SessionKpisResponse {
  sessionId: number;
  startTime: Date | null;
  durationMinutes: number | null;
  totalPanelists: number;
  totalSeekersJoined: number;
  seekersNotJoined: number;
  seekersJoinedLate: number;
  seekersDropped: number;
  seekersRejoined: number;
  reconciledAt: Date | null;
}

export interface LiveStatusResponse {
  sessionId: number;
  isLive: boolean;
  currentlyJoined: number;
  totalJoinedSoFar: number;
  rejoinsSoFar: number;
  lastEventAt: Date | null;
}

export interface AttendeeAttendanceResponse {
  system: boolean;
  rm: boolean | null;
  coordinator: boolean | null;
}

export interface AttendeeRowResponse {
  attendeeId: number;
  userId: number | null;
  fullName: string | null;
  email: string | null;
  mobile: string | null;
  joinedAt: Date | null;
  noOfDevices: number | null;
  dropoffCount: number;
  rejoinCount: number;
  lastDropoffAt: Date | null;
  lastRejoinedAt: Date | null;
  attendance: AttendeeAttendanceResponse;
  joinUrl: string | null;
}

export interface PaginatedAttendeeRowsResponse {
  data: AttendeeRowResponse[];
  total: number;
  page: number;
  limit: number;
}
