import { ConfigService } from "@nestjs/config"; import { ClsService } from "nestjs-cls"; import { BaseConfigInterface } from "../../../config/interfaces"; import { EmailService } from "../../../core/email/services/email.service"; import { JsonApiDataInterface } from "../../../core/jsonapi/interfaces/jsonapi.data.interface"; import { JsonApiService } from "../../../core/jsonapi/services/jsonapi.service"; import { AbstractService } from "../../../core/neo4j/abstracts/abstract.service"; import { UserRepository } from "../../user/repositories/user.repository"; import { WaitlistPostDataDTO } from "../dtos/waitlist.post.dto"; import { Waitlist, WaitlistDescriptor, WaitlistStatus } from "../entities/waitlist"; import { WaitlistRepository } from "../repositories/waitlist.repository"; export declare class WaitlistService extends AbstractService { private readonly waitlistRepository; private readonly emailService; private readonly configService; private readonly userRepository; protected readonly descriptor: import("../../..").EntityDescriptor; private readonly logger; constructor(jsonApiService: JsonApiService, waitlistRepository: WaitlistRepository, clsService: ClsService, emailService: EmailService, configService: ConfigService, userRepository: UserRepository); private get appConfig(); /** * Create a new waitlist entry with typed DTO. * Handles: duplicate check, confirmation code generation, email sending. */ createEntry(params: { data: WaitlistPostDataDTO; }): Promise; /** * Find entries with optional status filter. */ findAllByStatus(params: { query: any; status?: WaitlistStatus; }): Promise; /** * Confirm a waitlist entry via confirmation code. */ confirm(params: { code: string; }): Promise; /** * Invite a confirmed waitlist entry. */ invite(params: { id: string; }): Promise; /** * Batch invite multiple entries. */ inviteBatch(params: { ids: string[]; }): Promise<{ invited: number; failed: number; }>; /** * Validate an invite code (public endpoint). */ validateInviteCode(code: string): Promise<{ email: string; valid: boolean; } | null>; /** * Mark entry as registered after user creates account. */ markAsRegistered(params: { inviteCode: string; userId: string; }): Promise; /** * Get waitlist statistics. */ getStats(): Promise<{ pending: number; confirmed: number; invited: number; registered: number; total: number; }>; /** * Send notification to all platform administrators about a new waitlist confirmation. * Errors are logged but not thrown to avoid blocking the confirmation flow. */ private notifyAdminsOfConfirmation; } //# sourceMappingURL=waitlist.service.d.ts.map