import type { Person } from '../core'; import type { Slot } from '../generated/experience-api-types'; export { RoutingStrategy } from '../generated/experience-api-types'; export interface AvailableSlot { /** * The start time of this appointment slot */ startAt: Slot['startAt']; /** * The end time of this appointment slot */ endAt: Slot['endAt']; /** * The preferred user for this appointment slot, taking into account the configured routing * strategy for the appointment type. Note that, by default, the useScheduler() hook only returns * preferred users for an appointment slot. In order to include all available users, to must * pass `includeAvailable` */ preferred: Person; } export interface BookingRequestOptions { /** * The time zone to use when booking this appointment. * * You rarely need to provide this information, as Source typically handles time zone conversion * for you. By default, we book all appointments based on the browser's time zone at the time a * booking request was made. * * If you know that you'd like to use another time zone, you may provide one here when sending the * booking request. */ timeZone?: string; /** * Applies a subject or "reason for visit" to the booked appointment. * * Subjects are not required for Source appointments, thus this field is optional. It is most commonly * used when you want to present the patient with a text box in which they can fill out a reason for * their visit. However, you can also simply attach it to a fixed dropdown of options as well. */ subject?: string | null; /** * Overrides the participant to be selected when booking a time slot * * You can specify this parameter when you don't want to use a time slot's preferred participant, and * instead want to present an option to select from a list of all available participants. */ participant?: string; }