import { type CalendarRow, type WaitingEntryDraft } from './calendar.model'; import { type WaitingListRowView } from './calendar-workspace.model'; import { type CalendarPatient, type CalendarWaitingEntry } from './calendar.types'; export interface WaitingEntryCardProps { view: WaitingListRowView; locale: string; privacy?: boolean; readOnly?: boolean; /** Schedule (unlinked) / Bring forward (linked). */ onPlace: (entry: CalendarWaitingEntry) => void; /** Unset = no finder on this host: the button is not rendered. */ onFindSlots?: (entry: CalendarWaitingEntry) => void; /** Unset = no entry form on this host: Edit and Assign are withheld. */ onEdit?: (entry: CalendarWaitingEntry) => void; onRemove: (entry: CalendarWaitingEntry) => void; onOpenPatient?: (patient: CalendarPatient) => void; onOpenAppointment: (eventId: string) => void; } /** A waiting entry as one elevated card: who, since when, what it is * tied to, and the one line of actions that moves it off the list. */ export declare const WaitingEntryCard: import("react").ForwardRefExoticComponent>; export interface WaitingListPanelProps { /** Privacy mode, in step with the grid: names masked, the photo, the * phone, the WhatsApp link and the free-text description withheld. */ privacy?: boolean; entries: CalendarWaitingEntry[]; /** Live grid rows — the linked appointment's date, colour and care. */ rows: CalendarRow[]; locale: string; /** No edit permission (`permissions.editAppointment === false`). Add, * Edit, Assign and Remove are withheld and a lock note says why. */ readOnly?: boolean; /** The host's read of the queue. A first `loading` shows card-shaped * placeholders; a refresh keeps its cards and marks the list busy. */ status?: 'loading' | 'ready' | 'error'; onRetry?: () => void; /** Schedule / Bring forward → the host's placement hand-off. */ onPlaceWaiting: (entry: CalendarWaitingEntry) => void; /** «Find a slot» → the find-slots tool, seeded by the host from the * entry (`FindSlotsSeed`). Unset = the button is not rendered. */ onFindSlotsForWaiting?: (entry: CalendarWaitingEntry) => void; /** Delete — immediate, as on the platform (the host toasts an Undo). */ onRemoveWaiting: (entry: CalendarWaitingEntry) => void; /** Add entry, a row's edit and the assign buttons → the entry form. */ onOpenEntryForm?: (entry?: CalendarWaitingEntry) => void; /** * The entry form as a `PanelSubview` over this list. Pass the open * state (`null` = closed) with `onSaveEntry` and `onCancelEntry`; leave * all three out and the host renders its own form, as before. */ entryForm?: { entry?: CalendarWaitingEntry; } | null; onSaveEntry?: (draft: WaitingEntryDraft) => void; onCancelEntry?: () => void; /** The patient-folder hop. Unset renders the name as plain text. */ onOpenPatient?: (patient: CalendarPatient) => void; /** The platform's `focusAppointmentId` deep link — steer and ring. */ onOpenAppointment: (eventId: string) => void; } export declare const WaitingListPanel: import("react").ForwardRefExoticComponent>; //# sourceMappingURL=calendar-waiting-list-panel.d.ts.map