import { type CalendarView } from '../../components/calendar'; import { type CalendarPreferenceAdapter } from './calendar.preferences'; import { type CalendarRow, type RailFocus, type EditorPrefill, type HistoryInput, type AvailabilityContext, type CalendarFreeSlot } from './calendar.model'; import { type WorkspaceDisplaySettings, type CreateModeRequest, type PlacementRequest, type SaveNotice, type CalendarWorkspaceToolId } from './calendar-workspace.model'; import type { CalendarOccurrenceMove } from './calendar.journey'; export declare function CalendarSurface({ rows, setRows, onFocus, locale, onComposeNew, onComposeTask, onOpenWaitingList, onAddWaitingEntry, onOpenOnlineBookings, onlineBookingsCount, waitingBadgeCount, onVisibleRangeChange, selectedEventId, gotoRequest, onBookSlot, onBookSlotFromFinder, display, setDisplay, defaultDisplay, onHistory, readOnly, reviewOnlyEventIds, detailsOnEveryClick, gridHeld, placement, onPlacementEnd, createMode, onCreateModeEnd, focusScroll, saveNotice, privacy, onPrivacyChange, availability, availabilityContext, availableTools, schedulerLicenseKey, id, preferences, onMoveOccurrence, onViewChange, onPeekOpen, }: { rows: CalendarRow[]; setRows: React.Dispatch>; onFocus: (focus: RailFocus) => void; locale: string; /** Masks patient names on the grid, the peek and the print sheet. Owned * by the journey so the rail's Appointments panel masks in step. */ privacy: boolean; onPrivacyChange: (next: boolean) => void; /** The finder's live projection: free ranges glow, booked cards dim, * and a band opens its original choices. Null when no search is shown. */ availability: CalendarFreeSlot[] | null; availabilityContext: AvailabilityContext | null; /** No edit permission: no drag, no slot-click create. */ readOnly?: boolean; /** Host queue rows whose canonical editor data is not available yet. */ reviewOnlyEventIds?: ReadonlySet; /** The host reads its own details: every row click focuses, including * patient-less and pending rows. Off, a pending chip stays inert. */ detailsOnEveryClick?: boolean; /** A Move… / Copy… armed from the details panel — the grid shows the * mode banner and the next empty-slot click places the appointment. */ placement?: PlacementRequest | null; /** The placement landed (`true`) or was cancelled. */ onPlacementEnd?: (landed?: boolean) => void; /** A create mode armed by a deep link or the Backlog's Schedule — the * banner stands until the next empty-slot click or Cancel. */ createMode?: CreateModeRequest | null; /** The create mode landed or was cancelled. */ onCreateModeEnd?: () => void; /** Deep link `focusAppointmentId`: scroll the card into view and ring * it. Tick-keyed so the same id can be re-focused. */ focusScroll?: { tick: number; eventId: string; } | null; /** A save just landed — toast "Saved for {date}" and, when the day is * off screen or filtered out, a Go to action (decision 10). */ saveNotice?: SaveNotice | null; /** New appointment — seeds a clean editor (the host docks the panel). */ onComposeNew: () => void; /** New task — the create group's second member. Omit it (the host has * no `handleCreateTask`) and the button is withheld entirely, leaving * a single "New appointment" button; this surface does not decide * what the click opens, only whether to offer it. */ onComposeTask?: () => void; /** The split button's main segment — the waiting-list panel. */ onOpenWaitingList: () => void; /** The split button's plus segment — the waiting-list entry form. */ onAddWaitingEntry: () => void; /** Waiting ENTRIES only — online bookings carry their own count. */ waitingBadgeCount: number; /** The Online bookings button — the platform's page hop (a toast). */ onOpenOnlineBookings: () => void; /** Bookings of the last thirty days still missing a patient or an * operator — the count the platform's alert strip carries. */ onlineBookingsCount: number; /** The grid event whose details panel is docked — ringed on the grid. */ selectedEventId: string | null; /** Navigate seam — tick-keyed so re-steering to the same day works. */ gotoRequest: { tick: number; date: Date; } | null; /** Seed the editor prefilled (an empty-slot click, a booking to process). */ onBookSlot: (prefill: EditorPrefill) => void; /** A host tool holds the dock (`hold`): a grid click still selects, but * never opens the editor over it. */ gridHeld?: boolean; onBookSlotFromFinder: (prefill: EditorPrefill) => void; /** The cog's settings — owned by the journey (the editor reads them). */ display: WorkspaceDisplaySettings; setDisplay: React.Dispatch>; /** What "Reset to defaults" in the cog returns to: the kit defaults with * the host's `initialDisplay` on top. */ defaultDisplay: WorkspaceDisplaySettings; /** Ledger feed — a committed drag or resize of a patient appointment. */ onHistory: (eventId: string, entry: HistoryInput) => void; /** The grid's visible range (epoch ms) — scopes the unconfirmed queue. */ onVisibleRangeChange: (range: { start: number; end: number; }) => void; /** The rail tools this host can back. A toolbar control whose tool is * not in the set is not rendered at all — a button that opens a * panel the host has no data for is worse than a missing one. */ availableTools: ReadonlySet; /** The host's FullCalendar Scheduler licence key, handed to the kit * `Calendar`. Undefined leaves the component on its own environment * default — the grid behaves exactly as it did without this prop. */ schedulerLicenseKey?: string; /** The kit Calendar's instance id — the agent registry's handle and a * public DOM hook. One workspace per page keeps the default. */ id?: string; /** Where the toolbar's remembered choices live — the host's per-user * store. Defaults to the session-scoped in-memory adapter. */ preferences?: CalendarPreferenceAdapter; /** The host's series move (S-C8). With it, a recurring parent's move * always confirms, asks the scope and hides the notify boxes. */ onMoveOccurrence?: (move: CalendarOccurrenceMove) => Promise; /** The grid's view, on mount and on every change. Usage reporting only. */ onViewChange?: (view: CalendarView) => void; /** An appointment's preview opened. Usage reporting only. */ onPeekOpen?: (eventId: string) => void; }): import("react/jsx-runtime").JSX.Element; //# sourceMappingURL=calendar.surface.d.ts.map