import * as react_jsx_runtime from 'react/jsx-runtime'; import { AppointmentStatus, AppointmentMeetingFormat, AppointmentTimeSlot } from './appointment-time-slot-picker.js'; interface AppointmentMeetingActionItem { label: string; done?: boolean; } /** AI-generated recap of a completed meeting, stored on the booking. */ interface AppointmentMeetingSummary { /** Short recap of what was discussed. */ summary?: string; /** Follow-up items, optionally marked done. */ actionItems?: AppointmentMeetingActionItem[]; } interface AppointmentDetailItem { id: string; status: AppointmentStatus; clientName: string; clientAvatarInitials: string; /** Client ID — used to pre-select client when rebooking after cancellation */ clientId?: string; date: string; timeStart: string; timeEnd: string; notes?: string; /** Reason provided when the appointment was cancelled */ cancelReason?: string; /** How the meeting is conducted */ meetingFormat?: AppointmentMeetingFormat; /** Formatted location string — shown for offline meetings */ meetingLocation?: string; /** Phone number — shown for call meetings */ callPhone?: string; /** Join URL — shown for google-meet and microsoft-teams meetings */ meetingLink?: string; /** AI meeting summary — shown once the meeting has been recorded and summarised */ meetingSummary?: AppointmentMeetingSummary; } type LoanApplicationStatus = "finished" | "in-progress" | "sent-request" | "not-start"; /** Extra client profile fields not stored on the appointment itself */ interface AppointmentClientProfile { phone?: string; email?: string; accountType?: "Individual" | "Joint"; loanApplicationStatus?: LoanApplicationStatus; } interface AppointmentDetailSheetProps { appointment: AppointmentDetailItem | undefined; open: boolean; onOpenChange: (v: boolean) => void; clientProfile?: AppointmentClientProfile; amSlots: AppointmentTimeSlot[]; pmSlots: AppointmentTimeSlot[]; /** * Fired when the user selects a different date in the reschedule dialog. * Use this to fetch fresh `amSlots`/`pmSlots` for the new date. */ onDateChange?: (date: Date) => void; /** * Advisor's weekly availability schedule. Days with `enabled: false` are * disabled in the reschedule date picker. */ schedule?: { day: string; enabled: boolean; }[]; /** True while slots are being fetched for the selected date. */ isLoadingSlots?: boolean; onAccept?: (id: string) => void; onDecline?: (id: string) => void; onReschedule?: (id: string, date: Date, slot: AppointmentTimeSlot, note: string) => void; /** Called when "Book a New Appointment" is clicked on a cancelled appointment */ onBookNew?: (clientId?: string) => void; } declare function AppointmentDetailSheet({ appointment, open, onOpenChange, clientProfile, amSlots, pmSlots, onDateChange, schedule, isLoadingSlots, onAccept, onDecline, onReschedule, onBookNew, }: AppointmentDetailSheetProps): react_jsx_runtime.JSX.Element | null; export { type AppointmentClientProfile, type AppointmentDetailItem, AppointmentDetailSheet, type AppointmentDetailSheetProps, type AppointmentMeetingActionItem, AppointmentMeetingFormat, type AppointmentMeetingSummary, AppointmentStatus, type LoanApplicationStatus };