import { RegistrationOnlineSessionActivationStatus } from 'src/common/enum/registration-online-session-activation-status.enum';
import { ProgramEligibleKpiCategory, ProgramEligibleKpiFilter } from 'src/common/enum/program-eligible-kpi.enum';
export type PanelistBulkOutcome = {
    status: 'registered' | 'skipped';
} | {
    status: 'failed';
    error: unknown;
};
export interface BulkTally {
    registered: number;
    skipped: number;
    failed: number;
}
export interface RegistrationWithJoinUrl {
    registrationId: number;
    registrationSeqNumber: string | null;
    fullName: string | null;
    email: string | null;
    mobile: string | null;
    registrationStatus: string;
    seatAllocated: boolean;
    joinUrl: string | null;
    isPanelist: boolean | null;
    activationStatus: RegistrationOnlineSessionActivationStatus | null;
}
export interface EligibleActivationSummary {
    onlineSessionId: number;
    totalEligible: number;
    activeCount: number;
    inactiveCount: number;
}
export interface RmContactOption {
    id: number;
    name: string;
}
export interface ProgramRegistrationStatusRow {
    registrationId: number;
    registrationStatus: string;
    activationStatus: RegistrationOnlineSessionActivationStatus;
    seatAllocated: boolean;
    fullName: string;
}
export interface RegistrationActivationResult {
    registrationId: number;
    activationStatus: RegistrationOnlineSessionActivationStatus;
    updatedOnlineSessionIds: number[];
}
export interface ProgramEligibleRegistrationRow {
    registrationId: number;
    registrationSeqNumber: string | null;
    fullName: string | null;
    email: string | null;
    mobile: string | null;
    seatAllocated: 'Yes' | 'No';
    gender: string | null;
    profileUrl: string | null;
    activationStatus: string;
    rmContact: string | null;
    paymentStatus: string | null;
    registrationMode: string | null;
    age: number | null;
    city: string | null;
    joinUrl: string | null;
    attendedSessions: string;
    sessionAttendance: ProgramSessionAttendance[];
}
export interface ConductedSession {
    id: number;
    name: string | null;
    startsAt: Date | null;
    endsAt: Date | null;
    onlineSessionId: number | null;
}
export type SessionAttendanceState = 'not_started' | 'in_progress' | 'completed';
export interface ProgramSessionAttendance {
    sessionId: number;
    name: string | null;
    sessionState: SessionAttendanceState;
    status: boolean;
}
export interface ProgramEligibleRegistrationsQuery {
    offset: number;
    limit: number;
    search?: string;
    sortKey?: string;
    sortOrder?: 'ASC' | 'DESC';
    filters?: Record<string, string | string[]>;
    rmContactId?: number;
    kpiCategory?: ProgramEligibleKpiCategory;
    kpiFilter?: ProgramEligibleKpiFilter;
}
export interface ProgramEligibleKpis {
    totalEligible: number;
    active: number;
    inactive: number;
    absentAtLeastOnce: number;
    presentForAll: number;
    totalSessions: number;
    eligibleForFinalSession: number | null;
    notEligibleForFinalSession: number | null;
}
export interface ProgramEligibleKpiTile {
    label: string;
    value: number;
    kpiCategory?: ProgramEligibleKpiCategory;
    kpiFilter?: ProgramEligibleKpiFilter;
}
