import { Doctor } from "../services/AppointmentService"; import { SessionPack, AvailablePackage, Patient } from "../components/appointment-booking/types"; interface AppointmentCalendarWidgetOptions { containerId: string; apiKey?: string; sessionToken?: string; baseURL?: string; onError?: (err: Error) => void; onSuccess?: () => void; } declare class AppointmentCalendarWidget { private container; private options; private mounted; private state; private doctors; private addressSelect; private doctorSelect; private calendar; private countryCodeSelect; private genderSelect; private bloodGroupSelect; constructor(container: HTMLElement | string, options: AppointmentCalendarWidgetOptions); private init; private loadWorkspaceConfiguration; private loadAddresses; private handleAddressChange; private loadSlots; private canProceedFromMergedStep; private updateSubmitButtonState; private updatePatientDetailsButtonState; private sendOtp; private verifyOtp; private processOtpVerificationResponse; private submitAppointment; private goToNext; private goBack; private reset; private setState; private render; private initializeCustomComponents; private renderStep; private renderPhoneVerificationStep; private renderBookingOptionStep; private renderPackageExplorerStep; private renderLocationDoctorStep; private renderNewAppointmentStep; private groupSlotsByPeriod; private renderGroupedSlots; private renderPatientSelectionStep; private renderPatientDetailsStep; private renderAppointmentSummaryStep; private renderSuccessStep; private formatDate; private formatTime; private calculateDuration; private attachEventListeners; private handleSelectExistingPatient; private handleProceedAsNewPatient; private getPlaceholderPatients; private escapeHtml; private isValidDateOfBirth; private isValidBloodGroup; private safeMapBloodGroupToApi; private safeFormatDateOfBirth; private getDateOfBirthErrorMessage; private displayFieldValidationError; handleSubmitAppointment(): Promise; handleOtpVerification(otpCode: string): Promise; handleAddressSelect(addressId: number): Promise; handleDoctorSelect(doctorId: number): void; handleDateSelect(date: Date): void; handleSlotSelect(slot: { start: string; end: string; id?: string; }): void; handleSessionPackSelect(sessionPack: SessionPack): void; handleExplorePackages(): void; handlePackageSelect(packageItem: AvailablePackage): void; handleNewAppointmentSelect(): void; handlePatientSelect(patient: Patient): void; handleNewPatient(): void; goToNextStep(): void; goBackStep(): void; getState(): { step: number; loading: boolean; error: string | null; workspaceId: number | null; addresses: import("../services/AppointmentService").AddressItem[]; addressDoctorsMap: Record; selectedAddress: number | null; selectedDoctor: number | null; selectedDate: Date; slots: import("../services/AppointmentService").Slot[]; selectedSlot: import("../services/AppointmentService").Slot | null; consultationMode: "ONLINE" | "OFFLINE"; consultationCharge: string; patientName: string; patientAge: string; patientEmail: string; patientGender: string; bloodGroup: string; patientDob: string; patientAddress: string; patientCity: string; patientState: string; patientCountry: string; patientZipcode: string; patientLandmark: string; countryCode: string; patientPhone: string; otpCode: string; otpSent: boolean; otpVerified: boolean; otpSending: boolean; otpVerifying: boolean; verifiedPatients: Patient[]; selectedPatient: Patient | null; useExistingPatient: boolean; userSessionPacks: SessionPack[]; availablePackages: AvailablePackage[]; selectedSessionPack: SessionPack | null; selectedNewPackage: AvailablePackage | null; bookingOptionType: import("../components/appointment-booking/types").BookingOptionType; showPackageExplorer: boolean; packagesLoading: boolean; arePackagesConfigured: boolean; bookingType: "PACKAGE_PURCHASE" | "ONE_TIME_APPOINTMENT" | "USE_ACTIVE_PACKAGE"; paymentMode: "CASH" | "CARD" | string; packageConfigId?: number; patientPackageId?: number; packageAmount?: number; }; destroy(): void; } export declare function initAppointmentCalendar(options: AppointmentCalendarWidgetOptions): AppointmentCalendarWidget; export { AppointmentCalendarWidget };