import { Repository } from 'typeorm';
import { ZoomGeneratedRegistrantLink } from 'src/common/entities';
import { OnlineSessionRegistrationStatus } from 'src/common/enum/online-session-registration-status.enum';
import { AppLoggerService } from 'src/common/services/logger.service';
export interface PaginatedGeneratedLinks {
    data: ZoomGeneratedRegistrantLink[];
    total: number;
}
export declare class ZoomGeneratedRegistrantLinkRepository {
    private readonly repo;
    private readonly logger;
    constructor(repo: Repository<ZoomGeneratedRegistrantLink>, logger: AppLoggerService);
    create(data: Partial<ZoomGeneratedRegistrantLink>): ZoomGeneratedRegistrantLink;
    excludeRegisteredAndClearFailedByUser(programSessionId: number, userIds: number[]): Promise<Set<number>>;
    excludeRegisteredAndClearFailedByBatch(programSessionId: number, batchName: string): Promise<Set<number>>;
    private softDeleteStaleFailedRows;
    findActiveMapBySession(programSessionId: number): Promise<Map<string, ZoomGeneratedRegistrantLink>>;
    saveMany(rows: ZoomGeneratedRegistrantLink[]): Promise<ZoomGeneratedRegistrantLink[]>;
    private isRecipientAlreadyRegisteredElsewhere;
    listBySession(programSessionId: number, page: number, limit: number, status?: OnlineSessionRegistrationStatus): Promise<PaginatedGeneratedLinks>;
    findByUserId(userId: number, programId?: number, sessionId?: number): Promise<ZoomGeneratedRegistrantLink[]>;
    countRegisteredByProgramSessionIds(programSessionIds: number[]): Promise<Map<number, number>>;
    listByProgram(programId: number, page: number, limit: number): Promise<PaginatedGeneratedLinks>;
}
