import { Program, ProgramSession } from '../entities';
export interface SeatAvailabilityResult {
    limitedSeats: boolean;
    totalSeats: number;
    filledSeats: number;
    seatsRemaining: number;
    waitlistApplicable: boolean;
    waitlistTriggerCount: number;
    isWaitlistTriggered: boolean;
    isRegistrationsExceeded: boolean;
    canRegister: boolean;
    shouldWaitlist: boolean;
    shouldReject: boolean;
    statusMessage: string;
    capacityStatus: 'NORMAL' | 'WAITLIST' | 'EXCEEDED' | 'UNLIMITED';
}
export declare class SeatAvailabilityService {
    private readonly logger;
    checkSeatAvailability(program: Program, session: ProgramSession | null, registrationLevel: string): Promise<SeatAvailabilityResult>;
    private buildUnlimitedResult;
    private buildLimitedNoWaitlistResult;
    private buildLimitedWithWaitlistResult;
    validateAtRegistrationLevel(program: Program, session: ProgramSession | null, registrationLevel: string): Promise<SeatAvailabilityResult>;
    validateAtApprovalLevel(program: Program, session: ProgramSession | null, registrationLevel: string, allocatedProgram?: Program, allocatedSession?: ProgramSession): Promise<SeatAvailabilityResult>;
    validateAtPaymentLevel(program: Program, session: ProgramSession | null, registrationLevel: string): Promise<SeatAvailabilityResult>;
    shouldThrowSeatsExceededError(result: SeatAvailabilityResult): boolean;
    getSeatsExceededErrorMessage(): string;
}
