Types

Types Documentation

PropKey

export type PropKey = string | number | symbol;

StoreKey

export type StoreKey = string;

StoreName

export type StoreName<T> = keyof T;

StateKey

export type StateKey = string;

ElementID

export type ElementID = string;

PropStateRegistration

export type PropStateRegistration = { elementId: ElementID; propKey: PropKey };

EventListenerRegistration

export type EventListenerRegistration = [HTMLElement, PropKey, (event: CustomEvent<any>) => Promise<void>];

NylasProviderInterface

export interface NylasProviderInterface<Stores extends Record<string, ObservableMap<any>>> {
  nylasConnector?: BaseNylasConnectorInterface;
  stores: Stores;
  host?: HTMLElement;
  automaticComponentRegistration: boolean;
  registeredComponents: Record<ElementID, RegisteredComponent<any, any>>;
  propStateRegistrations: Map<StoreName<this['stores']>, Map<StateKey, PropStateRegistration[]>>;
  eventListenerRegistrations: Map<ElementID, EventListenerRegistration[]>;
  componentWillLoad(nylasConnector: BaseNylasConnectorInterface): Promise<void>;
  componentDidLoad(): Promise<void>;
  componentDisconnected(): Promise<void>;
  getStore<K extends keyof ThisType<this['stores']>>(name: K): ThisType<this['stores']>[K];
  registerComponent(component: RegisteredComponent<any, any>): void;
  unregisterComponent(component: RegisteredComponent<any, any>): void;
}

EventOverride

export type EventOverride<Connector extends BaseNylasConnectorInterface> = Record<string, (event: CustomEvent<any>, connector?: Connector) => Promise<void>>;

SchedulerComponents

export type SchedulerComponents = NylasTimeslotPicker | NylasDatePicker | NylasLocaleSwitch | NylasBookingForm | NylasSelectedEventCard | NylasBookedEventCard;

NylasTimeslotPickerEventEmitterProperties

export type NylasTimeslotPickerEventEmitterProperties = Exclude<ExtractEventEmitterProperties<NylasTimeslotPicker>, undefined>;

NylasDatePickerEventEmitterProperties

export type NylasDatePickerEventEmitterProperties = Exclude<ExtractEventEmitterProperties<NylasDatePicker>, undefined>;

NylasLocaleSwitchEventEmitterProperties

export type NylasLocaleSwitchEventEmitterProperties = Exclude<ExtractEventEmitterProperties<NylasLocaleSwitch>, undefined>;

NylasSchedulerAdditionalDataEventEmitterProperties

export type NylasSchedulerAdditionalDataEventEmitterProperties = Exclude<ExtractEventEmitterProperties<NylasBookingForm>, undefined>;

NylasSelectedEventCardEventEmitterProperties

export type NylasSelectedEventCardEventEmitterProperties = Exclude<ExtractEventEmitterProperties<NylasSelectedEventCard>, undefined>;

NylasBookedEventCardEventEmitterProperties

export type NylasBookedEventCardEventEmitterProperties = Exclude<ExtractEventEmitterProperties<NylasBookedEventCard>, undefined>;

NylasBookingFormEventEmitterProperties

export type NylasBookingFormEventEmitterProperties = Exclude<ExtractEventEmitterProperties<NylasBookingForm>, undefined>;

NylasCancelBookingFormEventEmitterProperties

export type NylasCancelBookingFormEventEmitterProperties = Exclude<ExtractEventEmitterProperties<NylasCancelBookingForm>, undefined>;

NylasCancelledEventCardEventEmitterProperties

export type NylasCancelledEventCardEventEmitterProperties = Exclude<ExtractEventEmitterProperties<NylasCancelledEventCard>, undefined>;

SchedulerEventEmitterProperties

export type SchedulerEventEmitterProperties =
  | NylasTimeslotPickerEventEmitterProperties
  | NylasDatePickerEventEmitterProperties
  | NylasLocaleSwitchEventEmitterProperties
  | NylasSchedulerAdditionalDataEventEmitterProperties
  | NylasSelectedEventCardEventEmitterProperties
  | NylasBookedEventCardEventEmitterProperties
  | NylasBookingFormEventEmitterProperties
  | NylasCancelBookingFormEventEmitterProperties
  | NylasCancelledEventCardEventEmitterProperties;

SchedulerEventOverride

export type SchedulerEventOverride = Partial<{
  [P in SchedulerEventEmitterProperties as P['key']]: (event: CustomEvent<P['eventType']>, connector?: NylasSchedulerConnectorInterface) => Promise<void>;
}> &
  EventOverride<NylasSchedulerConnectorInterface>;

NylasSchedulerEditorComponents

export type NylasSchedulerEditorComponents =
  | NylasAdditionalParticipants
  | NylasAvailabilityPicker
  | NylasBookingCalendarPicker
  | NylasBookingConfirmationRedirect
  | NylasBookingConfirmationType
  | NylasBookingFormConfig
  | NylasSchedulingMethod
  | NylasCalendarPicker
  | NylasCancellationPolicy
  | NylasConfirmationEmail
  | NylasConnectedCalendars
  | NylasCustomBookingFlow
  | NylasCustomizeBookingSettings
  | NylasEditorTabs
  | NylasEventDescription
  | NylasEventDuration
  | NylasEventLocation
  | NylasEventTitle
  | NylasLimitFutureBookings
  | NylasListConfigurations
  | NylasMinBookingNotice
  | NylasParticipantBookingCalendars
  | NylasParticipantsCustomAvailability
  | NylasReminderEmails
  | NylasReminderTime;

NylasEditorTabsEventEmitterProperties

export type NylasEditorTabsEventEmitterProperties = Exclude<ExtractEventEmitterProperties<NylasEditorTabs>, undefined>;

NylasListConfigurationsEventEmitterProperties

export type NylasListConfigurationsEventEmitterProperties = Exclude<ExtractEventEmitterProperties<NylasListConfigurations>, undefined>;

NylasSchedulerEditorEventEmitterProperties

export type NylasSchedulerEditorEventEmitterProperties = NylasEditorTabsEventEmitterProperties | NylasListConfigurationsEventEmitterProperties;

SchedulerEditorEventOverride

export type SchedulerEditorEventOverride = Partial<{
  [P in NylasSchedulerEditorEventEmitterProperties as P['key']]: (event: CustomEvent<P['eventType']>, connector?: NylasSchedulerConfigConnectorInterface) => Promise<void>;
}> &
  EventOverride<NylasSchedulerConfigConnectorInterface>;

Locale

export type Locale = {
  noDateSelected: string;
  rescheduleTitle: string;
  days: {
    sunday: string;
    monday: string;
    tuesday: string;
    wednesday: string;
    thursday: string;
    friday: string;
    saturday: string;
  };
  time: {
    hour: string;
    hours: string;
    minute: string;
    minutes: string;
  };
  months: {
    january: string;
    february: string;
    march: string;
    april: string;
    may: string;
    june: string;
    july: string;
    august: string;
    september: string;
    october: string;
    november: string;
    december: string;
  };
  nextButton: string;
  selectedDayAndYear: string;
  selectedTime: string;
  name: string;
  namePlaceholder: string;
  email: string;
  emailPlaceholder: string;
  guestEmail: string;
  guestEmailPlaceholder: string;
  addGuest: string;
  addAnotherGuest: string;
  backButton: string;
  bookNowButton: string;
  bookingConfirmed: string;
  bookingConfirmedDescription: string;
  bookingSent: string;
  bookingSentDescription: string;
  bookingRescheduled: string;
  bookingDateAndTimeHeader: string;
  cancelBookingButton: string;
  rescheduleBookingButton: string;
  rejectBookingButton: string;
  confirmBookingButton: string;
  bookingPendingTitle: string;
  bookingPendingDescription: string;
  confirmedEventCardTitle: string;
  confirmedEventCardDescription: string;
  cancelBookingTitle: string;
  cancelBookingMessage: string;
  reasonForCancellation: string;
  goBackButton: string;
  bookingCancelledTitle: string;
  bookingCancelledMessage: string;
  closeButton: string;
  closingButton: string;
  fieldRequired: string;
  invalidInputFormat: string;
  createBookingErrorTitle: string;
  getAvailabilityErrorTitle: string;
  cancelBookingErrorTitle: string;
  rescheduleBookingErrorTitle: string;
  getUISettingErrorTitle: string;
  rejectBookingErrorTitle: string;
  confirmBookingErrorTitle: string;
  genericErrorTitle: string;
  schedulingComponentErrorTitle: string;
  sessionIdRequiredErrorMessage: string;
  publicConfigErrorMessage: string;
  invalidTimeslotErrorTitle: string;
  invalidTimeslotErrorMessage: string;
  cancellationErrorTitle: string;
  cancellationErrorMessage: string;
  minimumCancellationErrorMessage: string;
  cancelBokingFormError: string;
};

NylasRequestArgs

/**
 * Arguments for making a request to the Nylas API.
 */
export type NylasRequestArgs = {
  method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';
  path: string;
  body?: any;
  headers?: Record<string, string>;
};

User

/**
 * A model representing a user in the Nylas Identity system.
 */
export type User = {
  id: string;
  email: string;
  name?: string;
  provider?: string;
};

AuthArgs

/**
 * Arguments for authenticating a user with the Nylas Identity system.
 */
export type AuthArgs = {
  /**
   * The provider of the user's email address.
   */
  provider?: string;
  /**
   * A list of permission scopes for the provider.
   */
  scope?: Array<string>;
  /**
   * The login hint associated with the user.
   */
  loginHint?: string;
  /**
   * Whether to include grant scopes in the auth exchange.
   */
  includeGrantScopes?: boolean;
  prompt?: string;
  metadata?: string;
  state?: string;
};

NylasTheme

export type NylasTheme = Partial<{
  '--nylas-color-primary-50': string;
  '--nylas-color-primary-100': string;
  '--nylas-color-primary-200': string;
  '--nylas-color-primary-300': string;
  '--nylas-color-primary-400': string;
  '--nylas-color-primary-500': string;
  '--nylas-color-primary-600': string;
  '--nylas-color-primary-700': string;
  '--nylas-color-primary-800': string;
  '--nylas-color-primary-900': string;
  '--nylas-color-primary-950': string;
}>;

RegisteredComponent

export interface RegisteredComponent<H extends ComponentInterface, B extends BaseNylasConnectorInterface, MailboxStores = string> {
  name: string;
  element: HTMLElement;
  getStoresToProp?: keyof H;
  storeToProps?: Map<string, keyof H>;
  stateToProps?: Map<MailboxStores, keyof H>;
  eventToProps?: Map<ExtractEventEmitterKeys<H>, (event: CustomEvent<EventEmitterEventType<H[ExtractEventEmitterKeys<H>]>>, nylasConnector: B) => Promise<void>>;
  localPropsToProp?: Map<string, keyof H>;
  authToProp?: keyof H;
  connectorToProp?: keyof H;
  registrationEventName?: string;
  unregistrationEventName?: string;
}

RegisterComponentConfig

export interface RegisterComponentConfig<H extends ComponentInterface, B extends BaseNylasConnectorInterface, MailboxStores>
  extends Omit<RegisteredComponent<H, B, MailboxStores>, 'eventToProps' | 'name' | 'element'> {
  name: string;
  eventToProps?: Partial<{
    [P in ExtractEventEmitterProperties<H> as P['key']]: (event: CustomEvent<P['eventType']>, nylasConnector: B) => Promise<void>;
  }>;
  fireRegisterEvent?: boolean;
}

NylasComponentInterface

export interface NylasComponentInterface extends ComponentInterface {
  authToProp?: keyof this;
  connectorToProp?: keyof this;
}

DataState

export type DataState = 'loading' | 'ready';

StoresType

type StoresType = unknown;

StoreInstances

type StoreInstances = {
  [K in keyof StoresType]: StoresType[K];
};

StoreStateKeys

type StoreStateKeys<T> = T extends { state: infer S } ? keyof S : never;

CombinedStoreStateKeys

/**
 * This type is used to create a union of all possible store state keys.
 * Example:
 * type CombinedStoreStateKeys = "nylas.messages" | "nylasTheme.colour"
 */
export type CombinedStoreStateKeys<SK extends keyof S, S = StoreInstances> = {
  [StoreKey in SK]: StoreStateKeys<S[StoreKey]> extends never | undefined ? never : `${StoreKey & string}.${StoreStateKeys<S[StoreKey]> & string}`;
}[SK];

InternalMessage

export type InternalMessage = {
  id: string;
  data: Message;
  collapse: boolean;
  showContactData: boolean;
};

InternalAttachment

export type InternalAttachment = {
  blob: Blob;
  filename: string;
  contentType: string;
  size: number;
  messageId: string;
};

MethodKeys

export type MethodKeys<T> = {
  [K in keyof T]: T[K] extends Function ? K : never;
}[keyof T];

AvailabilityTimeslot

// TODO: Move this to @nylas/core
export type AvailabilityTimeslot = {
  emails: string[];
  start_time: number;
  end_time: number;
};

AvailabilityResponse

export type AvailabilityResponse = {
  order?: string[];
  time_slots: AvailabilityTimeslot[];
  participants: {
    email: string;
    name: string;
  }[];
  duration: number;
};

UISettingsResponse

export type UISettingsResponse = {
  configuration_id: string;
  scheduler: {
    available_days_in_future: number;
    min_cancellation_notice: number;
    min_booking_notice: number;
    cancellation_policy: string;
  };
  organizer: {
    name: string;
    email: string;
  };
  slug: string;
  appearance: Appearance;
  booking_type: string;
  name: string;
};

ExtractEventEmitterKeys

// Extracts a mapped type with keys of T that are EventEmitters, and their corresponding types
export type ExtractEventEmitterKeys<T> = {
  [K in keyof T]: T[K] extends EventEmitter<any> ? K : never;
}[keyof T];

EventEmitterEventType

// Extracts the event type from an EventEmitter
export type EventEmitterEventType<T> = T extends EventEmitter<infer U> ? U : never;

ExtractEventEmitterProperties

// Extracts a mapped type with keys of T that are EventEmitters, and their corresponding types
export type ExtractEventEmitterProperties<T> = {
  [K in keyof T]: T[K] extends EventEmitter<infer U> ? { key: K; eventType: U } : never;
}[keyof T];

NylasEvent

export type NylasEvent = {
  booking_id: string;
  organizer: {
    email: string;
    name: string;
    is_organizer?: boolean;
  };
  title: string;
  description: string;
  status: string;
};

NylasSchedulerBookingParticipant

export type NylasSchedulerBookingParticipant = { name: string; email: string };

NylasSchedulerBookingData

export type NylasSchedulerBookingData = {
  primaryParticipant: NylasSchedulerBookingParticipant;
  startTime?: Date;
  endTime?: Date;
  timezone?: string;
  guests?: NylasSchedulerBookingParticipant[];
  additionalFields?: Record<
    string,
    {
      value: string;
      type: string;
    }
  >;
};

NylasSchedulerBookingDataWithFlatFields

/**
 * This type is used to book event and pass data to the redirect page.
 */
export type NylasSchedulerBookingDataWithFlatFields = Omit<NylasSchedulerBookingData, 'additionalFields'> & {
  additionalFields?: Record<string, string>;
};

DataResponseError

export type DataResponseError = Exclude<NylasErrorResponse['error'], undefined>;

DataResponseReturnType

export type DataResponseReturnType<T = any> = [T, null] | [null, DataResponseError];

AddCircleIcon

interface AddCircleIcon {
  height: string;
  width: string;
}

ArchiveIcon

interface ArchiveIcon {
  height: string;
  width: string;
}

ArrowIcon

interface ArrowIcon {
  height: string;
  width: string;
}

BoldIcon

interface BoldIcon {
  height: string;
  width: string;
}

ButtonComponent

interface ButtonComponent {
  blurHandler?: (event: FocusEvent) => void;
  clickHandler?: (event: MouseEvent) => void;
  disabled: boolean;
  focusHandler?: (event: FocusEvent) => void;
  isLoading: boolean;
  mouseOutHandler?: (event: MouseEvent) => void;
  mouseOverHandler?: (event: MouseEvent) => void;
  tooltip: string;
  type: string;
  variant: ButtonType;
}

CalendarAgendaFillIcon

interface CalendarAgendaFillIcon {
  height: string;
  width: string;
}

CalendarAgendaIcon

interface CalendarAgendaIcon {
  height: string;
  width: string;
}

CalendarCancelIcon

interface CalendarCancelIcon {
  height: string;
  width: string;
}

CalendarCheckIcon

interface CalendarCheckIcon {
  height: string;
  width: string;
}

CalendarIcon

interface CalendarIcon {
  height: string;
  width: string;
}

CalendarInfoIcon

interface CalendarInfoIcon {
  height: string;
  width: string;
}

CalendarPatternsIcon

interface CalendarPatternsIcon {
  height: string;
  width: string;
}

CheckboxComponent

/**
 * The `checkbox-component` component is a UI component that allows users to select a checkbox.
 * This component is used in the scheduling form to input checkbox type inputs.
 */
interface CheckboxComponent {
  /**
   * The default value of the checkbox. This is the value that is displayed when the checkbox is rendered.
   */
  checked?: boolean;
  /**
   * The label of the checkbox. This is displayed next to the checkbox.
   */
  label: string;
  /**
   * The name of the checkbox. This is used to identify the checkbox when submitting a form.
   */
  name: string;
  /**
   * Whether the checkbox is required. If true, the checkbox must be checked when submitting a form. Default is false. If the checkbox is required and not checked, an error message is displayed.
   */
  required: boolean;
}

CheckmarkCircleIcon

interface CheckmarkCircleIcon {
  height: string;
  width: string;
}

CheckmarkIcon

interface CheckmarkIcon {
  height: string;
  width: string;
}

ChevronIcon

interface ChevronIcon {
  height: string;
  width: string;
}

ClockIcon

interface ClockIcon {
  height: string;
  width: string;
}

CloseIcon

interface CloseIcon {
  height: string;
  width: string;
}

CopyIcon

interface CopyIcon {
  height: string;
  width: string;
}

DeleteIcon

interface DeleteIcon {
  height: string;
  width: string;
}

DocumentRefreshIcon

interface DocumentRefreshIcon {
  height: string;
  width: string;
}

DragableIcon

interface DragableIcon {
  height: string;
  width: string;
}

EditIcon

interface EditIcon {
  height: string;
  width: string;
}

EnvelopeFillIcon

interface EnvelopeFillIcon {
  height: string;
  width: string;
}

EnvelopeIcon

interface EnvelopeIcon {
  height: string;
  width: string;
}

EyeIcon

interface EyeIcon {
  height: string;
  width: string;
}

FeedbackIcon

interface FeedbackIcon {
  height: string;
  width: string;
}

FlowIcon

interface FlowIcon {
  height: string;
  width: string;
}

FolderIcon

interface FolderIcon {
  height: string;
  width: string;
}

ForwardIcon

interface ForwardIcon {
  height: string;
  width: string;
}

GlobeIcon

interface GlobeIcon {
  height: string;
  width: string;
}

GoogleLogoIcon

interface GoogleLogoIcon {
  height: string;
  width: string;
}

GoogleMeetIcon

interface GoogleMeetIcon {
  height: string;
  width: string;
}

InboxIcon

interface InboxIcon {
  height: string;
  width: string;
}

InfoIcon

interface InfoIcon {
  height: string;
  width: string;
}

InputColorPicker

/**
 * The `input-color-picker` component is a dropdown that allows users to select an accent color from either RGB inputs or an interactive color picker and converts them to a hex value.
 * This component is used in the scheduling form to input dropdown type inputs.
 */
interface InputColorPicker {
  /**
   * The default selected color
   */
  defaultSelectedColor?: string;
  /**
   * The name of the dropdown
   */
  name: string;
}

InputComponent

/**
 * The `input-component` component is a UI component that allows users to input text, email, or phone number values.
 * This component is used in the scheduling form to input text, email and phone number type inputs.
 */
interface InputComponent {
  /**
   * Whether the input should be focused when rendered. Default is false. If true, the input is focused when rendered. Use this to set the focus on the first input in a form.
   */
  autoFocus: boolean;
  /**
   * The default value of the input. This is the value that is displayed when the input is rendered.
   */
  defaultValue?: string;
  /**
   * The label of the input. This is displayed above the input.
   */
  label: string;
  /**
   * The maximum length of the input value. If the value is longer than the maximum length, an error message is displayed. Default is 255.
   */
  maxLength: number;
  /**
   * The name of the input. This is used to identify the input when submitting a form.
   */
  name: string;
  /**
   * The pattern to validate the input value. If the value does not match the pattern, an error message is displayed. Default is null. If the pattern is not set, the pattern is determined by the input type for 'email' and 'phone_number'.
   */
  pattern?: RegExp;
  /**
   * The error message to display when the value does not match the pattern. Default is 'Invalid <field> format.' where <field> is the input label.
   */
  patternError: string;
  /**
   * The placeholder of the input. This is displayed when the input is empty.
   */
  placeholder: string;
  /**
   * Whether the input is read-only. If true, the input cannot be edited. Default is false.
   */
  readOnly: boolean;
  /**
   * Whether the input is required. If true, the input must have a value when submitting a form. Default is false. If the input is required and the value is empty, an error message is displayed.
   */
  required: boolean;
  /**
   * This error message is displayed when the input value is empty and the input is required.
   */
  requiredError: string;
  /**
   * The type of the input. This is used to determine the input's behavior. Supported types are 'text', 'email', and 'phone_number'.
   */
  type: 'text' | 'email' | 'phone_number';
}

InputDropdown

/**
 * The `input-dropdown` component is a dropdown that allows users to input an option and/or select from a list of options.
 */
interface InputDropdown {
  /**
   * The default selected option
   */
  defaultInputOption?: DropdownOption;
  /**
   * This is used to set if the dropdown should be filtered based on the input value. If set to true, the dropdown will be filtered based on the input value.
   */
  filterable: boolean;
  /**
   * Should show search input
   */
  inputValue: string;
  /**
   * The name of the dropdown
   */
  name: string;
  /**
   * The options to display in the dropdown
   */
  options: DropdownOption[];
  /**
   * Show pluralized label for the selected option. This is s tring that is appended to the selected option label as a suffix.
   */
  pluralizedLabel: string;
}

InputImageUrl

/**
 * The `nylas-image-input` component is a UI component that allows users input an image URL and see a preview of the image.
 */
interface InputImageUrl {
  /**
   * Error message to display when the image URL is invalid.
   */
  errorMessage: string;
  /**
   * Image
   */
  imageUrl: string;
  /**
   * The name of the component
   */
  name: string;
}

ItalicIcon

interface ItalicIcon {
  height: string;
  width: string;
}

LoadingIcon

interface LoadingIcon {
  height: string;
  width: string;
}

LocationIcon

interface LocationIcon {
  height: string;
  width: string;
}

LocationOffIcon

interface LocationOffIcon {
  height: string;
  width: string;
}

MicrosoftLogoIcon

interface MicrosoftLogoIcon {
  height: string;
  width: string;
}

MicrosoftTeamsIcon

interface MicrosoftTeamsIcon {
  height: string;
  width: string;
}

MultiSelectDropdown

interface MultiSelectDropdown {
  /**
   * Error message to display
   */
  error?: string;
  /**
   * The label of the dropdown
   */
  label?: string;
  /**
   * The name of the dropdown
   */
  name: string;
  /**
   * The options to display in the dropdown
   */
  options: DropdownOption[];
}

NylasAdditionalParticipants

/**
 * The `nylas-additional-participants` component is a form input for adding additional participants to an event.
 */
interface NylasAdditionalParticipants {
  /**
   * @standalone The logged in user
   */
  currentUser?: User;
  /**
   * @standalone The event participants
   */
  eventParticipants?: Participant[];
  /**
   * @standalone The name of the component
   */
  name: string;
  /**
   * @standalone The additional participants options from the config
   */
  participantOptions?: AdditionalParticipant[];
  /**
   * @standalone The selected config
   */
  selectedConfiguration?: Configuration;
}

NylasAvailabilityPicker

/**
 * The `nylas-availability-picker` component is a form input for selecting availability (open hours).
 */
interface NylasAvailabilityPicker {
  /**
   * @standalone The default timezone or preset timezone.
   */
  defaultTimezone: string;
  /**
   * @standalone Hide the header of the availability picker.
   */
  hideHeader: boolean;
  /**
   * @standalone The name of the availability picker.
   */
  name: string;
  /**
   * @standalone The open hours to display.
   */
  openHours?: OpenHours[];
  /**
   * @standalone The selected configuration.
   */
  selectedConfiguration?: Configuration;
}

NylasBookedEventCard

/**
 * The `nylas-booked-event-card` component is a UI component that displays the booked event card.
 */
interface NylasBookedEventCard {
  /**
   * @standalone The booking info used to book / reschedule the event.
   */
  bookingInfo?: NylasSchedulerBookingData;
  /**
   * @standalone The config settings for the scheduler.
   */
  configSettings?: ConfigSettings;
  /**
   * @standalone The booked event.
   */
  eventInfo: NylasEvent;
  /**
   * @standalone The loading state prop. Used to display loading state when fetching availability.
   */
  isLoading?: boolean;
  /**
   * @standalone Booking flow type.
   */
  rescheduleBookingId?: string;
  /**
   * The selected language.
   */
  selectedLanguage: string;
  /**
   * The selected timeslot.
   */
  selectedTimeslot: Timeslot;
  /**
   * The selected timezone.
   */
  selectedTimezone: string;
}

NylasBookingCalendarPicker

/**
 * The `nylas-booking-calendar-picker` component is a UI component that displays the booking calendar picker.
 */
interface NylasBookingCalendarPicker {
  /**
   * @standalone The calendars to choose from.
   */
  calendars?: Calendar[];
  /**
   * @standalone The current logged in user.
   */
  currentUser?: User;
  /**
   * @standalone The list of user's calendars.
   */
  currentUserCalendars?: Calendar[];
  /**
   * @standalone The default selected calendar.
   */
  defaultBookingCalendar: string;
  /**
   * The prop to hide the header.
   */
  hideHeader: boolean;
  /**
   * @standalone The name of the calendar picker.
   */
  name: string;
}

NylasBookingConfirmationRedirect

/**
 * The `nylas-booking-confirmation-redirect` component is a UI component that allows the user to choose a custom redirect URL after a booking is confirmed.
 */
interface NylasBookingConfirmationRedirect {
  /**
   * @standalone The name of the confirmation redirect link.
   */
  name: string;
  /**
   * @standalone The custom redirect URL.
   */
  redirectUrl: string;
  /**
   * @standalone The custom redirect URL error message
   */
  redirectUrlErrorMessage: string;
  /**
   * @standalone The selected config
   */
  selectedConfiguration?: Configuration;
}

NylasBookingConfirmationType

/**
 * The `nylas-booking-confirmation-type` component is a UI component that allows the user to choose a custom redirect URL after a booking is confirmed.
 */
interface NylasBookingConfirmationType {
  /**
   * @standalone The booking type.
   */
  bookingType: string;
  /**
   * @standalone The name of the confirmation redirect link.
   */
  name: string;
  /**
   * @standalone The selected config
   */
  selectedConfiguration?: Configuration;
  /**
   * @standalone Show or hide the confirmation type. This prop is automatically determined based on the value of selectedConfiguration in the config, making it unnecessary to set this prop manually.
   */
  showComponent: boolean;
}

NylasBookingForm

/**
 * The `nylas-booking-form` component is a UI component that allows users to book an event.
 * The booking form component.
 */
interface NylasBookingForm {
  /**
   * @standalone The booking info.
   */
  bookingInfo?: NylasSchedulerBookingData;
  /**
   * @standalone The config settings for the scheduler.
   */
  configSettings?: ConfigSettings;
  /**
   * @standalone The booked event (Used to track if a booking is created in an eventOverride).
   */
  eventInfo?: NylasEvent;
  /**
   * @standalone The loading state.
   */
  isLoading?: boolean;
}

NylasBookingFormConfig

/**
 * The `nylas-booking-form-config` component is a form input for adding additional fields to the booking form.
 */
interface NylasBookingFormConfig {
  /**
   * The additional fields to be displayed on the booking form.
   */
  additonalFields?: AdditionalFields[];
  /**
   * The name of the booking form config.
   */
  name: string;
  selectedConfiguration?: Configuration;
}

NylasBufferTime

/**
 * The `nylas-buffer-time` component is a UI component that allows users to set buffer time before and after an event.
 */
interface NylasBufferTime {
  /**
   * @standalone The buffer time
   */
  buffer: { before: number; after: number };
  /**
   * The name of the calendar picker.
   */
  name: string;
  selectedConfiguration?: Configuration;
}

NylasCalendarPicker

/**
 * The `nylas-calendar-picker` component is a form input for selecting calendars to check availability.
 */
interface NylasCalendarPicker {
  /**
   * @standalone The calendars to choose from.
   */
  calendars?: Calendar[];
  /**
   * @standalone The logged in user.
   */
  currentUser?: User;
  /**
   * @standalone The default selected calendars.
   */
  defaultSelectedCalendars: string[];
  /**
   * @standalone The name of the calendar picker.
   */
  name: string;
}

NylasCancelBookingForm

/**
 * The `nylas-cancel-booking-form` component is a UI component that allows users to cancel a booking (DELETE request).
 * This component is also used to reject a booking (PUT request) by the organizer, if the prop `rejectBookingId` is provided.
 */
interface NylasCancelBookingForm {
  /**
   * The booking ID to cancel.
   */
  cancelBookingId?: string;
  /**
   * @standalone The config settings.
   */
  configSettings?: ConfigSettings;
  /**
   * @standalone The event info.
   */
  eventInfo?: NylasEvent;
  /**
   * @standalone The loading state.
   */
  isLoading?: boolean;
  /**
   * The booking ID to reject.
   */
  rejectBookingId?: string;
  /**
   * The selected timeslot.
   */
  selectedTimeslot: Timeslot;
}

NylasCancellationPolicy

/**
 * The `nylas-cancellation-policy` component is a form input for the cancellation policy message of an event.
 */
interface NylasCancellationPolicy {
  /**
   * @standalone The cancellation policy stored in the configuration
   */
  cancellationPolicy?: string;
  /**
   * @standalone The name of the cancellation policy input.
   */
  name: string;
  /**
   * @standalone The selected config
   */
  selectedConfiguration?: Configuration;
}

NylasCancelledEventCard

/**
 * The `nylas-cancelled-event-card` component is a UI component that displays the cancelled event card.
 */
interface NylasCancelledEventCard {
  /**
   * The participant's name who booked the event / is logged in.
   */
  cancelledEventInfo: Partial<NylasEvent1>;
  /**
   * @standalone The config settings for the scheduler.
   */
  configSettings?: ConfigSettings;
}

NylasConfirmationEmail

/**
 * The `nylas-confirmation-email` component is a UI component that allows users to set buffer time before and after an event.
 */
interface NylasConfirmationEmail {
  /**
   * The confirmation email template data to display
   */
  confirmationEmailTemplate: EmailTemplate;
  /**
   * Is the confirmation email card open
   */
  isOpen: boolean;
  /**
   * The name of the component
   */
  name: string;
  /**
   * List of participants
   */
  participants: Participant[];
  selectedConfiguration?: Configuration;
}

NylasConfirmedEventCard

/**
 * The `nylas-confirmed-event-card` component is a UI component that displays the confirmed event card.
 */
interface NylasConfirmedEventCard {
  /**
   * @standalone The config settings for the scheduler.
   */
  configSettings?: ConfigSettings;
  /**
   * The participant's name who booked the event / is logged in.
   */
  confirmedEventInfo: Partial<NylasEvent1>;
}

NylasConnectedCalendars

/**
 * The `nylas-connected-calendars` component is a form input for selecting calendars to check availability for participants.
 */
interface NylasConnectedCalendars {
  /**
   * @standalone The calendars to choose from for the organizer / logged in user.
   */
  calendars?: Calendar[];
  /**
   * The name of the participants custom availability.
   */
  name: string;
  /**
   * @standalone The participant options passed in the additionalParticipants prop from the nylas-scheduler-editor component.
   */
  participantOptions?: AdditionalParticipant[];
  /**
   * @standalone The participants selected in the add participants section.
   */
  participants: Participant[];
  /**
   * @standalone The selected config
   */
  selectedConfiguration?: Configuration;
}

NylasCustomBookingFlow

/**
 * The `nylas-custom-booking-flow` component is an input form for booking type (automatically or manually accept bookings) and confirmation redirect URL (default or custom).
 * This component is a container for the `nylas-booking-confirmation-type`, `nylas-booking-confirmation-redirect` components.
 * ```html
 * <nylas-custom-booking-flow>
 *   <div slot="inputs">
 *     <nylas-booking-confirmation-type></nylas-booking-confirmation-type>
 *     <nylas-booking-confirmation-redirect></nylas-booking-confirmation-redirect>
 *   </div>
 * </nylas-custom-booking-flow>
 * ```
 */
interface NylasCustomBookingFlow {}

NylasCustomEventSlug

/**
 * The `nylas-custom-event-slug` component is a UI component that allows users to add a custom URL slug for their event link.
 */
interface NylasCustomEventSlug {
  /**
   * The default custom event slug
   */
  defaultUrlSlug?: string;
  /**
   * Is the custom event slug card expanded
   */
  isOpen: boolean;
  /**
   * The name of the component
   */
  name: string;
  /**
   * Indicates if a slug is required for the configuration. When set to true, the user must enter a slug when creating or editing a configuration. The slug is used for hosted pages that are public.
   */
  requiresSlug: boolean;
  /**
   * The selected config
   */
  selectedConfiguration?: Configuration;
  /**
   * Slug error message
   */
  slugErrorMessage: string;
}

NylasCustomizeBookingSettings

/**
 * The `nylas-customize-booking-settings` component is a UI component that displays the booking calendar picker.
 */
interface NylasCustomizeBookingSettings {
  /**
   * @standalone The default additional guests hidden setting as set in the configuration.
   */
  defaultHideAdditionalGuests: boolean;
  /**
   * @standalone The default hide cancellation options setting as set in the configuration.
   */
  defaultHideCancellationOptions: boolean;
  /**
   * @standalone The default hide rescheduling options setting as set in the configuration.
   */
  defaultHideReschedulingOptions: boolean;
  /**
   * @standalone The name of the calendar picker.
   */
  name: string;
  /**
   * @standalone The selected config
   */
  selectedConfiguration?: Configuration;
}

NylasDatePicker

/**
 * The `nylas-date-picker` component is a UI component that allows users to select a date.
 */
interface NylasDatePicker {
  /**
   * @standalone The config settings.
   */
  configSettings?: ConfigSettings;
  /**
   * The event duration.
   */
  eventDuration?: number;
  /**
   * The loading state.
   */
  isLoading?: boolean;
  /**
   * @standalone The dates that are selectable.
   */
  selectableDates?: Date[];
  /**
   * The selected date.
   */
  selectedDate?: Date;
  /**
   * The selected language.
   */
  selectedLanguage?: string;
}

NylasEditorTabs

/**
 * The nylas-editor-tabs component provides the user interface for managing editor tabs within the scheduler editor.
 * It is primarily used to control the edit mode of the scheduler editor, and it is rendered automatically by the
 * parent component, nylas-scheduler-editor, during editing. There is no need to interact with this component directly
 * or set any props manually, as its behavior is fully managed by the parent component.
 */
interface NylasEditorTabs {
  /**
   * @standalone The list of calendars to use in the editor when configuring availability.
   */
  calendars?: Calendar[];
  /**
   * @standalone The list of configurations
   */
  configurations?: Configuration[];
  /**
   * @standalone The current logged in user.
   */
  currentUser?: User;
  /**
   * @standalone This prop is passed down by the parent component to enable or disable user feedback.
   */
  enableUserFeedback?: boolean;
  /**
   * @standalone This prop is passed down by the parent component. It is an optional prop is used to hide tabs in the editor. Available tabs are: eventInfo, availability, participants, bookingOptions, bookingForm
   */
  hideEditorTabs?: Tab[];
  /**
   * @standalone The mode of the editor. - `app`: The editor is used as a standalone app. - `composable`: The editor is used as a composable component.
   */
  mode?: 'app' | 'composable';
  /**
   * @standalone The scheduler preview link to use when the user clicks on the preview button. You can use a placeholder `{config.id}` to replace the configuration id anywhere in the link.
   */
  schedulerPreviewLink: string;
  /**
   * @standalone The selected configuration to use in the editor when editing an existing configuration or creating a new one.
   */
  selectedConfiguration?: Configuration;
}

NylasEventDescription

/**
 * The `nylas-event-description` component is a form input for the description of an event.
 */
interface NylasEventDescription {
  /**
   * @standalone The event description stored in the configuration
   */
  eventDescription?: string;
  /**
   * @standalone The name of the event description input.
   */
  name: string;
  /**
   * @standalone The selected config
   */
  selectedConfiguration?: Configuration;
}

NylasEventDuration

/**
 * The `nylas-event-duration` component is a form input for the duration of an event.
 */
interface NylasEventDuration {
  /**
   * @standalone The event duration in minutes as set in the configuration.
   */
  eventDurationMinutes?: number;
  /**
   * @standalone The name of the event duration. Default is 'duration'.
   */
  name: string;
  /**
   * @standalone The selected config
   */
  selectedConfiguration?: Configuration;
}

NylasEventInfo

/**
 * The `nylas-event-info` component is an input form for event information such as title, description, duration, location.
 * This component is a container for the `nylas-event-title`, `nylas-event-description`, `nylas-event-duration`, and `nylas-event-location` components.
 * ```html
 * <nylas-event-info>
 *   <div slot="inputs">
 *     <nylas-event-title></nylas-event-title>
 *     <nylas-event-description></nylas-event-description>
 *     <nylas-event-duration></nylas-event-duration>
 *     <nylas-lcation-component></nylas-event-location>
 *   </div>
 * </nylas-event-info>
 * ```
 */
interface NylasEventInfo {}

NylasEventLimits

/**
 * The `nylas-event-limits` component is an input form for event limits, such as the number of available days in the future and
 * the minimum period of notice that a guest must provide to cancel a booking.
 * This component is a container for the `nylas-limit-future-bookings` and `nylas-min-cancellation-notice` components.
 * ```html
 * <nylas-event-limits>
 *   <div slot="inputs">
 *     <nylas-limit-future-bookings></nylas-limit-future-bookings>
 *     <nylas-min-cancellation-notice></nylas-min-cancellation-notice>
 *   </div>
 * </nylas-event-limits>
 * ```
 */
interface NylasEventLimits {}

NylasEventLocation

/**
 * The `nylas-event-location` component is a form input for the location of an event.
 */
interface NylasEventLocation {
  /**
   * @standalone The conference providers where the key is the provider name ('zoom') and the value is the grant id. We currently support same provider ('google', 'microsoft') for all participants and 'zoom' for cross-provider conferencing.
   */
  conferenceProviders?: Record<string, string>;
  /**
   * @standalone The current user
   */
  currentUser?: User;
  /**
   * @standalone The event conferencing stored in the configuration
   */
  eventConferencing?: Conference;
  /**
   * @standalone The event location stored in the configuration
   */
  eventLocation?: string;
  /**
   * @standalone The name of the event location input.
   */
  name: string;
  /**
   * @standalone The selected config
   */
  selectedConfiguration?: Configuration;
  /**
   * @standalone The users provider
   */
  userProvider?: string;
}

NylasEventTitle

/**
 * The `nylas-event-title` component is a form input for the title of an event.
 */
interface NylasEventTitle {
  /**
   * @standalone The title of the event from the cofiguration.
   */
  eventTitle?: string;
  /**
   * @standalone The name attribute of this component.
   */
  name: string;
  /**
   * @standalone The selected config
   */
  selectedConfiguration?: Configuration;
}

NylasFeedbackForm

/**
 * The `nylas-feedback-form` component is a UI component that displays the booked event card.
 */
interface NylasFeedbackForm {}

NylasFormCard

/**
 * The `nylas-form-card` component is a card that can be used to display a form. It is a simple wrapper around a card with a header and content area.
 */
interface NylasFormCard {}

NylasIfState

interface NylasIfState {
  getStore?: <K extends keyof Stores>(name: K) => Stores[K];
  /**
   * If true, then the component will render if the state is true. This prop is used with the `state` prop.
   */
  isBoolean?: boolean;
  /**
   * If true, then the component will render if the state is set (empty or not set). This prop is used with the `state` prop.
   */
  isStateSet?: boolean;
  /**
   * The name of the state to watch.
   */
  state?: string;
  transition: Transitions;
}

NylasLimitFutureBookings

/**
 * The `nylas-limit-future-bookings` component is a form input for the number of days in the future a guest is allowed to book an event.
 */
interface NylasLimitFutureBookings {
  /**
   * @standalone The number of days into the future that invitees will see availability, as set in the configuration.
   */
  availableDaysInFuture?: number;
  /**
   * @standalone The name of the limit future bookings input.
   */
  name: string;
  /**
   * @standalone The selected config
   */
  selectedConfiguration?: Configuration;
}

NylasListConfigurations

/**
 * The `nylas-list-configurations` component displays a list of scheduling pages.
 */
interface NylasListConfigurations {
  /**
   * The list of configurations to display.
   */
  configurations: Configuration[];
  getState: () => Promise<'loading' | 'error' | 'loaded'>;
  /**
   * The next cursor for list configurations, if any.
   */
  listConfigurationsNextCursor?: string | null;
  /**
   * The scheduler preview link to use when the user clicks on the preview button. You can use a placeholder `{config.id}` to replace the configuration id anywhere in the link.
   */
  schedulerPreviewLink: string;
  setError: (error: string) => Promise<void>;
  setState: (state: 'loading' | 'loaded' | 'error') => Promise<void>;
}

NylasLocaleSwitch

/**
 * The `nylas-locale-switch` component is a UI component that allows users to select a timezone and language.
 */
interface NylasLocaleSwitch {
  /**
   * The selected language.
   */
  selectedLanguage: string;
  /**
   * The selected timezone.
   */
  selectedTimezone: string;
}

NylasLogin

interface NylasLogin {
  buttonText: string;
  companyName: string;
  isAuthenticated: boolean;
  loginMethod: 'redirect' | 'emebded';
  logoUrl: string;
  logoWidth?: string;
  nylasConnector?: NylasAuthConnectorInterface;
  providers?: string;
  scopes?: string[];
}
interface NylasLogo {
  height: string;
  width: string;
}

NylasMinBookingNotice

/**
 * The `nylas-min-booking-notice` component is a form input for the minimum period of notice (minutes) that a guest must
 * provide to book an event.
 */
interface NylasMinBookingNotice {
  /**
   * @standalone The minimum booking notice (minutes) stored in the configuration
   */
  minBookingNotice?: number;
  /**
   * @standalone The name of the min booking notice input.
   */
  name: string;
  /**
   * @standalone The selected config
   */
  selectedConfiguration?: Configuration;
}

NylasMinCancellationNotice

/**
 * The `nylas-min-cancellation-notice` component is a form input for the minimum period of notice (minutes) that a guest must
 * provide to cancel a booked event.
 */
interface NylasMinCancellationNotice {
  /**
   * @standalone The minimum cancellation notice (minutes) stored in the configuration
   */
  minCancellationNotice?: number;
  /**
   * @standalone The name of the min cancellation notice input.
   */
  name: string;
  /**
   * @standalone The selected config
   */
  selectedConfiguration?: Configuration;
}

NylasNotification

/**
 * The `nylas-notification` component is a UI component that displays notifications.
 */
interface NylasNotification {
  allowedCategories: string[];
  /**
   * The time-to-live for notifications in milliseconds. Set to 'none' to disable auto-dismissal.
   */
  ttl: number | 'none';
}

NylasOrganizerConfirmationCard

/**
 * The `nylas-organizer-confirmation-card` component is a UI component that displays the booked event card.
 */
interface NylasOrganizerConfirmationCard {
  /**
   * @standalone The config settings for the scheduler.
   */
  configSettings?: ConfigSettings;
  /**
   * @standalone The loading state prop. Used to display loading state when fetching availability.
   */
  isLoading?: boolean;
  /**
   * Booking flow type.
   */
  organizerConfirmationBookingId?: string;
  resetAction: () => Promise<void>;
  /**
   * The selected language.
   */
  selectedLanguage: string;
}

NylasPageName

/**
 * The `nylas-page-name` component is a UI component that allows users to add a custom page name which will appear in the top left corner of the date picker.
 */
interface NylasPageName {
  /**
   * @standalone Is the page name container card expanded
   */
  isOpen: boolean;
  /**
   * @standalone The name of the component
   */
  name: string;
  /**
   * @standalone The default page name
   */
  pageName?: string;
  /**
   * @standalone The selected config
   */
  selectedConfiguration?: Configuration;
  /**
   * @standalone Show toggle button that allows users to expand or collapse the card
   */
  showToggle: boolean;
}

NylasPageStyling

/**
 * The `nylas-page-styling` component is a UI component that allows users to customize the styling of the scheduling page.
 * To use this component, pass a slot `custom-page-style-inputs` to the `nylas-scheduler-editor` component with the input
 * fields you want to display. The component will automatically update the appearance object when the input fields are changed.
 * Ensure that the input fields have the `name` attribute set to the key in the appearance object.
 * If you want to style the Nylas hosted scheduler page, you can use this component to customize the appearance of the page.
 * The fields that can be customized in the Nylas hosted scheduler page are:
 * - Primary color: (name: color)
 * - Company logo: (name: company_logo_url)
 * - Submit button label: (name: submit_button_label)
 * - Thank you message: (name: thank_you_message)
 * This component cannot be used as an independent component. It must be used within the `nylas-scheduler-editor` component.
 */
interface NylasPageStyling {
  appearance?: Appearance;
  isOpen: boolean;
  name: string;
  selectedConfiguration?: Configuration;
}

NylasParticipantBookingCalendars

/**
 * The `nylas-participant-booking-calendars` component is a form input for selecting calendars to check availability for participants.
 */
interface NylasParticipantBookingCalendars {
  /**
   * @standalone The calendars to choose from for the organizer / logged in user.
   */
  calendars?: Calendar[];
  /**
   * @standalone The name of the participants custom availability.
   */
  name: string;
  /**
   * @standalone The participant options passed in the additionalParticipants prop from the nylas-scheduler-editor component.
   */
  participantOptions?: AdditionalParticipant[];
  /**
   * @standalone The participants selected in the add participants section.
   */
  participants: Participant[];
  /**
   * @standalone The selected config
   */
  selectedConfiguration?: Configuration;
}

NylasParticipantsCustomAvailability

/**
 * The `nylas-participants-custom-availability` component is a form input for setting custom availability for participants.
 */
interface NylasParticipantsCustomAvailability {
  /**
   * @standalone The name of the participants custom availability.
   */
  name: string;
  /**
   * @standalone The participants selected in the add participants section.
   */
  participants: Participant[];
  /**
   * @standalone The selected config
   */
  selectedConfiguration?: Configuration;
}

NylasProvider

/**
 * The Nylas Provider component.
 * This component is used to manage the Nylas Provider.
 * It is used to manage the Nylas Auth instance, the Nylas Connector instance,
 * and the Nylas Store instance.
 */
interface NylasProvider {
  /**
   * The Nylas Auth configuration. Used to manage all things authentication with Nylas.
   */
  authConfig?: AuthConfig;
  /**
   * Automatically register components that have the `@RegisterComponent` decorator. If this is set to false, you will need to manually register components using the `registerComponent` method.
   * @default true
   */
  automaticComponentRegistration: boolean;
  /**
   * This provides a way to override the default event handlers.
   */
  eventOverrides: EventOverride<Exclude<typeof this.nylasConnector, undefined>>;
  /**
   * This method is used to retrieve the authStore instance
   * @returns The authStore instance
   */
  getAuthStore: () => Promise<NylasAuthStoreType | undefined>;
  /**
   * This method is used to retrieve the NylasAuth instance
   * @returns The NylasAuth instance
   */
  getNylasAuth: () => Promise<NylasAuthType | undefined>;
  /**
   * This method is used to retrieve the NylasConnector instance
   * @returns The NylasConnector instance
   */
  getNylasConnector: () => Promise<NylasConnector | undefined>;
  /**
   * This method is used to retrieve the NylasSchedulerConfig instance
   * @returns The NylasSchedulerConfig instance
   */
  getNylasSchedulerConfigStore: () => Promise<NylasSchedulerConfigStoreType | undefined>;
  /**
   * This method is used to retrieve the NylasScheduler instance
   * @returns The NylasScheduler instance
   */
  getNylasSchedulerStore: () => Promise<NylasSchedulerStoreType | undefined>;
}

NylasReminderEmails

/**
 * The `nylas-reminder-emails` component is a UI component that allows users to set buffer time before and after an event.
 */
interface NylasReminderEmails {
  /**
   * The name of the component
   */
  name: string;
  /**
   * The selected configuration.
   */
  selectedConfiguration?: Configuration;
}

NylasReminderTime

/**
 * The `nylas-reminder-time` component is a form input for the reminder time before an event.
 */
interface NylasReminderTime {
  /**
   * The event reminder time in minutes as set in the configuration.
   */
  eventReminderTimeMinutes?: number;
  /**
   * The name of the reminder time. Default is 'reminder time'.
   */
  name: string;
}

NylasSchedulerEditor

/**
 * The `nylas-scheduler-editor` component is a form that allows users to configure the settings for the Nylas Scheduler.
 */
interface NylasSchedulerEditor {
  /**
   * This prop is used to populate the additional participants and their availability in the scheduler editor.
   */
  additionalParticipants?: AdditionalParticipant[];
  /**
   * This prop will be used to populate the conference provider options in the editor. The key is the provider name ('zoom') and the value is the grant id. We currently support same provider ('google', 'microsoft') for all participants and 'zoom' for cross-provider conferencing.
   */
  conferenceProviders?: Record<string, string>;
  /**
   * * The configuration id to use for the scheduler editor. If provided, then the scheduler editor will try and fetch the configuration with the provided id. If found, it will automatically load the editor with the configuration settings for editing.
   */
  configurationId?: string;
  /**
   * The default authentication arguments to use when authenticating a user.
   */
  defaultAuthArgs?: AuthArgs[];
  /**
   * The default scheduler config store state. Used to set the initial state of the scheduler config store. This state can be used to pass defaults to newly created configurations.
   */
  defaultSchedulerConfigState?: Partial<NylasSchedulerConfigStoreState>;
  /**
   * Indicates if the user feedback feature is enabled. By default, this is set to true. When enabled, the user feedback feature will be available in the edit mode. To disable the user feedback feature, set this prop to false.
   */
  enableUserFeedback?: boolean;
  /**
   * This provides a way to override the default event handlers.
   */
  eventOverrides: SchedulerEditorEventOverride;
  /**
   * This optional prop is used to hide tabs in the editor. Available tabs are: eventInfo, availability, participants, bookingOptions, bookingForm
   */
  hideEditorTabs?: Tab[];
  /**
   * This is used to set the mode for the scheduler config. The mode can be 'app' or 'composable'. The default mode is 'app'.
   */
  mode: 'app' | 'composable';
  /**
   * The Nylas Api Request instance. Used to make requests to the Nylas API.
   */
  nylasApiRequest?: NylasApiRequest;
  /**
   * The Nylas Sessions configuration. Used to configure the Nylas Sessions instance.
   */
  nylasSessionsConfig?: Config;
  /**
   * Indicates if a slug is required for the configuration. When set to true, the user must enter a slug when creating or editing a configuration. The slug is used for hosted pages. If using Nylas hosted scheduling pages, the `schedulerPreviewLink` prop can be set to redirect to a public configuration as follows: `https://book.nylas.com/us/<YOUR_NYLAS_APP_CLIENT_ID>/{slug}`. `us` denotes the region. Replace it with the appropriate region of your application. Replace `<YOUR_NYLAS_APP_CLIENT_ID>` with your Nylas app client ID. The `{slug}` placeholder is replaced with the appropriate slug when the scheduler preview button is clicked. Note: Nylas hosted scheduling pages are only available for public configurations.
   */
  requiresSlug: boolean;
  /**
   * This method is used to get the NylasSchedulerConfigConnector instance. You can use this instance to make requests to the Nylas API.
   * @returns Promise<NylasSchedulerConfigConnector | undefined>
   */
  schedulerConnector: () => Promise<NylasSchedulerConfigConnector | undefined>;
  /**
   * The scheduler preview link used when the user clicks the preview button. If `requiresSlug` is true, you can use the placeholder `{slug}` to insert the slug in the link for Nylas hosted scheduling pages. Additionally, you can use the placeholder `{config.id}` to insert the configuration ID anywhere in the link. For example: `https://book.nylas.com/us/<YOUR_NYLAS_APP_CLIENT_ID>/{slug}`. `us` denotes the region. Replace it with the appropriate region of your application. Replace `<YOUR_NYLAS_APP_CLIENT_ID>` with your Nylas app client ID. Note: Nylas hosted scheduling pages are only available for public configurations.
   */
  schedulerPreviewLink: string;
  /**
   * This method is used to get the NylasSchedulerConfigStore instance. You can use this instance to update or get the state of the store.
   * @returns Promise<NylasSchedulerConfigStoreType | undefined>
   */
  store: () => Promise<NylasSchedulerConfigStoreType | undefined>;
}

NylasScheduling

/**
 * The `nylas-scheduling` component is used to display the Nylas Scheduling UI.
 */
interface NylasScheduling {
  /**
   * This enables passing the bookingInfo object to the Scheduler UI for direct booking event creation. When used with timeslotConfirmedHandler, it bypasses the additional data page and immediately invokes the handler after booking.
   */
  bookingInfo?: NylasSchedulerBookingData2;
  /**
   * Booking Ref required for cancelling flow.
   */
  cancelBookingRef?: string;
  /**
   * The app ID of the configuration (public config) to be used for the Nylas Scheduler. This is used in conjunction with the slug. When the configurationId is not provided, the slug and clientId are used to make requests to the Scheduler API endpoints. If the configurationId is provided, this prop will be ignored.
   */
  clientId?: string;
  /**
   * The config ID for the Nylas Scheduler. This should be passed in when using a public config, in which case the sessionId is not required.
   */
  configurationId?: string;
  /**
   * The default scheduler store state. Used to set the initial state of the scheduler store.
   */
  defaultSchedulerState?: Partial<NylasSchedulerStoreState>;
  enableUserFeedback?: boolean;
  /**
   * This provides an easy way to override the default function of the event emitter. An example of this is the `timeslotConfirmed` event. By default, this event will set the scheduler store state for `showBookingForm` to `true` which will show the booking form. However, if you want to override this behavior, you can pass in the prop `eventOverride` like: ```html <nylas-scheduling eventOverride={{"timeslotConfirmed": (event, nylasConnector) => { console.log("Timeslot confirmed event fired!"); } }} /> ```
   */
  eventOverrides: SchedulerEventOverride;
  /**
   * This method is used to retrieve the NylasConnector instance
   * @returns The NylasConnector instance
   */
  getNylasSchedulerConnector: () => Promise<NylasSchedulerConnector | undefined>;
  /**
   * This method is used to retrieve the NylasScheduler instance
   * @returns The NylasScheduler instance
   */
  getNylasSchedulerStore: () => Promise<NylasSchedulerStoreType | undefined>;
  getRef: () => Promise<HTMLNylasSchedulingElement>;
  /**
   * The loading state. This is used to set the loading state for the Nylas Scheduler when fetching data.
   */
  isLoading?: boolean;
  /**
   * This prop will allow to override the default localization strings for each language. Nylas scheduling page currently support the following language codes: en, es, fr, de, sv, zh, ja, nl.
   */
  localization?: Partial<Record<LANGUAGE_CODE, Locale>>;
  /**
   * This is used to set the mode for the Nylas Scheduler. The mode can be either `app` or `composable`. The default mode is `app`. - `app`: This mode is used to show the default Nylas Scheduler UI. - `composable`: This mode is used to show the composable Nylas Scheduler UI    by passing the individual scheduler components as children.
   */
  mode: 'app' | 'composable';
  /**
   * This prop lets you hide the Nylas branding. Default is true.
   */
  nylasBranding?: boolean;
  /**
   * Booking Ref required for the manual confirmation flow.
   */
  organizerConfirmationBookingRef?: string;
  /**
   * Booking Ref required for rescheduling flow.
   */
  rescheduleBookingRef?: string;
  /**
   * The URL for the Nylas Scheduler API. (staging or production URL)
   */
  schedulerApiUrl: string;
  /**
   * The session ID for the Nylas Scheduler. This is used to authenticate the user.
   */
  sessionId?: string;
  showNotification?: boolean;
  /**
   * The slug of the configuration (public config) to be used for the Nylas Scheduler. This is used in conjunction with the clientId. When the configurationId is not provided, the slug and clientId are used to make requests to the Scheduler API endpoints. If the configurationId is provided, this prop will be ignored.
   */
  slug?: string;
  /**
   * Theme config, used to automatically generate a theme with color palette and CSS variables to customize the look and feel of the Nylas Scheduler.
   */
  themeConfig?: ThemeConfig;
}

NylasSchedulingMethod

/**
 * The `nylas-scheduling-method` component is a UI component that displays the booking calendar picker.
 */
interface NylasSchedulingMethod {
  /**
   * @standalone The name of the booking type picker.
   */
  name: string;
  /**
   * @standalone The participant options passed in the additionalParticipants prop from the nylas-scheduler-editor component.
   */
  participantOptions?: AdditionalParticipant[];
  /**
   * This prop is used to display the component in a disabled state / read-only mode.
   */
  readOnly: boolean;
  /**
   * @standalone The selected config
   */
  selectedConfiguration?: Configuration;
}

NylasSelectedEventCard

/**
 * The `nylas-selected-event-card` component is a UI component that displays the selected event card.
 */
interface NylasSelectedEventCard {
  /**
   * The selected date.
   */
  selectedDate?: Date;
  /**
   * The selected language.
   */
  selectedLanguage?: string;
  /**
   * The selected time.
   */
  selectedTimeslot?: Timeslot;
  /**
   * The selected timezone.
   */
  selectedTimezone: string;
}

NylasTimeWindowPicker

/**
 * The `nylas-time-window-picker` component is a time picker that can be used to select a time.
 */
interface NylasTimeWindowPicker {
  /**
   * This sets the error state of the input.
   */
  hasError: boolean;
  /**
   * This is the start time value if one is set by the parent component. It is useful if this component is used to render an end time which should not be before the start time, defining the earliest selectable time.
   */
  minimumStartTime: string | null;
  /**
   * The name of the input.
   */
  name: string;
  /**
   * The placeholder text for the input.
   */
  placeholder: string;
  /**
   * The time to display in the input. This is passed by the parent component and can be updated using the setTime prop function provided by the parent component.
   */
  time: string;
}

NylasTimeslotInterval

/**
 * The `nylas-timeslot-interval` component allows users to set their time slot interval preferences.
 * This component provides an option to set both `interval_minutes` and `round_to` in the configuration.
 */
interface NylasTimeslotInterval {
  /**
   * @standalone The event duration in minutes.
   */
  eventDurationMinutes?: number;
  /**
   * @standalone The name of the calendar picker.
   */
  name: string;
  /**
   * @standalone The selected config
   */
  selectedConfiguration?: Configuration;
}

NylasTimeslotPicker

/**
 * The `nylas-timeslot-picker` component is a UI component that allows users to select a timeslot from a list of available timeslots.
 */
interface NylasTimeslotPicker {
  /**
   * @standalone The available timeslots.
   */
  availability?: AvailabilityTimeslot[];
  /**
   * @standalone The loading state prop. Used to display loading state when fetching availability.
   */
  isLoading?: boolean;
  /**
   * The selected date.
   */
  selectedDate?: Date;
  /**
   * The selected language.
   */
  selectedLanguage?: string;
  /**
   * The selected timeslot.
   */
  selectedTimeslot?: Timeslot;
  /**
   * The selected timezone.
   */
  selectedTimezone: string;
}

PaintbrushFillIcon

interface PaintbrushFillIcon {
  height: string;
  width: string;
}

PaintbrushIcon

interface PaintbrushIcon {
  height: string;
  width: string;
}

PeopleIcon

interface PeopleIcon {
  height: string;
  width: string;
}

PersonClipboardIcon

interface PersonClipboardIcon {
  height: string;
  width: string;
}

PersonIcon

interface PersonIcon {
  height: string;
  width: string;
}

PlayIcon

interface PlayIcon {
  height: string;
  width: string;
}

PlusIcon

interface PlusIcon {
  height: string;
  width: string;
}

RadioButtonGroup

/**
 * The `radio-button-group` component is a UI component that allows users to select a single option from a list of options.
 * This component is used in the scheduling form to input radio button type inputs.
 */
interface RadioButtonGroup {
  /**
   * The default selected value of the radio group.
   */
  defaultSelectedValue: string;
  /**
   * The label of the radio group. This is displayed above the radio group. Label is optional. You can also use the slot 'label' to add a label.
   */
  label?: string;
  /**
   * The name of the radio group. This is used to identify the radio group when submitting a form.
   */
  name: string;
  /**
   * The list of options in the radio group. Each option has a label and a value and an optional description.
   */
  options: { label: string; value: string; description?: string }[];
  /**
   * Whether the radio group is required. If true, the radio group must have a value when submitting a form. Default is false. If the radio group is required and the value is empty, an error message is displayed.
   */
  required: boolean;
}

RefreshIcon

interface RefreshIcon {
  height: string;
  width: string;
}

ReplyAllIcon

interface ReplyAllIcon {
  height: string;
  width: string;
}

ReplyIcon

interface ReplyIcon {
  height: string;
  width: string;
}

SearchIcon

interface SearchIcon {
  height: string;
  width: string;
}

SelectDropdown

/**
 * The `select-dropdown` component is a dropdown that allows users to select an option from a list of options.
 * This component is used in the scheduling form to input dropdown type inputs.
 */
interface SelectDropdown {
  /**
   * The default selected option
   */
  defaultSelectedOption: DropdownOption | null;
  /**
   * Overrides the select dropdown to be used as a button with dropdownButtonText representing actions &  dropdownText name on the dropdown intead of selected value
   */
  dropdownButtonText?: string;
  /**
   * The label for the dropdown, skipped if no label is provided
   */
  label?: string;
  /**
   * The name of the dropdown
   */
  name: string;
  /**
   * The options to display in the dropdown
   */
  options: DropdownOption[];
  /**
   * Show pluralized label for the selected option. This is s tring that is appended to the selected option label as a suffix.
   */
  pluralizedLabel: string;
  /**
   * If true, the dropdown is required for form submission
   */
  required: boolean;
  /**
   * Should show chevron on button
   */
  withChevron: boolean;
  /**
   * Should show search input
   */
  withSearch: boolean;
}

SentIcon

interface SentIcon {
  height: string;
  width: string;
}

SpamIcon

interface SpamIcon {
  height: string;
  width: string;
}

StarIcon

interface StarIcon {
  height: string;
  width: string;
}

StopIcon

interface StopIcon {
  height: string;
  width: string;
}

TextareaComponent

/**
 * `textarea-component` allows users to enter multiline text.
 * It is ideal for larger inputs like comments or messages in a form.
 * This component is used in the scheduling form to input multiline text.
 */
interface TextareaComponent {
  /**
   * Automatically focus the textarea when the component loads.
   */
  autoFocus: boolean;
  /**
   * The default value of the textarea, appearing when the component first renders.
   */
  defaultValue?: string;
  /**
   * The label for the textarea, displayed above it.
   */
  label: string;
  /**
   * The maximum number of characters allowed in the textarea.
   */
  maxLength: number;
  /**
   * The name of the textarea, important for form submissions.
   */
  name: string;
  /**
   * Placeholder text shown in the textarea when it is empty.
   */
  placeholder: string;
  /**
   * If true, the textarea cannot be edited by the user.
   */
  readOnly: boolean;
  /**
   * Specifies if the textarea is required for form submission. If true, an error message shows if left empty.
   */
  required: boolean;
  /**
   * The content of the label's tooltip
   */
  tooltip: string;
  /**
   * The type
   */
  type: string;
}

TimePeriodSelector

interface TimePeriodSelector {
  /**
   * The default selected number.
   */
  defaultSelectedNumber: number;
  /**
   * The default selected time period.
   */
  defaultSelectedPeriod: string;
  timePeriods: string[];
}

ToggleSwitch

/**
 * The `toggle-switch` component is a UI component that allows users to toggle a switch.
 * This component is used in the scheduling form to input toggle switch type inputs.
 * Use it as a replacement for checkboxes when you want to present a switch in the UI.
 */
interface ToggleSwitch {
  /**
   * The default value of the toggle switch. This is the value that is displayed when the toggle switch is rendered.
   */
  checked: boolean;
  /**
   * The label of the toggle switch. This is displayed next to the toggle switch.
   */
  label: string;
  /**
   * The name of the toggle switch. This is used to identify the toggle switch when submitting a form.
   */
  name: string;
}

TooltipComponent

/**
 * The `tooltip-component` component is a UI component that displays a tooltip.
 */
interface TooltipComponent {
  /**
   * The position of the tooltip.
   */
  position: 'top' | 'bottom' | 'left' | 'right';
}

TranslateIcon

interface TranslateIcon {
  height: string;
  width: string;
}

TrashFillIcon

interface TrashFillIcon {
  height: string;
  width: string;
}

TrashIcon

interface TrashIcon {
  height: string;
  width: string;
}

UnderlineIcon

interface UnderlineIcon {
  height: string;
  width: string;
}

WarningIcon

interface WarningIcon {
  height: string;
  width: string;
}

ZoomIcon

interface ZoomIcon {
  height: string;
  width: string;
}

CheckboxComponentCustomEvent

export interface CheckboxComponentCustomEvent<T> extends CustomEvent<T> {
  detail: T;
  target: HTMLCheckboxComponentElement;
}

InputColorPickerCustomEvent

export interface InputColorPickerCustomEvent<T> extends CustomEvent<T> {
  detail: T;
  target: HTMLInputColorPickerElement;
}

InputComponentCustomEvent

export interface InputComponentCustomEvent<T> extends CustomEvent<T> {
  detail: T;
  target: HTMLInputComponentElement;
}

InputDropdownCustomEvent

export interface InputDropdownCustomEvent<T> extends CustomEvent<T> {
  detail: T;
  target: HTMLInputDropdownElement;
}

InputImageUrlCustomEvent

export interface InputImageUrlCustomEvent<T> extends CustomEvent<T> {
  detail: T;
  target: HTMLInputImageUrlElement;
}

MultiSelectDropdownCustomEvent

export interface MultiSelectDropdownCustomEvent<T> extends CustomEvent<T> {
  detail: T;
  target: HTMLMultiSelectDropdownElement;
}

NylasAdditionalParticipantsCustomEvent

export interface NylasAdditionalParticipantsCustomEvent<T> extends CustomEvent<T> {
  detail: T;
  target: HTMLNylasAdditionalParticipantsElement;
}

NylasAvailabilityPickerCustomEvent

export interface NylasAvailabilityPickerCustomEvent<T> extends CustomEvent<T> {
  detail: T;
  target: HTMLNylasAvailabilityPickerElement;
}

NylasBookedEventCardCustomEvent

export interface NylasBookedEventCardCustomEvent<T> extends CustomEvent<T> {
  detail: T;
  target: HTMLNylasBookedEventCardElement;
}

NylasBookingCalendarPickerCustomEvent

export interface NylasBookingCalendarPickerCustomEvent<T> extends CustomEvent<T> {
  detail: T;
  target: HTMLNylasBookingCalendarPickerElement;
}

NylasBookingConfirmationRedirectCustomEvent

export interface NylasBookingConfirmationRedirectCustomEvent<T> extends CustomEvent<T> {
  detail: T;
  target: HTMLNylasBookingConfirmationRedirectElement;
}

NylasBookingConfirmationTypeCustomEvent

export interface NylasBookingConfirmationTypeCustomEvent<T> extends CustomEvent<T> {
  detail: T;
  target: HTMLNylasBookingConfirmationTypeElement;
}

NylasBookingFormCustomEvent

export interface NylasBookingFormCustomEvent<T> extends CustomEvent<T> {
  detail: T;
  target: HTMLNylasBookingFormElement;
}

NylasBookingFormConfigCustomEvent

export interface NylasBookingFormConfigCustomEvent<T> extends CustomEvent<T> {
  detail: T;
  target: HTMLNylasBookingFormConfigElement;
}

NylasBufferTimeCustomEvent

export interface NylasBufferTimeCustomEvent<T> extends CustomEvent<T> {
  detail: T;
  target: HTMLNylasBufferTimeElement;
}

NylasCalendarPickerCustomEvent

export interface NylasCalendarPickerCustomEvent<T> extends CustomEvent<T> {
  detail: T;
  target: HTMLNylasCalendarPickerElement;
}

NylasCancelBookingFormCustomEvent

export interface NylasCancelBookingFormCustomEvent<T> extends CustomEvent<T> {
  detail: T;
  target: HTMLNylasCancelBookingFormElement;
}

NylasCancellationPolicyCustomEvent

export interface NylasCancellationPolicyCustomEvent<T> extends CustomEvent<T> {
  detail: T;
  target: HTMLNylasCancellationPolicyElement;
}

NylasCancelledEventCardCustomEvent

export interface NylasCancelledEventCardCustomEvent<T> extends CustomEvent<T> {
  detail: T;
  target: HTMLNylasCancelledEventCardElement;
}

NylasConfirmationEmailCustomEvent

export interface NylasConfirmationEmailCustomEvent<T> extends CustomEvent<T> {
  detail: T;
  target: HTMLNylasConfirmationEmailElement;
}

NylasConfirmedEventCardCustomEvent

export interface NylasConfirmedEventCardCustomEvent<T> extends CustomEvent<T> {
  detail: T;
  target: HTMLNylasConfirmedEventCardElement;
}

NylasConnectedCalendarsCustomEvent

export interface NylasConnectedCalendarsCustomEvent<T> extends CustomEvent<T> {
  detail: T;
  target: HTMLNylasConnectedCalendarsElement;
}

NylasCustomEventSlugCustomEvent

export interface NylasCustomEventSlugCustomEvent<T> extends CustomEvent<T> {
  detail: T;
  target: HTMLNylasCustomEventSlugElement;
}

NylasCustomizeBookingSettingsCustomEvent

export interface NylasCustomizeBookingSettingsCustomEvent<T> extends CustomEvent<T> {
  detail: T;
  target: HTMLNylasCustomizeBookingSettingsElement;
}

NylasDatePickerCustomEvent

export interface NylasDatePickerCustomEvent<T> extends CustomEvent<T> {
  detail: T;
  target: HTMLNylasDatePickerElement;
}

NylasEditorTabsCustomEvent

export interface NylasEditorTabsCustomEvent<T> extends CustomEvent<T> {
  detail: T;
  target: HTMLNylasEditorTabsElement;
}

NylasEventDescriptionCustomEvent

export interface NylasEventDescriptionCustomEvent<T> extends CustomEvent<T> {
  detail: T;
  target: HTMLNylasEventDescriptionElement;
}

NylasEventDurationCustomEvent

export interface NylasEventDurationCustomEvent<T> extends CustomEvent<T> {
  detail: T;
  target: HTMLNylasEventDurationElement;
}

NylasEventLocationCustomEvent

export interface NylasEventLocationCustomEvent<T> extends CustomEvent<T> {
  detail: T;
  target: HTMLNylasEventLocationElement;
}

NylasEventTitleCustomEvent

export interface NylasEventTitleCustomEvent<T> extends CustomEvent<T> {
  detail: T;
  target: HTMLNylasEventTitleElement;
}

NylasFeedbackFormCustomEvent

export interface NylasFeedbackFormCustomEvent<T> extends CustomEvent<T> {
  detail: T;
  target: HTMLNylasFeedbackFormElement;
}

NylasLimitFutureBookingsCustomEvent

export interface NylasLimitFutureBookingsCustomEvent<T> extends CustomEvent<T> {
  detail: T;
  target: HTMLNylasLimitFutureBookingsElement;
}

NylasListConfigurationsCustomEvent

export interface NylasListConfigurationsCustomEvent<T> extends CustomEvent<T> {
  detail: T;
  target: HTMLNylasListConfigurationsElement;
}

NylasLocaleSwitchCustomEvent

export interface NylasLocaleSwitchCustomEvent<T> extends CustomEvent<T> {
  detail: T;
  target: HTMLNylasLocaleSwitchElement;
}

NylasLoginCustomEvent

export interface NylasLoginCustomEvent<T> extends CustomEvent<T> {
  detail: T;
  target: HTMLNylasLoginElement;
}

NylasMinBookingNoticeCustomEvent

export interface NylasMinBookingNoticeCustomEvent<T> extends CustomEvent<T> {
  detail: T;
  target: HTMLNylasMinBookingNoticeElement;
}

NylasMinCancellationNoticeCustomEvent

export interface NylasMinCancellationNoticeCustomEvent<T> extends CustomEvent<T> {
  detail: T;
  target: HTMLNylasMinCancellationNoticeElement;
}

NylasOrganizerConfirmationCardCustomEvent

export interface NylasOrganizerConfirmationCardCustomEvent<T> extends CustomEvent<T> {
  detail: T;
  target: HTMLNylasOrganizerConfirmationCardElement;
}

NylasPageNameCustomEvent

export interface NylasPageNameCustomEvent<T> extends CustomEvent<T> {
  detail: T;
  target: HTMLNylasPageNameElement;
}

NylasPageStylingCustomEvent

export interface NylasPageStylingCustomEvent<T> extends CustomEvent<T> {
  detail: T;
  target: HTMLNylasPageStylingElement;
}

NylasParticipantBookingCalendarsCustomEvent

export interface NylasParticipantBookingCalendarsCustomEvent<T> extends CustomEvent<T> {
  detail: T;
  target: HTMLNylasParticipantBookingCalendarsElement;
}

NylasParticipantsCustomAvailabilityCustomEvent

export interface NylasParticipantsCustomAvailabilityCustomEvent<T> extends CustomEvent<T> {
  detail: T;
  target: HTMLNylasParticipantsCustomAvailabilityElement;
}

NylasProviderCustomEvent

export interface NylasProviderCustomEvent<T> extends CustomEvent<T> {
  detail: T;
  target: HTMLNylasProviderElement;
}

NylasReminderEmailsCustomEvent

export interface NylasReminderEmailsCustomEvent<T> extends CustomEvent<T> {
  detail: T;
  target: HTMLNylasReminderEmailsElement;
}

NylasReminderTimeCustomEvent

export interface NylasReminderTimeCustomEvent<T> extends CustomEvent<T> {
  detail: T;
  target: HTMLNylasReminderTimeElement;
}

NylasSchedulerEditorCustomEvent

export interface NylasSchedulerEditorCustomEvent<T> extends CustomEvent<T> {
  detail: T;
  target: HTMLNylasSchedulerEditorElement;
}

NylasSchedulingCustomEvent

export interface NylasSchedulingCustomEvent<T> extends CustomEvent<T> {
  detail: T;
  target: HTMLNylasSchedulingElement;
}

NylasSchedulingMethodCustomEvent

export interface NylasSchedulingMethodCustomEvent<T> extends CustomEvent<T> {
  detail: T;
  target: HTMLNylasSchedulingMethodElement;
}

NylasTimeWindowPickerCustomEvent

export interface NylasTimeWindowPickerCustomEvent<T> extends CustomEvent<T> {
  detail: T;
  target: HTMLNylasTimeWindowPickerElement;
}

NylasTimeslotIntervalCustomEvent

export interface NylasTimeslotIntervalCustomEvent<T> extends CustomEvent<T> {
  detail: T;
  target: HTMLNylasTimeslotIntervalElement;
}

NylasTimeslotPickerCustomEvent

export interface NylasTimeslotPickerCustomEvent<T> extends CustomEvent<T> {
  detail: T;
  target: HTMLNylasTimeslotPickerElement;
}

RadioButtonGroupCustomEvent

export interface RadioButtonGroupCustomEvent<T> extends CustomEvent<T> {
  detail: T;
  target: HTMLRadioButtonGroupElement;
}

SelectDropdownCustomEvent

export interface SelectDropdownCustomEvent<T> extends CustomEvent<T> {
  detail: T;
  target: HTMLSelectDropdownElement;
}

TextareaComponentCustomEvent

export interface TextareaComponentCustomEvent<T> extends CustomEvent<T> {
  detail: T;
  target: HTMLTextareaComponentElement;
}

TimePeriodSelectorCustomEvent

export interface TimePeriodSelectorCustomEvent<T> extends CustomEvent<T> {
  detail: T;
  target: HTMLTimePeriodSelectorElement;
}

ToggleSwitchCustomEvent

export interface ToggleSwitchCustomEvent<T> extends CustomEvent<T> {
  detail: T;
  target: HTMLToggleSwitchElement;
}

HTMLAddCircleIconElement

interface HTMLAddCircleIconElement extends Components.AddCircleIcon, HTMLStencilElement {}

HTMLArchiveIconElement

interface HTMLArchiveIconElement extends Components.ArchiveIcon, HTMLStencilElement {}

HTMLArrowIconElement

interface HTMLArrowIconElement extends Components.ArrowIcon, HTMLStencilElement {}

HTMLBoldIconElement

interface HTMLBoldIconElement extends Components.BoldIcon, HTMLStencilElement {}

HTMLButtonComponentElement

interface HTMLButtonComponentElement extends Components.ButtonComponent, HTMLStencilElement {}

HTMLCalendarAgendaFillIconElement

interface HTMLCalendarAgendaFillIconElement extends Components.CalendarAgendaFillIcon, HTMLStencilElement {}

HTMLCalendarAgendaIconElement

interface HTMLCalendarAgendaIconElement extends Components.CalendarAgendaIcon, HTMLStencilElement {}

HTMLCalendarCancelIconElement

interface HTMLCalendarCancelIconElement extends Components.CalendarCancelIcon, HTMLStencilElement {}

HTMLCalendarCheckIconElement

interface HTMLCalendarCheckIconElement extends Components.CalendarCheckIcon, HTMLStencilElement {}

HTMLCalendarIconElement

interface HTMLCalendarIconElement extends Components.CalendarIcon, HTMLStencilElement {}

HTMLCalendarInfoIconElement

interface HTMLCalendarInfoIconElement extends Components.CalendarInfoIcon, HTMLStencilElement {}

HTMLCalendarPatternsIconElement

interface HTMLCalendarPatternsIconElement extends Components.CalendarPatternsIcon, HTMLStencilElement {}

HTMLCheckboxComponentElementEventMap

interface HTMLCheckboxComponentElementEventMap {
  nylasFormCheckboxToggled: {
    checked: boolean;
    name: string;
    label: string;
  };
}

HTMLCheckboxComponentElement

/**
 * The `checkbox-component` component is a UI component that allows users to select a checkbox.
 * This component is used in the scheduling form to input checkbox type inputs.
 */
interface HTMLCheckboxComponentElement extends Components.CheckboxComponent, HTMLStencilElement {
  addEventListener<K extends keyof HTMLCheckboxComponentElementEventMap>(
    type: K,
    listener: (this: HTMLCheckboxComponentElement, ev: CheckboxComponentCustomEvent<HTMLCheckboxComponentElementEventMap[K]>) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
  addEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
  removeEventListener<K extends keyof HTMLCheckboxComponentElementEventMap>(
    type: K,
    listener: (this: HTMLCheckboxComponentElement, ev: CheckboxComponentCustomEvent<HTMLCheckboxComponentElementEventMap[K]>) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
  removeEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
}

HTMLCheckmarkCircleIconElement

interface HTMLCheckmarkCircleIconElement extends Components.CheckmarkCircleIcon, HTMLStencilElement {}

HTMLCheckmarkIconElement

interface HTMLCheckmarkIconElement extends Components.CheckmarkIcon, HTMLStencilElement {}

HTMLChevronIconElement

interface HTMLChevronIconElement extends Components.ChevronIcon, HTMLStencilElement {}

HTMLClockIconElement

interface HTMLClockIconElement extends Components.ClockIcon, HTMLStencilElement {}

HTMLCloseIconElement

interface HTMLCloseIconElement extends Components.CloseIcon, HTMLStencilElement {}

HTMLCopyIconElement

interface HTMLCopyIconElement extends Components.CopyIcon, HTMLStencilElement {}

HTMLDeleteIconElement

interface HTMLDeleteIconElement extends Components.DeleteIcon, HTMLStencilElement {}

HTMLDocumentRefreshIconElement

interface HTMLDocumentRefreshIconElement extends Components.DocumentRefreshIcon, HTMLStencilElement {}

HTMLDragableIconElement

interface HTMLDragableIconElement extends Components.DragableIcon, HTMLStencilElement {}

HTMLEditIconElement

interface HTMLEditIconElement extends Components.EditIcon, HTMLStencilElement {}

HTMLEnvelopeFillIconElement

interface HTMLEnvelopeFillIconElement extends Components.EnvelopeFillIcon, HTMLStencilElement {}

HTMLEnvelopeIconElement

interface HTMLEnvelopeIconElement extends Components.EnvelopeIcon, HTMLStencilElement {}

HTMLEyeIconElement

interface HTMLEyeIconElement extends Components.EyeIcon, HTMLStencilElement {}

HTMLFeedbackIconElement

interface HTMLFeedbackIconElement extends Components.FeedbackIcon, HTMLStencilElement {}

HTMLFlowIconElement

interface HTMLFlowIconElement extends Components.FlowIcon, HTMLStencilElement {}

HTMLFolderIconElement

interface HTMLFolderIconElement extends Components.FolderIcon, HTMLStencilElement {}

HTMLForwardIconElement

interface HTMLForwardIconElement extends Components.ForwardIcon, HTMLStencilElement {}

HTMLGlobeIconElement

interface HTMLGlobeIconElement extends Components.GlobeIcon, HTMLStencilElement {}

HTMLGoogleLogoIconElement

interface HTMLGoogleLogoIconElement extends Components.GoogleLogoIcon, HTMLStencilElement {}

HTMLGoogleMeetIconElement

interface HTMLGoogleMeetIconElement extends Components.GoogleMeetIcon, HTMLStencilElement {}

HTMLInboxIconElement

interface HTMLInboxIconElement extends Components.InboxIcon, HTMLStencilElement {}

HTMLInfoIconElement

interface HTMLInfoIconElement extends Components.InfoIcon, HTMLStencilElement {}

HTMLInputColorPickerElementEventMap

interface HTMLInputColorPickerElementEventMap {
  nylasFormDropdownChanged: {
    value: string;
    name: string;
    error?: string;
    label?: string;
  };
}

HTMLInputColorPickerElement

/**
 * The `input-color-picker` component is a dropdown that allows users to select an accent color from either RGB inputs or an interactive color picker and converts them to a hex value.
 * This component is used in the scheduling form to input dropdown type inputs.
 */
interface HTMLInputColorPickerElement extends Components.InputColorPicker, HTMLStencilElement {
  addEventListener<K extends keyof HTMLInputColorPickerElementEventMap>(
    type: K,
    listener: (this: HTMLInputColorPickerElement, ev: InputColorPickerCustomEvent<HTMLInputColorPickerElementEventMap[K]>) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
  addEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
  removeEventListener<K extends keyof HTMLInputColorPickerElementEventMap>(
    type: K,
    listener: (this: HTMLInputColorPickerElement, ev: InputColorPickerCustomEvent<HTMLInputColorPickerElementEventMap[K]>) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
  removeEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
}

HTMLInputComponentElementEventMap

interface HTMLInputComponentElementEventMap {
  nylasFormInputChanged: {
    value: string;
    name: string;
    label: string;
    type: string;
    error: string;
  };
  nylasFormInputFocused: {
    value: string;
    name: string;
  };
  nylasFormInputBlurred: {
    value: string;
    name: string;
  };
}

HTMLInputComponentElement

/**
 * The `input-component` component is a UI component that allows users to input text, email, or phone number values.
 * This component is used in the scheduling form to input text, email and phone number type inputs.
 */
interface HTMLInputComponentElement extends Components.InputComponent, HTMLStencilElement {
  addEventListener<K extends keyof HTMLInputComponentElementEventMap>(
    type: K,
    listener: (this: HTMLInputComponentElement, ev: InputComponentCustomEvent<HTMLInputComponentElementEventMap[K]>) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
  addEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
  removeEventListener<K extends keyof HTMLInputComponentElementEventMap>(
    type: K,
    listener: (this: HTMLInputComponentElement, ev: InputComponentCustomEvent<HTMLInputComponentElementEventMap[K]>) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
  removeEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
}

HTMLInputDropdownElementEventMap

interface HTMLInputDropdownElementEventMap {
  inputOptionChanged: {
    value: DropdownOption['value'];
    name: string;
  };
}

HTMLInputDropdownElement

/**
 * The `input-dropdown` component is a dropdown that allows users to input an option and/or select from a list of options.
 */
interface HTMLInputDropdownElement extends Components.InputDropdown, HTMLStencilElement {
  addEventListener<K extends keyof HTMLInputDropdownElementEventMap>(
    type: K,
    listener: (this: HTMLInputDropdownElement, ev: InputDropdownCustomEvent<HTMLInputDropdownElementEventMap[K]>) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
  addEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
  removeEventListener<K extends keyof HTMLInputDropdownElementEventMap>(
    type: K,
    listener: (this: HTMLInputDropdownElement, ev: InputDropdownCustomEvent<HTMLInputDropdownElementEventMap[K]>) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
  removeEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
}

HTMLInputImageUrlElementEventMap

interface HTMLInputImageUrlElementEventMap {
  valueChanged: {
    value: string;
    name: string;
    valueChanged?: (event: CustomEvent<{ value: string; name: string }>) => void;
  };
}

HTMLInputImageUrlElement

/**
 * The `nylas-image-input` component is a UI component that allows users input an image URL and see a preview of the image.
 */
interface HTMLInputImageUrlElement extends Components.InputImageUrl, HTMLStencilElement {
  addEventListener<K extends keyof HTMLInputImageUrlElementEventMap>(
    type: K,
    listener: (this: HTMLInputImageUrlElement, ev: InputImageUrlCustomEvent<HTMLInputImageUrlElementEventMap[K]>) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
  addEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
  removeEventListener<K extends keyof HTMLInputImageUrlElementEventMap>(
    type: K,
    listener: (this: HTMLInputImageUrlElement, ev: InputImageUrlCustomEvent<HTMLInputImageUrlElementEventMap[K]>) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
  removeEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
}

HTMLItalicIconElement

interface HTMLItalicIconElement extends Components.ItalicIcon, HTMLStencilElement {}

HTMLLoadingIconElement

interface HTMLLoadingIconElement extends Components.LoadingIcon, HTMLStencilElement {}

HTMLLocationIconElement

interface HTMLLocationIconElement extends Components.LocationIcon, HTMLStencilElement {}

HTMLLocationOffIconElement

interface HTMLLocationOffIconElement extends Components.LocationOffIcon, HTMLStencilElement {}

HTMLMicrosoftLogoIconElement

interface HTMLMicrosoftLogoIconElement extends Components.MicrosoftLogoIcon, HTMLStencilElement {}

HTMLMicrosoftTeamsIconElement

interface HTMLMicrosoftTeamsIconElement extends Components.MicrosoftTeamsIcon, HTMLStencilElement {}

HTMLMultiSelectDropdownElementEventMap

interface HTMLMultiSelectDropdownElementEventMap {
  selectedOptionsChanged: {
    value: string[];
    name: string;
  };
}

HTMLMultiSelectDropdownElement

interface HTMLMultiSelectDropdownElement extends Components.MultiSelectDropdown, HTMLStencilElement {
  addEventListener<K extends keyof HTMLMultiSelectDropdownElementEventMap>(
    type: K,
    listener: (this: HTMLMultiSelectDropdownElement, ev: MultiSelectDropdownCustomEvent<HTMLMultiSelectDropdownElementEventMap[K]>) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
  addEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
  removeEventListener<K extends keyof HTMLMultiSelectDropdownElementEventMap>(
    type: K,
    listener: (this: HTMLMultiSelectDropdownElement, ev: MultiSelectDropdownCustomEvent<HTMLMultiSelectDropdownElementEventMap[K]>) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
  removeEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
}

HTMLNylasAdditionalParticipantsElementEventMap

interface HTMLNylasAdditionalParticipantsElementEventMap {
  valueChanged: {
    value: string;
    name: string;
  };
}

HTMLNylasAdditionalParticipantsElement

/**
 * The `nylas-additional-participants` component is a form input for adding additional participants to an event.
 */
interface HTMLNylasAdditionalParticipantsElement extends Components.NylasAdditionalParticipants, HTMLStencilElement {
  addEventListener<K extends keyof HTMLNylasAdditionalParticipantsElementEventMap>(
    type: K,
    listener: (this: HTMLNylasAdditionalParticipantsElement, ev: NylasAdditionalParticipantsCustomEvent<HTMLNylasAdditionalParticipantsElementEventMap[K]>) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
  addEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
  removeEventListener<K extends keyof HTMLNylasAdditionalParticipantsElementEventMap>(
    type: K,
    listener: (this: HTMLNylasAdditionalParticipantsElement, ev: NylasAdditionalParticipantsCustomEvent<HTMLNylasAdditionalParticipantsElementEventMap[K]>) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
  removeEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
}

HTMLNylasAvailabilityPickerElementEventMap

interface HTMLNylasAvailabilityPickerElementEventMap {
  valueChanged: {
    value: string;
    name: string;
  };
}

HTMLNylasAvailabilityPickerElement

/**
 * The `nylas-availability-picker` component is a form input for selecting availability (open hours).
 */
interface HTMLNylasAvailabilityPickerElement extends Components.NylasAvailabilityPicker, HTMLStencilElement {
  addEventListener<K extends keyof HTMLNylasAvailabilityPickerElementEventMap>(
    type: K,
    listener: (this: HTMLNylasAvailabilityPickerElement, ev: NylasAvailabilityPickerCustomEvent<HTMLNylasAvailabilityPickerElementEventMap[K]>) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
  addEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
  removeEventListener<K extends keyof HTMLNylasAvailabilityPickerElementEventMap>(
    type: K,
    listener: (this: HTMLNylasAvailabilityPickerElement, ev: NylasAvailabilityPickerCustomEvent<HTMLNylasAvailabilityPickerElementEventMap[K]>) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
  removeEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
}

HTMLNylasBookedEventCardElementEventMap

interface HTMLNylasBookedEventCardElementEventMap {
  cancelBookingButtonClicked: { bookingId: string };
  rescheduleButtonClicked: { bookingId: string; errorHandler?: (error: NylasSchedulerErrorResponse) => void };
  rescheduleBookedEventError: NylasSchedulerErrorResponse;
  cancelBookedEventValidationError: {
    error: {
      title: string;
      message: string;
    };
  };
}

HTMLNylasBookedEventCardElement

/**
 * The `nylas-booked-event-card` component is a UI component that displays the booked event card.
 */
interface HTMLNylasBookedEventCardElement extends Components.NylasBookedEventCard, HTMLStencilElement {
  addEventListener<K extends keyof HTMLNylasBookedEventCardElementEventMap>(
    type: K,
    listener: (this: HTMLNylasBookedEventCardElement, ev: NylasBookedEventCardCustomEvent<HTMLNylasBookedEventCardElementEventMap[K]>) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
  addEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
  removeEventListener<K extends keyof HTMLNylasBookedEventCardElementEventMap>(
    type: K,
    listener: (this: HTMLNylasBookedEventCardElement, ev: NylasBookedEventCardCustomEvent<HTMLNylasBookedEventCardElementEventMap[K]>) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
  removeEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
}

HTMLNylasBookingCalendarPickerElementEventMap

interface HTMLNylasBookingCalendarPickerElementEventMap {
  valueChanged: {
    value: string;
    name: string;
    valueChanged?: (event: CustomEvent<{ value: string; name: string }>) => void;
  };
}

HTMLNylasBookingCalendarPickerElement

/**
 * The `nylas-booking-calendar-picker` component is a UI component that displays the booking calendar picker.
 */
interface HTMLNylasBookingCalendarPickerElement extends Components.NylasBookingCalendarPicker, HTMLStencilElement {
  addEventListener<K extends keyof HTMLNylasBookingCalendarPickerElementEventMap>(
    type: K,
    listener: (this: HTMLNylasBookingCalendarPickerElement, ev: NylasBookingCalendarPickerCustomEvent<HTMLNylasBookingCalendarPickerElementEventMap[K]>) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
  addEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
  removeEventListener<K extends keyof HTMLNylasBookingCalendarPickerElementEventMap>(
    type: K,
    listener: (this: HTMLNylasBookingCalendarPickerElement, ev: NylasBookingCalendarPickerCustomEvent<HTMLNylasBookingCalendarPickerElementEventMap[K]>) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
  removeEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
}

HTMLNylasBookingConfirmationRedirectElementEventMap

interface HTMLNylasBookingConfirmationRedirectElementEventMap {
  valueChanged: {
    value: string;
    name: string;
    valueChanged?: (event: CustomEvent<{ value: string; name: string }>) => void;
  };
}

HTMLNylasBookingConfirmationRedirectElement

/**
 * The `nylas-booking-confirmation-redirect` component is a UI component that allows the user to choose a custom redirect URL after a booking is confirmed.
 */
interface HTMLNylasBookingConfirmationRedirectElement extends Components.NylasBookingConfirmationRedirect, HTMLStencilElement {
  addEventListener<K extends keyof HTMLNylasBookingConfirmationRedirectElementEventMap>(
    type: K,
    listener: (this: HTMLNylasBookingConfirmationRedirectElement, ev: NylasBookingConfirmationRedirectCustomEvent<HTMLNylasBookingConfirmationRedirectElementEventMap[K]>) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
  addEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
  removeEventListener<K extends keyof HTMLNylasBookingConfirmationRedirectElementEventMap>(
    type: K,
    listener: (this: HTMLNylasBookingConfirmationRedirectElement, ev: NylasBookingConfirmationRedirectCustomEvent<HTMLNylasBookingConfirmationRedirectElementEventMap[K]>) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
  removeEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
}

HTMLNylasBookingConfirmationTypeElementEventMap

interface HTMLNylasBookingConfirmationTypeElementEventMap {
  valueChanged: {
    value: string;
    name: string;
    valueChanged?: (event: CustomEvent<{ value: string; name: string }>) => void;
  };
}

HTMLNylasBookingConfirmationTypeElement

/**
 * The `nylas-booking-confirmation-type` component is a UI component that allows the user to choose a custom redirect URL after a booking is confirmed.
 */
interface HTMLNylasBookingConfirmationTypeElement extends Components.NylasBookingConfirmationType, HTMLStencilElement {
  addEventListener<K extends keyof HTMLNylasBookingConfirmationTypeElementEventMap>(
    type: K,
    listener: (this: HTMLNylasBookingConfirmationTypeElement, ev: NylasBookingConfirmationTypeCustomEvent<HTMLNylasBookingConfirmationTypeElementEventMap[K]>) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
  addEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
  removeEventListener<K extends keyof HTMLNylasBookingConfirmationTypeElementEventMap>(
    type: K,
    listener: (this: HTMLNylasBookingConfirmationTypeElement, ev: NylasBookingConfirmationTypeCustomEvent<HTMLNylasBookingConfirmationTypeElementEventMap[K]>) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
  removeEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
}

HTMLNylasBookingFormElementEventMap

interface HTMLNylasBookingFormElementEventMap {
  nameChanged: string;
  emailChanged: string;
  backButtonClicked: boolean;
  detailsConfirmed: NylasSchedulerBookingDataWithFlatFields;
  bookingFormError: Partial<Notification>;
  bookingFormSubmitted: void;
}

HTMLNylasBookingFormElement

/**
 * The `nylas-booking-form` component is a UI component that allows users to book an event.
 * The booking form component.
 */
interface HTMLNylasBookingFormElement extends Components.NylasBookingForm, HTMLStencilElement {
  addEventListener<K extends keyof HTMLNylasBookingFormElementEventMap>(
    type: K,
    listener: (this: HTMLNylasBookingFormElement, ev: NylasBookingFormCustomEvent<HTMLNylasBookingFormElementEventMap[K]>) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
  addEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
  removeEventListener<K extends keyof HTMLNylasBookingFormElementEventMap>(
    type: K,
    listener: (this: HTMLNylasBookingFormElement, ev: NylasBookingFormCustomEvent<HTMLNylasBookingFormElementEventMap[K]>) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
  removeEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
}

HTMLNylasBookingFormConfigElementEventMap

interface HTMLNylasBookingFormConfigElementEventMap {
  valueChanged: {
    value: Record<string, AdditionalFields>;
    name: string;
  };
}

HTMLNylasBookingFormConfigElement

/**
 * The `nylas-booking-form-config` component is a form input for adding additional fields to the booking form.
 */
interface HTMLNylasBookingFormConfigElement extends Components.NylasBookingFormConfig, HTMLStencilElement {
  addEventListener<K extends keyof HTMLNylasBookingFormConfigElementEventMap>(
    type: K,
    listener: (this: HTMLNylasBookingFormConfigElement, ev: NylasBookingFormConfigCustomEvent<HTMLNylasBookingFormConfigElementEventMap[K]>) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
  addEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
  removeEventListener<K extends keyof HTMLNylasBookingFormConfigElementEventMap>(
    type: K,
    listener: (this: HTMLNylasBookingFormConfigElement, ev: NylasBookingFormConfigCustomEvent<HTMLNylasBookingFormConfigElementEventMap[K]>) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
  removeEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
}

HTMLNylasBufferTimeElementEventMap

interface HTMLNylasBufferTimeElementEventMap {
  valueChanged: {
    value: string;
    name: string;
    valueChanged?: (event: CustomEvent<{ value: string; name: string }>) => void;
  };
}

HTMLNylasBufferTimeElement

/**
 * The `nylas-buffer-time` component is a UI component that allows users to set buffer time before and after an event.
 */
interface HTMLNylasBufferTimeElement extends Components.NylasBufferTime, HTMLStencilElement {
  addEventListener<K extends keyof HTMLNylasBufferTimeElementEventMap>(
    type: K,
    listener: (this: HTMLNylasBufferTimeElement, ev: NylasBufferTimeCustomEvent<HTMLNylasBufferTimeElementEventMap[K]>) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
  addEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
  removeEventListener<K extends keyof HTMLNylasBufferTimeElementEventMap>(
    type: K,
    listener: (this: HTMLNylasBufferTimeElement, ev: NylasBufferTimeCustomEvent<HTMLNylasBufferTimeElementEventMap[K]>) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
  removeEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
}

HTMLNylasCalendarPickerElementEventMap

interface HTMLNylasCalendarPickerElementEventMap {
  valueChanged: {
    value: string[];
    name: string;
    valueChangedHandler?: (event: CustomEvent<{ value: string[]; name: string }>) => void;
  };
}

HTMLNylasCalendarPickerElement

/**
 * The `nylas-calendar-picker` component is a form input for selecting calendars to check availability.
 */
interface HTMLNylasCalendarPickerElement extends Components.NylasCalendarPicker, HTMLStencilElement {
  addEventListener<K extends keyof HTMLNylasCalendarPickerElementEventMap>(
    type: K,
    listener: (this: HTMLNylasCalendarPickerElement, ev: NylasCalendarPickerCustomEvent<HTMLNylasCalendarPickerElementEventMap[K]>) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
  addEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
  removeEventListener<K extends keyof HTMLNylasCalendarPickerElementEventMap>(
    type: K,
    listener: (this: HTMLNylasCalendarPickerElement, ev: NylasCalendarPickerCustomEvent<HTMLNylasCalendarPickerElementEventMap[K]>) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
  removeEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
}

HTMLNylasCancelBookingFormElementEventMap

interface HTMLNylasCancelBookingFormElementEventMap {
  goBackButtonClicked: void;
  cancelBookingFormSubmitted: {
    bookingId: string;
    action: 'reject' | 'cancel';
    reason: string;
    errorHandler?: (error: NylasSchedulerErrorResponse) => void;
  };
  triggerValidation: {};
  cancelBookedEventError: NylasSchedulerErrorResponse;
  cancelBookingFormError: Partial<Notification>;
}

HTMLNylasCancelBookingFormElement

/**
 * The `nylas-cancel-booking-form` component is a UI component that allows users to cancel a booking (DELETE request).
 * This component is also used to reject a booking (PUT request) by the organizer, if the prop `rejectBookingId` is provided.
 */
interface HTMLNylasCancelBookingFormElement extends Components.NylasCancelBookingForm, HTMLStencilElement {
  addEventListener<K extends keyof HTMLNylasCancelBookingFormElementEventMap>(
    type: K,
    listener: (this: HTMLNylasCancelBookingFormElement, ev: NylasCancelBookingFormCustomEvent<HTMLNylasCancelBookingFormElementEventMap[K]>) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
  addEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
  removeEventListener<K extends keyof HTMLNylasCancelBookingFormElementEventMap>(
    type: K,
    listener: (this: HTMLNylasCancelBookingFormElement, ev: NylasCancelBookingFormCustomEvent<HTMLNylasCancelBookingFormElementEventMap[K]>) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
  removeEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
}

HTMLNylasCancellationPolicyElementEventMap

interface HTMLNylasCancellationPolicyElementEventMap {
  valueChanged: {
    value: string;
    name: string;
  };
}

HTMLNylasCancellationPolicyElement

/**
 * The `nylas-cancellation-policy` component is a form input for the cancellation policy message of an event.
 */
interface HTMLNylasCancellationPolicyElement extends Components.NylasCancellationPolicy, HTMLStencilElement {
  addEventListener<K extends keyof HTMLNylasCancellationPolicyElementEventMap>(
    type: K,
    listener: (this: HTMLNylasCancellationPolicyElement, ev: NylasCancellationPolicyCustomEvent<HTMLNylasCancellationPolicyElementEventMap[K]>) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
  addEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
  removeEventListener<K extends keyof HTMLNylasCancellationPolicyElementEventMap>(
    type: K,
    listener: (this: HTMLNylasCancellationPolicyElement, ev: NylasCancellationPolicyCustomEvent<HTMLNylasCancellationPolicyElementEventMap[K]>) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
  removeEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
}

HTMLNylasCancelledEventCardElementEventMap

interface HTMLNylasCancelledEventCardElementEventMap {
  closeCancelEventCardClicked: { errorHandler?: (error: NylasSchedulerErrorResponse1) => void };
  cancelledEventCardError: NylasSchedulerErrorResponse1;
}

HTMLNylasCancelledEventCardElement

/**
 * The `nylas-cancelled-event-card` component is a UI component that displays the cancelled event card.
 */
interface HTMLNylasCancelledEventCardElement extends Components.NylasCancelledEventCard, HTMLStencilElement {
  addEventListener<K extends keyof HTMLNylasCancelledEventCardElementEventMap>(
    type: K,
    listener: (this: HTMLNylasCancelledEventCardElement, ev: NylasCancelledEventCardCustomEvent<HTMLNylasCancelledEventCardElementEventMap[K]>) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
  addEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
  removeEventListener<K extends keyof HTMLNylasCancelledEventCardElementEventMap>(
    type: K,
    listener: (this: HTMLNylasCancelledEventCardElement, ev: NylasCancelledEventCardCustomEvent<HTMLNylasCancelledEventCardElementEventMap[K]>) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
  removeEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
}

HTMLNylasConfirmationEmailElementEventMap

interface HTMLNylasConfirmationEmailElementEventMap {
  valueChanged: {
    value: string;
    name: string;
    valueChanged?: (event: CustomEvent<{ value: string; name: string }>) => void;
  };
}

HTMLNylasConfirmationEmailElement

/**
 * The `nylas-confirmation-email` component is a UI component that allows users to set buffer time before and after an event.
 */
interface HTMLNylasConfirmationEmailElement extends Components.NylasConfirmationEmail, HTMLStencilElement {
  addEventListener<K extends keyof HTMLNylasConfirmationEmailElementEventMap>(
    type: K,
    listener: (this: HTMLNylasConfirmationEmailElement, ev: NylasConfirmationEmailCustomEvent<HTMLNylasConfirmationEmailElementEventMap[K]>) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
  addEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
  removeEventListener<K extends keyof HTMLNylasConfirmationEmailElementEventMap>(
    type: K,
    listener: (this: HTMLNylasConfirmationEmailElement, ev: NylasConfirmationEmailCustomEvent<HTMLNylasConfirmationEmailElementEventMap[K]>) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
  removeEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
}

HTMLNylasConfirmedEventCardElementEventMap

interface HTMLNylasConfirmedEventCardElementEventMap {
  closeConfirmEventCardClicked: { errorHandler?: (error: NylasSchedulerErrorResponse1) => void };
  confirmedEventCardError: NylasSchedulerErrorResponse1;
}

HTMLNylasConfirmedEventCardElement

/**
 * The `nylas-confirmed-event-card` component is a UI component that displays the confirmed event card.
 */
interface HTMLNylasConfirmedEventCardElement extends Components.NylasConfirmedEventCard, HTMLStencilElement {
  addEventListener<K extends keyof HTMLNylasConfirmedEventCardElementEventMap>(
    type: K,
    listener: (this: HTMLNylasConfirmedEventCardElement, ev: NylasConfirmedEventCardCustomEvent<HTMLNylasConfirmedEventCardElementEventMap[K]>) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
  addEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
  removeEventListener<K extends keyof HTMLNylasConfirmedEventCardElementEventMap>(
    type: K,
    listener: (this: HTMLNylasConfirmedEventCardElement, ev: NylasConfirmedEventCardCustomEvent<HTMLNylasConfirmedEventCardElementEventMap[K]>) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
  removeEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
}

HTMLNylasConnectedCalendarsElementEventMap

interface HTMLNylasConnectedCalendarsElementEventMap {
  valueChanged: {
    value: string;
    name: string;
  };
}

HTMLNylasConnectedCalendarsElement

/**
 * The `nylas-connected-calendars` component is a form input for selecting calendars to check availability for participants.
 */
interface HTMLNylasConnectedCalendarsElement extends Components.NylasConnectedCalendars, HTMLStencilElement {
  addEventListener<K extends keyof HTMLNylasConnectedCalendarsElementEventMap>(
    type: K,
    listener: (this: HTMLNylasConnectedCalendarsElement, ev: NylasConnectedCalendarsCustomEvent<HTMLNylasConnectedCalendarsElementEventMap[K]>) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
  addEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
  removeEventListener<K extends keyof HTMLNylasConnectedCalendarsElementEventMap>(
    type: K,
    listener: (this: HTMLNylasConnectedCalendarsElement, ev: NylasConnectedCalendarsCustomEvent<HTMLNylasConnectedCalendarsElementEventMap[K]>) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
  removeEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
}

HTMLNylasCustomBookingFlowElement

/**
 * The `nylas-custom-booking-flow` component is an input form for booking type (automatically or manually accept bookings) and confirmation redirect URL (default or custom).
 * This component is a container for the `nylas-booking-confirmation-type`, `nylas-booking-confirmation-redirect` components.
 * ```html
 * <nylas-custom-booking-flow>
 *   <div slot="inputs">
 *     <nylas-booking-confirmation-type></nylas-booking-confirmation-type>
 *     <nylas-booking-confirmation-redirect></nylas-booking-confirmation-redirect>
 *   </div>
 * </nylas-custom-booking-flow>
 * ```
 */
interface HTMLNylasCustomBookingFlowElement extends Components.NylasCustomBookingFlow, HTMLStencilElement {}

HTMLNylasCustomEventSlugElementEventMap

interface HTMLNylasCustomEventSlugElementEventMap {
  valueChanged: {
    value: string;
    name: string;
    valueChanged?: (event: CustomEvent<{ value: string; name: string }>) => void;
  };
}

HTMLNylasCustomEventSlugElement

/**
 * The `nylas-custom-event-slug` component is a UI component that allows users to add a custom URL slug for their event link.
 */
interface HTMLNylasCustomEventSlugElement extends Components.NylasCustomEventSlug, HTMLStencilElement {
  addEventListener<K extends keyof HTMLNylasCustomEventSlugElementEventMap>(
    type: K,
    listener: (this: HTMLNylasCustomEventSlugElement, ev: NylasCustomEventSlugCustomEvent<HTMLNylasCustomEventSlugElementEventMap[K]>) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
  addEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
  removeEventListener<K extends keyof HTMLNylasCustomEventSlugElementEventMap>(
    type: K,
    listener: (this: HTMLNylasCustomEventSlugElement, ev: NylasCustomEventSlugCustomEvent<HTMLNylasCustomEventSlugElementEventMap[K]>) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
  removeEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
}

HTMLNylasCustomizeBookingSettingsElementEventMap

interface HTMLNylasCustomizeBookingSettingsElementEventMap {
  valueChanged: {
    value: string;
    name: string;
    valueChanged?: (event: CustomEvent<{ value: string; name: string }>) => void;
  };
}

HTMLNylasCustomizeBookingSettingsElement

/**
 * The `nylas-customize-booking-settings` component is a UI component that displays the booking calendar picker.
 */
interface HTMLNylasCustomizeBookingSettingsElement extends Components.NylasCustomizeBookingSettings, HTMLStencilElement {
  addEventListener<K extends keyof HTMLNylasCustomizeBookingSettingsElementEventMap>(
    type: K,
    listener: (this: HTMLNylasCustomizeBookingSettingsElement, ev: NylasCustomizeBookingSettingsCustomEvent<HTMLNylasCustomizeBookingSettingsElementEventMap[K]>) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
  addEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
  removeEventListener<K extends keyof HTMLNylasCustomizeBookingSettingsElementEventMap>(
    type: K,
    listener: (this: HTMLNylasCustomizeBookingSettingsElement, ev: NylasCustomizeBookingSettingsCustomEvent<HTMLNylasCustomizeBookingSettingsElementEventMap[K]>) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
  removeEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
}

HTMLNylasDatePickerElementEventMap

interface HTMLNylasDatePickerElementEventMap {
  dateSelected: Date;
  monthChanged: Date;
}

HTMLNylasDatePickerElement

/**
 * The `nylas-date-picker` component is a UI component that allows users to select a date.
 */
interface HTMLNylasDatePickerElement extends Components.NylasDatePicker, HTMLStencilElement {
  addEventListener<K extends keyof HTMLNylasDatePickerElementEventMap>(
    type: K,
    listener: (this: HTMLNylasDatePickerElement, ev: NylasDatePickerCustomEvent<HTMLNylasDatePickerElementEventMap[K]>) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
  addEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
  removeEventListener<K extends keyof HTMLNylasDatePickerElementEventMap>(
    type: K,
    listener: (this: HTMLNylasDatePickerElement, ev: NylasDatePickerCustomEvent<HTMLNylasDatePickerElementEventMap[K]>) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
  removeEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
}

HTMLNylasEditorTabsElementEventMap

interface HTMLNylasEditorTabsElementEventMap {
  schedulerConfigChanged: SchedulerEventDetail;
  cancelButtonClick: void;
  formSubmitted: void;
  previewButtonClicked: HTMLNylasEditorTabsElement;
  schedulerEditorFormUpdated: { value: string; name: string };
}

HTMLNylasEditorTabsElement

/**
 * The nylas-editor-tabs component provides the user interface for managing editor tabs within the scheduler editor.
 * It is primarily used to control the edit mode of the scheduler editor, and it is rendered automatically by the
 * parent component, nylas-scheduler-editor, during editing. There is no need to interact with this component directly
 * or set any props manually, as its behavior is fully managed by the parent component.
 */
interface HTMLNylasEditorTabsElement extends Components.NylasEditorTabs, HTMLStencilElement {
  addEventListener<K extends keyof HTMLNylasEditorTabsElementEventMap>(
    type: K,
    listener: (this: HTMLNylasEditorTabsElement, ev: NylasEditorTabsCustomEvent<HTMLNylasEditorTabsElementEventMap[K]>) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
  addEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
  removeEventListener<K extends keyof HTMLNylasEditorTabsElementEventMap>(
    type: K,
    listener: (this: HTMLNylasEditorTabsElement, ev: NylasEditorTabsCustomEvent<HTMLNylasEditorTabsElementEventMap[K]>) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
  removeEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
}

HTMLNylasEventDescriptionElementEventMap

interface HTMLNylasEventDescriptionElementEventMap {
  valueChanged: {
    value: string;
    name: string;
  };
}

HTMLNylasEventDescriptionElement

/**
 * The `nylas-event-description` component is a form input for the description of an event.
 */
interface HTMLNylasEventDescriptionElement extends Components.NylasEventDescription, HTMLStencilElement {
  addEventListener<K extends keyof HTMLNylasEventDescriptionElementEventMap>(
    type: K,
    listener: (this: HTMLNylasEventDescriptionElement, ev: NylasEventDescriptionCustomEvent<HTMLNylasEventDescriptionElementEventMap[K]>) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
  addEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
  removeEventListener<K extends keyof HTMLNylasEventDescriptionElementEventMap>(
    type: K,
    listener: (this: HTMLNylasEventDescriptionElement, ev: NylasEventDescriptionCustomEvent<HTMLNylasEventDescriptionElementEventMap[K]>) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
  removeEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
}

HTMLNylasEventDurationElementEventMap

interface HTMLNylasEventDurationElementEventMap {
  valueChanged: {
    value: string;
    name: string;
  };
}

HTMLNylasEventDurationElement

/**
 * The `nylas-event-duration` component is a form input for the duration of an event.
 */
interface HTMLNylasEventDurationElement extends Components.NylasEventDuration, HTMLStencilElement {
  addEventListener<K extends keyof HTMLNylasEventDurationElementEventMap>(
    type: K,
    listener: (this: HTMLNylasEventDurationElement, ev: NylasEventDurationCustomEvent<HTMLNylasEventDurationElementEventMap[K]>) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
  addEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
  removeEventListener<K extends keyof HTMLNylasEventDurationElementEventMap>(
    type: K,
    listener: (this: HTMLNylasEventDurationElement, ev: NylasEventDurationCustomEvent<HTMLNylasEventDurationElementEventMap[K]>) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
  removeEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
}

HTMLNylasEventInfoElement

/**
 * The `nylas-event-info` component is an input form for event information such as title, description, duration, location.
 * This component is a container for the `nylas-event-title`, `nylas-event-description`, `nylas-event-duration`, and `nylas-event-location` components.
 * ```html
 * <nylas-event-info>
 *   <div slot="inputs">
 *     <nylas-event-title></nylas-event-title>
 *     <nylas-event-description></nylas-event-description>
 *     <nylas-event-duration></nylas-event-duration>
 *     <nylas-lcation-component></nylas-event-location>
 *   </div>
 * </nylas-event-info>
 * ```
 */
interface HTMLNylasEventInfoElement extends Components.NylasEventInfo, HTMLStencilElement {}

HTMLNylasEventLimitsElement

/**
 * The `nylas-event-limits` component is an input form for event limits, such as the number of available days in the future and
 * the minimum period of notice that a guest must provide to cancel a booking.
 * This component is a container for the `nylas-limit-future-bookings` and `nylas-min-cancellation-notice` components.
 * ```html
 * <nylas-event-limits>
 *   <div slot="inputs">
 *     <nylas-limit-future-bookings></nylas-limit-future-bookings>
 *     <nylas-min-cancellation-notice></nylas-min-cancellation-notice>
 *   </div>
 * </nylas-event-limits>
 * ```
 */
interface HTMLNylasEventLimitsElement extends Components.NylasEventLimits, HTMLStencilElement {}

HTMLNylasEventLocationElementEventMap

interface HTMLNylasEventLocationElementEventMap {
  valueChanged: {
    value: string;
    name: string;
  };
}

HTMLNylasEventLocationElement

/**
 * The `nylas-event-location` component is a form input for the location of an event.
 */
interface HTMLNylasEventLocationElement extends Components.NylasEventLocation, HTMLStencilElement {
  addEventListener<K extends keyof HTMLNylasEventLocationElementEventMap>(
    type: K,
    listener: (this: HTMLNylasEventLocationElement, ev: NylasEventLocationCustomEvent<HTMLNylasEventLocationElementEventMap[K]>) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
  addEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
  removeEventListener<K extends keyof HTMLNylasEventLocationElementEventMap>(
    type: K,
    listener: (this: HTMLNylasEventLocationElement, ev: NylasEventLocationCustomEvent<HTMLNylasEventLocationElementEventMap[K]>) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
  removeEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
}

HTMLNylasEventTitleElementEventMap

interface HTMLNylasEventTitleElementEventMap {
  valueChanged: {
    value: string;
    name: string;
  };
}

HTMLNylasEventTitleElement

/**
 * The `nylas-event-title` component is a form input for the title of an event.
 */
interface HTMLNylasEventTitleElement extends Components.NylasEventTitle, HTMLStencilElement {
  addEventListener<K extends keyof HTMLNylasEventTitleElementEventMap>(
    type: K,
    listener: (this: HTMLNylasEventTitleElement, ev: NylasEventTitleCustomEvent<HTMLNylasEventTitleElementEventMap[K]>) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
  addEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
  removeEventListener<K extends keyof HTMLNylasEventTitleElementEventMap>(
    type: K,
    listener: (this: HTMLNylasEventTitleElement, ev: NylasEventTitleCustomEvent<HTMLNylasEventTitleElementEventMap[K]>) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
  removeEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
}

HTMLNylasFeedbackFormElementEventMap

interface HTMLNylasFeedbackFormElementEventMap {
  feedbackModalClosed: void;
  feedbackSubmitted: { feedback: string };
  triggerValidation: void;
}

HTMLNylasFeedbackFormElement

/**
 * The `nylas-feedback-form` component is a UI component that displays the booked event card.
 */
interface HTMLNylasFeedbackFormElement extends Components.NylasFeedbackForm, HTMLStencilElement {
  addEventListener<K extends keyof HTMLNylasFeedbackFormElementEventMap>(
    type: K,
    listener: (this: HTMLNylasFeedbackFormElement, ev: NylasFeedbackFormCustomEvent<HTMLNylasFeedbackFormElementEventMap[K]>) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
  addEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
  removeEventListener<K extends keyof HTMLNylasFeedbackFormElementEventMap>(
    type: K,
    listener: (this: HTMLNylasFeedbackFormElement, ev: NylasFeedbackFormCustomEvent<HTMLNylasFeedbackFormElementEventMap[K]>) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
  removeEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
}

HTMLNylasFormCardElement

/**
 * The `nylas-form-card` component is a card that can be used to display a form. It is a simple wrapper around a card with a header and content area.
 */
interface HTMLNylasFormCardElement extends Components.NylasFormCard, HTMLStencilElement {}

HTMLNylasIfStateElement

interface HTMLNylasIfStateElement extends Components.NylasIfState, HTMLStencilElement {}

HTMLNylasLimitFutureBookingsElementEventMap

interface HTMLNylasLimitFutureBookingsElementEventMap {
  valueChanged: {
    value: string;
    name: string;
  };
}

HTMLNylasLimitFutureBookingsElement

/**
 * The `nylas-limit-future-bookings` component is a form input for the number of days in the future a guest is allowed to book an event.
 */
interface HTMLNylasLimitFutureBookingsElement extends Components.NylasLimitFutureBookings, HTMLStencilElement {
  addEventListener<K extends keyof HTMLNylasLimitFutureBookingsElementEventMap>(
    type: K,
    listener: (this: HTMLNylasLimitFutureBookingsElement, ev: NylasLimitFutureBookingsCustomEvent<HTMLNylasLimitFutureBookingsElementEventMap[K]>) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
  addEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
  removeEventListener<K extends keyof HTMLNylasLimitFutureBookingsElementEventMap>(
    type: K,
    listener: (this: HTMLNylasLimitFutureBookingsElement, ev: NylasLimitFutureBookingsCustomEvent<HTMLNylasLimitFutureBookingsElementEventMap[K]>) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
  removeEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
}

HTMLNylasListConfigurationsElementEventMap

interface HTMLNylasListConfigurationsElementEventMap {
  initListConfigurations: {
    host: HTMLNylasListConfigurationsElement;
    cursor?: string;
  };
  createButtonClick: HTMLNylasListConfigurationsElement;
  editButtonClick: {
    host: HTMLNylasListConfigurationsElement;
    configuration: Configuration;
  };
  deleteButtonClick: {
    host: HTMLNylasListConfigurationsElement;
    configuration: Configuration;
  };
}

HTMLNylasListConfigurationsElement

/**
 * The `nylas-list-configurations` component displays a list of scheduling pages.
 */
interface HTMLNylasListConfigurationsElement extends Components.NylasListConfigurations, HTMLStencilElement {
  addEventListener<K extends keyof HTMLNylasListConfigurationsElementEventMap>(
    type: K,
    listener: (this: HTMLNylasListConfigurationsElement, ev: NylasListConfigurationsCustomEvent<HTMLNylasListConfigurationsElementEventMap[K]>) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
  addEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
  removeEventListener<K extends keyof HTMLNylasListConfigurationsElementEventMap>(
    type: K,
    listener: (this: HTMLNylasListConfigurationsElement, ev: NylasListConfigurationsCustomEvent<HTMLNylasListConfigurationsElementEventMap[K]>) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
  removeEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
}

HTMLNylasLocaleSwitchElementEventMap

interface HTMLNylasLocaleSwitchElementEventMap {
  timezoneChanged: string;
  languageChanged: string;
}

HTMLNylasLocaleSwitchElement

/**
 * The `nylas-locale-switch` component is a UI component that allows users to select a timezone and language.
 */
interface HTMLNylasLocaleSwitchElement extends Components.NylasLocaleSwitch, HTMLStencilElement {
  addEventListener<K extends keyof HTMLNylasLocaleSwitchElementEventMap>(
    type: K,
    listener: (this: HTMLNylasLocaleSwitchElement, ev: NylasLocaleSwitchCustomEvent<HTMLNylasLocaleSwitchElementEventMap[K]>) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
  addEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
  removeEventListener<K extends keyof HTMLNylasLocaleSwitchElementEventMap>(
    type: K,
    listener: (this: HTMLNylasLocaleSwitchElement, ev: NylasLocaleSwitchCustomEvent<HTMLNylasLocaleSwitchElementEventMap[K]>) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
  removeEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
}

HTMLNylasLoginElementEventMap

interface HTMLNylasLoginElementEventMap {
  buttonClick: { url?: string };
}

HTMLNylasLoginElement

interface HTMLNylasLoginElement extends Components.NylasLogin, HTMLStencilElement {
  addEventListener<K extends keyof HTMLNylasLoginElementEventMap>(
    type: K,
    listener: (this: HTMLNylasLoginElement, ev: NylasLoginCustomEvent<HTMLNylasLoginElementEventMap[K]>) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
  addEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
  removeEventListener<K extends keyof HTMLNylasLoginElementEventMap>(
    type: K,
    listener: (this: HTMLNylasLoginElement, ev: NylasLoginCustomEvent<HTMLNylasLoginElementEventMap[K]>) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
  removeEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
}

HTMLNylasLogoElement

interface HTMLNylasLogoElement extends Components.NylasLogo, HTMLStencilElement {}

HTMLNylasMinBookingNoticeElementEventMap

interface HTMLNylasMinBookingNoticeElementEventMap {
  valueChanged: {
    value: string;
    name: string;
  };
}

HTMLNylasMinBookingNoticeElement

/**
 * The `nylas-min-booking-notice` component is a form input for the minimum period of notice (minutes) that a guest must
 * provide to book an event.
 */
interface HTMLNylasMinBookingNoticeElement extends Components.NylasMinBookingNotice, HTMLStencilElement {
  addEventListener<K extends keyof HTMLNylasMinBookingNoticeElementEventMap>(
    type: K,
    listener: (this: HTMLNylasMinBookingNoticeElement, ev: NylasMinBookingNoticeCustomEvent<HTMLNylasMinBookingNoticeElementEventMap[K]>) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
  addEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
  removeEventListener<K extends keyof HTMLNylasMinBookingNoticeElementEventMap>(
    type: K,
    listener: (this: HTMLNylasMinBookingNoticeElement, ev: NylasMinBookingNoticeCustomEvent<HTMLNylasMinBookingNoticeElementEventMap[K]>) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
  removeEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
}

HTMLNylasMinCancellationNoticeElementEventMap

interface HTMLNylasMinCancellationNoticeElementEventMap {
  valueChanged: {
    value: string;
    name: string;
  };
}

HTMLNylasMinCancellationNoticeElement

/**
 * The `nylas-min-cancellation-notice` component is a form input for the minimum period of notice (minutes) that a guest must
 * provide to cancel a booked event.
 */
interface HTMLNylasMinCancellationNoticeElement extends Components.NylasMinCancellationNotice, HTMLStencilElement {
  addEventListener<K extends keyof HTMLNylasMinCancellationNoticeElementEventMap>(
    type: K,
    listener: (this: HTMLNylasMinCancellationNoticeElement, ev: NylasMinCancellationNoticeCustomEvent<HTMLNylasMinCancellationNoticeElementEventMap[K]>) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
  addEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
  removeEventListener<K extends keyof HTMLNylasMinCancellationNoticeElementEventMap>(
    type: K,
    listener: (this: HTMLNylasMinCancellationNoticeElement, ev: NylasMinCancellationNoticeCustomEvent<HTMLNylasMinCancellationNoticeElementEventMap[K]>) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
  removeEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
}

HTMLNylasNotificationElement

/**
 * The `nylas-notification` component is a UI component that displays notifications.
 */
interface HTMLNylasNotificationElement extends Components.NylasNotification, HTMLStencilElement {}

HTMLNylasOrganizerConfirmationCardElementEventMap

interface HTMLNylasOrganizerConfirmationCardElementEventMap {
  rejectBookingButtonClicked: { bookingId: string; host: HTMLNylasOrganizerConfirmationCardElement };
  confirmBookingButtonClicked: {
    bookingId: string;
    host: HTMLNylasOrganizerConfirmationCardElement;
    errorHandler?: (error: NylasSchedulerErrorResponse) => void;
  };
  confirmBookingError: NylasSchedulerErrorResponse;
}

HTMLNylasOrganizerConfirmationCardElement

/**
 * The `nylas-organizer-confirmation-card` component is a UI component that displays the booked event card.
 */
interface HTMLNylasOrganizerConfirmationCardElement extends Components.NylasOrganizerConfirmationCard, HTMLStencilElement {
  addEventListener<K extends keyof HTMLNylasOrganizerConfirmationCardElementEventMap>(
    type: K,
    listener: (this: HTMLNylasOrganizerConfirmationCardElement, ev: NylasOrganizerConfirmationCardCustomEvent<HTMLNylasOrganizerConfirmationCardElementEventMap[K]>) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
  addEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
  removeEventListener<K extends keyof HTMLNylasOrganizerConfirmationCardElementEventMap>(
    type: K,
    listener: (this: HTMLNylasOrganizerConfirmationCardElement, ev: NylasOrganizerConfirmationCardCustomEvent<HTMLNylasOrganizerConfirmationCardElementEventMap[K]>) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
  removeEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
}

HTMLNylasPageNameElementEventMap

interface HTMLNylasPageNameElementEventMap {
  valueChanged: {
    value: string;
    name: string;
    valueChanged?: (event: CustomEvent<{ value: string; name: string }>) => void;
  };
}

HTMLNylasPageNameElement

/**
 * The `nylas-page-name` component is a UI component that allows users to add a custom page name which will appear in the top left corner of the date picker.
 */
interface HTMLNylasPageNameElement extends Components.NylasPageName, HTMLStencilElement {
  addEventListener<K extends keyof HTMLNylasPageNameElementEventMap>(
    type: K,
    listener: (this: HTMLNylasPageNameElement, ev: NylasPageNameCustomEvent<HTMLNylasPageNameElementEventMap[K]>) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
  addEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
  removeEventListener<K extends keyof HTMLNylasPageNameElementEventMap>(
    type: K,
    listener: (this: HTMLNylasPageNameElement, ev: NylasPageNameCustomEvent<HTMLNylasPageNameElementEventMap[K]>) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
  removeEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
}

HTMLNylasPageStylingElementEventMap

interface HTMLNylasPageStylingElementEventMap {
  valueChanged: {
    value: string;
    name: string;
    valueChanged?: (event: CustomEvent<{ value: string; name: string }>) => void;
  };
  bookingFormSubmitted: void;
}

HTMLNylasPageStylingElement

/**
 * The `nylas-page-styling` component is a UI component that allows users to customize the styling of the scheduling page.
 * To use this component, pass a slot `custom-page-style-inputs` to the `nylas-scheduler-editor` component with the input
 * fields you want to display. The component will automatically update the appearance object when the input fields are changed.
 * Ensure that the input fields have the `name` attribute set to the key in the appearance object.
 * If you want to style the Nylas hosted scheduler page, you can use this component to customize the appearance of the page.
 * The fields that can be customized in the Nylas hosted scheduler page are:
 * - Primary color: (name: color)
 * - Company logo: (name: company_logo_url)
 * - Submit button label: (name: submit_button_label)
 * - Thank you message: (name: thank_you_message)
 * This component cannot be used as an independent component. It must be used within the `nylas-scheduler-editor` component.
 */
interface HTMLNylasPageStylingElement extends Components.NylasPageStyling, HTMLStencilElement {
  addEventListener<K extends keyof HTMLNylasPageStylingElementEventMap>(
    type: K,
    listener: (this: HTMLNylasPageStylingElement, ev: NylasPageStylingCustomEvent<HTMLNylasPageStylingElementEventMap[K]>) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
  addEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
  removeEventListener<K extends keyof HTMLNylasPageStylingElementEventMap>(
    type: K,
    listener: (this: HTMLNylasPageStylingElement, ev: NylasPageStylingCustomEvent<HTMLNylasPageStylingElementEventMap[K]>) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
  removeEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
}

HTMLNylasParticipantBookingCalendarsElementEventMap

interface HTMLNylasParticipantBookingCalendarsElementEventMap {
  valueChanged: {
    value: string;
    name: string;
  };
}

HTMLNylasParticipantBookingCalendarsElement

/**
 * The `nylas-participant-booking-calendars` component is a form input for selecting calendars to check availability for participants.
 */
interface HTMLNylasParticipantBookingCalendarsElement extends Components.NylasParticipantBookingCalendars, HTMLStencilElement {
  addEventListener<K extends keyof HTMLNylasParticipantBookingCalendarsElementEventMap>(
    type: K,
    listener: (this: HTMLNylasParticipantBookingCalendarsElement, ev: NylasParticipantBookingCalendarsCustomEvent<HTMLNylasParticipantBookingCalendarsElementEventMap[K]>) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
  addEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
  removeEventListener<K extends keyof HTMLNylasParticipantBookingCalendarsElementEventMap>(
    type: K,
    listener: (this: HTMLNylasParticipantBookingCalendarsElement, ev: NylasParticipantBookingCalendarsCustomEvent<HTMLNylasParticipantBookingCalendarsElementEventMap[K]>) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
  removeEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
}

HTMLNylasParticipantsCustomAvailabilityElementEventMap

interface HTMLNylasParticipantsCustomAvailabilityElementEventMap {
  valueChanged: {
    value: string;
    name: string;
  };
}

HTMLNylasParticipantsCustomAvailabilityElement

/**
 * The `nylas-participants-custom-availability` component is a form input for setting custom availability for participants.
 */
interface HTMLNylasParticipantsCustomAvailabilityElement extends Components.NylasParticipantsCustomAvailability, HTMLStencilElement {
  addEventListener<K extends keyof HTMLNylasParticipantsCustomAvailabilityElementEventMap>(
    type: K,
    listener: (
      this: HTMLNylasParticipantsCustomAvailabilityElement,
      ev: NylasParticipantsCustomAvailabilityCustomEvent<HTMLNylasParticipantsCustomAvailabilityElementEventMap[K]>,
    ) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
  addEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
  removeEventListener<K extends keyof HTMLNylasParticipantsCustomAvailabilityElementEventMap>(
    type: K,
    listener: (
      this: HTMLNylasParticipantsCustomAvailabilityElement,
      ev: NylasParticipantsCustomAvailabilityCustomEvent<HTMLNylasParticipantsCustomAvailabilityElementEventMap[K]>,
    ) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
  removeEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
}

HTMLNylasProviderElementEventMap

interface HTMLNylasProviderElementEventMap {
  init: HTMLNylasProviderElement;
  loggedIn: HTMLNylasProviderElement;
  loggedOut: HTMLNylasProviderElement;
}

HTMLNylasProviderElement

/**
 * The Nylas Provider component.
 * This component is used to manage the Nylas Provider.
 * It is used to manage the Nylas Auth instance, the Nylas Connector instance,
 * and the Nylas Store instance.
 */
interface HTMLNylasProviderElement extends Components.NylasProvider, HTMLStencilElement {
  addEventListener<K extends keyof HTMLNylasProviderElementEventMap>(
    type: K,
    listener: (this: HTMLNylasProviderElement, ev: NylasProviderCustomEvent<HTMLNylasProviderElementEventMap[K]>) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
  addEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
  removeEventListener<K extends keyof HTMLNylasProviderElementEventMap>(
    type: K,
    listener: (this: HTMLNylasProviderElement, ev: NylasProviderCustomEvent<HTMLNylasProviderElementEventMap[K]>) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
  removeEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
}

HTMLNylasReminderEmailsElementEventMap

interface HTMLNylasReminderEmailsElementEventMap {
  valueChanged: {
    value: string;
    name: string;
    valueChanged?: (event: CustomEvent<{ value: string; name: string }>) => void;
  };
}

HTMLNylasReminderEmailsElement

/**
 * The `nylas-reminder-emails` component is a UI component that allows users to set buffer time before and after an event.
 */
interface HTMLNylasReminderEmailsElement extends Components.NylasReminderEmails, HTMLStencilElement {
  addEventListener<K extends keyof HTMLNylasReminderEmailsElementEventMap>(
    type: K,
    listener: (this: HTMLNylasReminderEmailsElement, ev: NylasReminderEmailsCustomEvent<HTMLNylasReminderEmailsElementEventMap[K]>) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
  addEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
  removeEventListener<K extends keyof HTMLNylasReminderEmailsElementEventMap>(
    type: K,
    listener: (this: HTMLNylasReminderEmailsElement, ev: NylasReminderEmailsCustomEvent<HTMLNylasReminderEmailsElementEventMap[K]>) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
  removeEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
}

HTMLNylasReminderTimeElementEventMap

interface HTMLNylasReminderTimeElementEventMap {
  valueChanged: {
    value: string;
    name: string;
  };
}

HTMLNylasReminderTimeElement

/**
 * The `nylas-reminder-time` component is a form input for the reminder time before an event.
 */
interface HTMLNylasReminderTimeElement extends Components.NylasReminderTime, HTMLStencilElement {
  addEventListener<K extends keyof HTMLNylasReminderTimeElementEventMap>(
    type: K,
    listener: (this: HTMLNylasReminderTimeElement, ev: NylasReminderTimeCustomEvent<HTMLNylasReminderTimeElementEventMap[K]>) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
  addEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
  removeEventListener<K extends keyof HTMLNylasReminderTimeElementEventMap>(
    type: K,
    listener: (this: HTMLNylasReminderTimeElement, ev: NylasReminderTimeCustomEvent<HTMLNylasReminderTimeElementEventMap[K]>) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
  removeEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
}

HTMLNylasSchedulerEditorElementEventMap

interface HTMLNylasSchedulerEditorElementEventMap {
  init: HTMLNylasSchedulerEditorElement;
  loggedIn: HTMLNylasSchedulerEditorElement;
  loggedOut: HTMLNylasSchedulerEditorElement;
  schedulerConfigCloseClicked: HTMLNylasSchedulerEditorElement;
}

HTMLNylasSchedulerEditorElement

/**
 * The `nylas-scheduler-editor` component is a form that allows users to configure the settings for the Nylas Scheduler.
 */
interface HTMLNylasSchedulerEditorElement extends Components.NylasSchedulerEditor, HTMLStencilElement {
  addEventListener<K extends keyof HTMLNylasSchedulerEditorElementEventMap>(
    type: K,
    listener: (this: HTMLNylasSchedulerEditorElement, ev: NylasSchedulerEditorCustomEvent<HTMLNylasSchedulerEditorElementEventMap[K]>) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
  addEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
  removeEventListener<K extends keyof HTMLNylasSchedulerEditorElementEventMap>(
    type: K,
    listener: (this: HTMLNylasSchedulerEditorElement, ev: NylasSchedulerEditorCustomEvent<HTMLNylasSchedulerEditorElementEventMap[K]>) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
  removeEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
}

HTMLNylasSchedulingElementEventMap

interface HTMLNylasSchedulingElementEventMap {
  init: HTMLNylasSchedulingElement;
  schedulerWillLoad: HTMLNylasSchedulingElement;
  schedulerDidLoad: HTMLNylasSchedulingElement;
  nylasSchedulerError: { notification: Notification; host: HTMLElement };
  configSettingsLoaded: { settings: NylasSchedulerResponse<UISettingsResponse> };
  bookingRefExtracted: { configurationId: string; bookingId: string; salt?: string };
  bookedEventInfo: NylasSchedulerResponse<NylasEvent>;
}

HTMLNylasSchedulingElement

/**
 * The `nylas-scheduling` component is used to display the Nylas Scheduling UI.
 */
interface HTMLNylasSchedulingElement extends Components.NylasScheduling, HTMLStencilElement {
  addEventListener<K extends keyof HTMLNylasSchedulingElementEventMap>(
    type: K,
    listener: (this: HTMLNylasSchedulingElement, ev: NylasSchedulingCustomEvent<HTMLNylasSchedulingElementEventMap[K]>) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
  addEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
  removeEventListener<K extends keyof HTMLNylasSchedulingElementEventMap>(
    type: K,
    listener: (this: HTMLNylasSchedulingElement, ev: NylasSchedulingCustomEvent<HTMLNylasSchedulingElementEventMap[K]>) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
  removeEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
}

HTMLNylasSchedulingMethodElementEventMap

interface HTMLNylasSchedulingMethodElementEventMap {
  valueChanged: {
    value: string;
    name: string;
    valueChanged?: (event: CustomEvent<{ value: string; name: string }>) => void;
  };
}

HTMLNylasSchedulingMethodElement

/**
 * The `nylas-scheduling-method` component is a UI component that displays the booking calendar picker.
 */
interface HTMLNylasSchedulingMethodElement extends Components.NylasSchedulingMethod, HTMLStencilElement {
  addEventListener<K extends keyof HTMLNylasSchedulingMethodElementEventMap>(
    type: K,
    listener: (this: HTMLNylasSchedulingMethodElement, ev: NylasSchedulingMethodCustomEvent<HTMLNylasSchedulingMethodElementEventMap[K]>) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
  addEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
  removeEventListener<K extends keyof HTMLNylasSchedulingMethodElementEventMap>(
    type: K,
    listener: (this: HTMLNylasSchedulingMethodElement, ev: NylasSchedulingMethodCustomEvent<HTMLNylasSchedulingMethodElementEventMap[K]>) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
  removeEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
}

HTMLNylasSelectedEventCardElement

/**
 * The `nylas-selected-event-card` component is a UI component that displays the selected event card.
 */
interface HTMLNylasSelectedEventCardElement extends Components.NylasSelectedEventCard, HTMLStencilElement {}

HTMLNylasTimeWindowPickerElementEventMap

interface HTMLNylasTimeWindowPickerElementEventMap {
  timeChange: {
    key: string;
    value: string;
  };
  formError: {
    key: string;
    message: string;
  };
}

HTMLNylasTimeWindowPickerElement

/**
 * The `nylas-time-window-picker` component is a time picker that can be used to select a time.
 */
interface HTMLNylasTimeWindowPickerElement extends Components.NylasTimeWindowPicker, HTMLStencilElement {
  addEventListener<K extends keyof HTMLNylasTimeWindowPickerElementEventMap>(
    type: K,
    listener: (this: HTMLNylasTimeWindowPickerElement, ev: NylasTimeWindowPickerCustomEvent<HTMLNylasTimeWindowPickerElementEventMap[K]>) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
  addEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
  removeEventListener<K extends keyof HTMLNylasTimeWindowPickerElementEventMap>(
    type: K,
    listener: (this: HTMLNylasTimeWindowPickerElement, ev: NylasTimeWindowPickerCustomEvent<HTMLNylasTimeWindowPickerElementEventMap[K]>) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
  removeEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
}

HTMLNylasTimeslotIntervalElementEventMap

interface HTMLNylasTimeslotIntervalElementEventMap {
  valueChanged: {
    value: string;
    name: string;
  };
}

HTMLNylasTimeslotIntervalElement

/**
 * The `nylas-timeslot-interval` component allows users to set their time slot interval preferences.
 * This component provides an option to set both `interval_minutes` and `round_to` in the configuration.
 */
interface HTMLNylasTimeslotIntervalElement extends Components.NylasTimeslotInterval, HTMLStencilElement {
  addEventListener<K extends keyof HTMLNylasTimeslotIntervalElementEventMap>(
    type: K,
    listener: (this: HTMLNylasTimeslotIntervalElement, ev: NylasTimeslotIntervalCustomEvent<HTMLNylasTimeslotIntervalElementEventMap[K]>) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
  addEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
  removeEventListener<K extends keyof HTMLNylasTimeslotIntervalElementEventMap>(
    type: K,
    listener: (this: HTMLNylasTimeslotIntervalElement, ev: NylasTimeslotIntervalCustomEvent<HTMLNylasTimeslotIntervalElementEventMap[K]>) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
  removeEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
}

HTMLNylasTimeslotPickerElementEventMap

interface HTMLNylasTimeslotPickerElementEventMap {
  timeslotSelected: Timeslot;
  timeslotConfirmed: Timeslot;
}

HTMLNylasTimeslotPickerElement

/**
 * The `nylas-timeslot-picker` component is a UI component that allows users to select a timeslot from a list of available timeslots.
 */
interface HTMLNylasTimeslotPickerElement extends Components.NylasTimeslotPicker, HTMLStencilElement {
  addEventListener<K extends keyof HTMLNylasTimeslotPickerElementEventMap>(
    type: K,
    listener: (this: HTMLNylasTimeslotPickerElement, ev: NylasTimeslotPickerCustomEvent<HTMLNylasTimeslotPickerElementEventMap[K]>) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
  addEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
  removeEventListener<K extends keyof HTMLNylasTimeslotPickerElementEventMap>(
    type: K,
    listener: (this: HTMLNylasTimeslotPickerElement, ev: NylasTimeslotPickerCustomEvent<HTMLNylasTimeslotPickerElementEventMap[K]>) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
  removeEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
}

HTMLPaintbrushFillIconElement

interface HTMLPaintbrushFillIconElement extends Components.PaintbrushFillIcon, HTMLStencilElement {}

HTMLPaintbrushIconElement

interface HTMLPaintbrushIconElement extends Components.PaintbrushIcon, HTMLStencilElement {}

HTMLPeopleIconElement

interface HTMLPeopleIconElement extends Components.PeopleIcon, HTMLStencilElement {}

HTMLPersonClipboardIconElement

interface HTMLPersonClipboardIconElement extends Components.PersonClipboardIcon, HTMLStencilElement {}

HTMLPersonIconElement

interface HTMLPersonIconElement extends Components.PersonIcon, HTMLStencilElement {}

HTMLPlayIconElement

interface HTMLPlayIconElement extends Components.PlayIcon, HTMLStencilElement {}

HTMLPlusIconElement

interface HTMLPlusIconElement extends Components.PlusIcon, HTMLStencilElement {}

HTMLRadioButtonGroupElementEventMap

interface HTMLRadioButtonGroupElementEventMap {
  nylasFormRadioChanged: {
    value: string;
    name: string;
    label?: string;
  };
}

HTMLRadioButtonGroupElement

/**
 * The `radio-button-group` component is a UI component that allows users to select a single option from a list of options.
 * This component is used in the scheduling form to input radio button type inputs.
 */
interface HTMLRadioButtonGroupElement extends Components.RadioButtonGroup, HTMLStencilElement {
  addEventListener<K extends keyof HTMLRadioButtonGroupElementEventMap>(
    type: K,
    listener: (this: HTMLRadioButtonGroupElement, ev: RadioButtonGroupCustomEvent<HTMLRadioButtonGroupElementEventMap[K]>) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
  addEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
  removeEventListener<K extends keyof HTMLRadioButtonGroupElementEventMap>(
    type: K,
    listener: (this: HTMLRadioButtonGroupElement, ev: RadioButtonGroupCustomEvent<HTMLRadioButtonGroupElementEventMap[K]>) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
  removeEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
}

HTMLRefreshIconElement

interface HTMLRefreshIconElement extends Components.RefreshIcon, HTMLStencilElement {}

HTMLReplyAllIconElement

interface HTMLReplyAllIconElement extends Components.ReplyAllIcon, HTMLStencilElement {}

HTMLReplyIconElement

interface HTMLReplyIconElement extends Components.ReplyIcon, HTMLStencilElement {}

HTMLSearchIconElement

interface HTMLSearchIconElement extends Components.SearchIcon, HTMLStencilElement {}

HTMLSelectDropdownElementEventMap

interface HTMLSelectDropdownElementEventMap {
  nylasFormDropdownChanged: {
    value: DropdownOption['value'];
    name: string;
    error?: string;
    label?: string;
  };
  nylasFormDropdownDefaultSelected: {
    value: DropdownOption['value'];
    name: string;
    error?: string;
    label?: string;
  };
}

HTMLSelectDropdownElement

/**
 * The `select-dropdown` component is a dropdown that allows users to select an option from a list of options.
 * This component is used in the scheduling form to input dropdown type inputs.
 */
interface HTMLSelectDropdownElement extends Components.SelectDropdown, HTMLStencilElement {
  addEventListener<K extends keyof HTMLSelectDropdownElementEventMap>(
    type: K,
    listener: (this: HTMLSelectDropdownElement, ev: SelectDropdownCustomEvent<HTMLSelectDropdownElementEventMap[K]>) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
  addEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
  removeEventListener<K extends keyof HTMLSelectDropdownElementEventMap>(
    type: K,
    listener: (this: HTMLSelectDropdownElement, ev: SelectDropdownCustomEvent<HTMLSelectDropdownElementEventMap[K]>) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
  removeEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
}

HTMLSentIconElement

interface HTMLSentIconElement extends Components.SentIcon, HTMLStencilElement {}

HTMLSpamIconElement

interface HTMLSpamIconElement extends Components.SpamIcon, HTMLStencilElement {}

HTMLStarIconElement

interface HTMLStarIconElement extends Components.StarIcon, HTMLStencilElement {}

HTMLStopIconElement

interface HTMLStopIconElement extends Components.StopIcon, HTMLStencilElement {}

HTMLTextareaComponentElementEventMap

interface HTMLTextareaComponentElementEventMap {
  nylasFormInputChanged: { value: string; name: string; error: string; label: string; type: string };
}

HTMLTextareaComponentElement

/**
 * `textarea-component` allows users to enter multiline text.
 * It is ideal for larger inputs like comments or messages in a form.
 * This component is used in the scheduling form to input multiline text.
 */
interface HTMLTextareaComponentElement extends Components.TextareaComponent, HTMLStencilElement {
  addEventListener<K extends keyof HTMLTextareaComponentElementEventMap>(
    type: K,
    listener: (this: HTMLTextareaComponentElement, ev: TextareaComponentCustomEvent<HTMLTextareaComponentElementEventMap[K]>) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
  addEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
  removeEventListener<K extends keyof HTMLTextareaComponentElementEventMap>(
    type: K,
    listener: (this: HTMLTextareaComponentElement, ev: TextareaComponentCustomEvent<HTMLTextareaComponentElementEventMap[K]>) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
  removeEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
}

HTMLTimePeriodSelectorElementEventMap

interface HTMLTimePeriodSelectorElementEventMap {
  timePeriodChanged: { number: number; period: string };
}

HTMLTimePeriodSelectorElement

interface HTMLTimePeriodSelectorElement extends Components.TimePeriodSelector, HTMLStencilElement {
  addEventListener<K extends keyof HTMLTimePeriodSelectorElementEventMap>(
    type: K,
    listener: (this: HTMLTimePeriodSelectorElement, ev: TimePeriodSelectorCustomEvent<HTMLTimePeriodSelectorElementEventMap[K]>) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
  addEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
  removeEventListener<K extends keyof HTMLTimePeriodSelectorElementEventMap>(
    type: K,
    listener: (this: HTMLTimePeriodSelectorElement, ev: TimePeriodSelectorCustomEvent<HTMLTimePeriodSelectorElementEventMap[K]>) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
  removeEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
}

HTMLToggleSwitchElementEventMap

interface HTMLToggleSwitchElementEventMap {
  nylasFormSwitchToggled: {
    checked: boolean;
    name: string;
    label: string;
  };
}

HTMLToggleSwitchElement

/**
 * The `toggle-switch` component is a UI component that allows users to toggle a switch.
 * This component is used in the scheduling form to input toggle switch type inputs.
 * Use it as a replacement for checkboxes when you want to present a switch in the UI.
 */
interface HTMLToggleSwitchElement extends Components.ToggleSwitch, HTMLStencilElement {
  addEventListener<K extends keyof HTMLToggleSwitchElementEventMap>(
    type: K,
    listener: (this: HTMLToggleSwitchElement, ev: ToggleSwitchCustomEvent<HTMLToggleSwitchElementEventMap[K]>) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
  addEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | AddEventListenerOptions,
  ): void;
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
  removeEventListener<K extends keyof HTMLToggleSwitchElementEventMap>(
    type: K,
    listener: (this: HTMLToggleSwitchElement, ev: ToggleSwitchCustomEvent<HTMLToggleSwitchElementEventMap[K]>) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
  removeEventListener<K extends keyof HTMLElementEventMap>(
    type: K,
    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
    options?: boolean | EventListenerOptions,
  ): void;
  removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
}

HTMLTooltipComponentElement

/**
 * The `tooltip-component` component is a UI component that displays a tooltip.
 */
interface HTMLTooltipComponentElement extends Components.TooltipComponent, HTMLStencilElement {}

HTMLTranslateIconElement

interface HTMLTranslateIconElement extends Components.TranslateIcon, HTMLStencilElement {}

HTMLTrashFillIconElement

interface HTMLTrashFillIconElement extends Components.TrashFillIcon, HTMLStencilElement {}

HTMLTrashIconElement

interface HTMLTrashIconElement extends Components.TrashIcon, HTMLStencilElement {}

HTMLUnderlineIconElement

interface HTMLUnderlineIconElement extends Components.UnderlineIcon, HTMLStencilElement {}

HTMLWarningIconElement

interface HTMLWarningIconElement extends Components.WarningIcon, HTMLStencilElement {}

HTMLZoomIconElement

interface HTMLZoomIconElement extends Components.ZoomIcon, HTMLStencilElement {}

HTMLElementTagNameMap

interface HTMLElementTagNameMap {
  'add-circle-icon': HTMLAddCircleIconElement;
  'archive-icon': HTMLArchiveIconElement;
  'arrow-icon': HTMLArrowIconElement;
  'bold-icon': HTMLBoldIconElement;
  'button-component': HTMLButtonComponentElement;
  'calendar-agenda-fill-icon': HTMLCalendarAgendaFillIconElement;
  'calendar-agenda-icon': HTMLCalendarAgendaIconElement;
  'calendar-cancel-icon': HTMLCalendarCancelIconElement;
  'calendar-check-icon': HTMLCalendarCheckIconElement;
  'calendar-icon': HTMLCalendarIconElement;
  'calendar-info-icon': HTMLCalendarInfoIconElement;
  'calendar-patterns-icon': HTMLCalendarPatternsIconElement;
  'checkbox-component': HTMLCheckboxComponentElement;
  'checkmark-circle-icon': HTMLCheckmarkCircleIconElement;
  'checkmark-icon': HTMLCheckmarkIconElement;
  'chevron-icon': HTMLChevronIconElement;
  'clock-icon': HTMLClockIconElement;
  'close-icon': HTMLCloseIconElement;
  'copy-icon': HTMLCopyIconElement;
  'delete-icon': HTMLDeleteIconElement;
  'document-refresh-icon': HTMLDocumentRefreshIconElement;
  'dragable-icon': HTMLDragableIconElement;
  'edit-icon': HTMLEditIconElement;
  'envelope-fill-icon': HTMLEnvelopeFillIconElement;
  'envelope-icon': HTMLEnvelopeIconElement;
  'eye-icon': HTMLEyeIconElement;
  'feedback-icon': HTMLFeedbackIconElement;
  'flow-icon': HTMLFlowIconElement;
  'folder-icon': HTMLFolderIconElement;
  'forward-icon': HTMLForwardIconElement;
  'globe-icon': HTMLGlobeIconElement;
  'google-logo-icon': HTMLGoogleLogoIconElement;
  'google-meet-icon': HTMLGoogleMeetIconElement;
  'inbox-icon': HTMLInboxIconElement;
  'info-icon': HTMLInfoIconElement;
  'input-color-picker': HTMLInputColorPickerElement;
  'input-component': HTMLInputComponentElement;
  'input-dropdown': HTMLInputDropdownElement;
  'input-image-url': HTMLInputImageUrlElement;
  'italic-icon': HTMLItalicIconElement;
  'loading-icon': HTMLLoadingIconElement;
  'location-icon': HTMLLocationIconElement;
  'location-off-icon': HTMLLocationOffIconElement;
  'microsoft-logo-icon': HTMLMicrosoftLogoIconElement;
  'microsoft-teams-icon': HTMLMicrosoftTeamsIconElement;
  'multi-select-dropdown': HTMLMultiSelectDropdownElement;
  'nylas-additional-participants': HTMLNylasAdditionalParticipantsElement;
  'nylas-availability-picker': HTMLNylasAvailabilityPickerElement;
  'nylas-booked-event-card': HTMLNylasBookedEventCardElement;
  'nylas-booking-calendar-picker': HTMLNylasBookingCalendarPickerElement;
  'nylas-booking-confirmation-redirect': HTMLNylasBookingConfirmationRedirectElement;
  'nylas-booking-confirmation-type': HTMLNylasBookingConfirmationTypeElement;
  'nylas-booking-form': HTMLNylasBookingFormElement;
  'nylas-booking-form-config': HTMLNylasBookingFormConfigElement;
  'nylas-buffer-time': HTMLNylasBufferTimeElement;
  'nylas-calendar-picker': HTMLNylasCalendarPickerElement;
  'nylas-cancel-booking-form': HTMLNylasCancelBookingFormElement;
  'nylas-cancellation-policy': HTMLNylasCancellationPolicyElement;
  'nylas-cancelled-event-card': HTMLNylasCancelledEventCardElement;
  'nylas-confirmation-email': HTMLNylasConfirmationEmailElement;
  'nylas-confirmed-event-card': HTMLNylasConfirmedEventCardElement;
  'nylas-connected-calendars': HTMLNylasConnectedCalendarsElement;
  'nylas-custom-booking-flow': HTMLNylasCustomBookingFlowElement;
  'nylas-custom-event-slug': HTMLNylasCustomEventSlugElement;
  'nylas-customize-booking-settings': HTMLNylasCustomizeBookingSettingsElement;
  'nylas-date-picker': HTMLNylasDatePickerElement;
  'nylas-editor-tabs': HTMLNylasEditorTabsElement;
  'nylas-event-description': HTMLNylasEventDescriptionElement;
  'nylas-event-duration': HTMLNylasEventDurationElement;
  'nylas-event-info': HTMLNylasEventInfoElement;
  'nylas-event-limits': HTMLNylasEventLimitsElement;
  'nylas-event-location': HTMLNylasEventLocationElement;
  'nylas-event-title': HTMLNylasEventTitleElement;
  'nylas-feedback-form': HTMLNylasFeedbackFormElement;
  'nylas-form-card': HTMLNylasFormCardElement;
  'nylas-if-state': HTMLNylasIfStateElement;
  'nylas-limit-future-bookings': HTMLNylasLimitFutureBookingsElement;
  'nylas-list-configurations': HTMLNylasListConfigurationsElement;
  'nylas-locale-switch': HTMLNylasLocaleSwitchElement;
  'nylas-login': HTMLNylasLoginElement;
  'nylas-logo': HTMLNylasLogoElement;
  'nylas-min-booking-notice': HTMLNylasMinBookingNoticeElement;
  'nylas-min-cancellation-notice': HTMLNylasMinCancellationNoticeElement;
  'nylas-notification': HTMLNylasNotificationElement;
  'nylas-organizer-confirmation-card': HTMLNylasOrganizerConfirmationCardElement;
  'nylas-page-name': HTMLNylasPageNameElement;
  'nylas-page-styling': HTMLNylasPageStylingElement;
  'nylas-participant-booking-calendars': HTMLNylasParticipantBookingCalendarsElement;
  'nylas-participants-custom-availability': HTMLNylasParticipantsCustomAvailabilityElement;
  'nylas-provider': HTMLNylasProviderElement;
  'nylas-reminder-emails': HTMLNylasReminderEmailsElement;
  'nylas-reminder-time': HTMLNylasReminderTimeElement;
  'nylas-scheduler-editor': HTMLNylasSchedulerEditorElement;
  'nylas-scheduling': HTMLNylasSchedulingElement;
  'nylas-scheduling-method': HTMLNylasSchedulingMethodElement;
  'nylas-selected-event-card': HTMLNylasSelectedEventCardElement;
  'nylas-time-window-picker': HTMLNylasTimeWindowPickerElement;
  'nylas-timeslot-interval': HTMLNylasTimeslotIntervalElement;
  'nylas-timeslot-picker': HTMLNylasTimeslotPickerElement;
  'paintbrush-fill-icon': HTMLPaintbrushFillIconElement;
  'paintbrush-icon': HTMLPaintbrushIconElement;
  'people-icon': HTMLPeopleIconElement;
  'person-clipboard-icon': HTMLPersonClipboardIconElement;
  'person-icon': HTMLPersonIconElement;
  'play-icon': HTMLPlayIconElement;
  'plus-icon': HTMLPlusIconElement;
  'radio-button-group': HTMLRadioButtonGroupElement;
  'refresh-icon': HTMLRefreshIconElement;
  'reply-all-icon': HTMLReplyAllIconElement;
  'reply-icon': HTMLReplyIconElement;
  'search-icon': HTMLSearchIconElement;
  'select-dropdown': HTMLSelectDropdownElement;
  'sent-icon': HTMLSentIconElement;
  'spam-icon': HTMLSpamIconElement;
  'star-icon': HTMLStarIconElement;
  'stop-icon': HTMLStopIconElement;
  'textarea-component': HTMLTextareaComponentElement;
  'time-period-selector': HTMLTimePeriodSelectorElement;
  'toggle-switch': HTMLToggleSwitchElement;
  'tooltip-component': HTMLTooltipComponentElement;
  'translate-icon': HTMLTranslateIconElement;
  'trash-fill-icon': HTMLTrashFillIconElement;
  'trash-icon': HTMLTrashIconElement;
  'underline-icon': HTMLUnderlineIconElement;
  'warning-icon': HTMLWarningIconElement;
  'zoom-icon': HTMLZoomIconElement;
}

AddCircleIcon

interface AddCircleIcon {
  height?: string;
  width?: string;
}

ArchiveIcon

interface ArchiveIcon {
  height?: string;
  width?: string;
}

ArrowIcon

interface ArrowIcon {
  height?: string;
  width?: string;
}

BoldIcon

interface BoldIcon {
  height?: string;
  width?: string;
}

ButtonComponent

interface ButtonComponent {
  blurHandler?: (event: FocusEvent) => void;
  clickHandler?: (event: MouseEvent) => void;
  disabled?: boolean;
  focusHandler?: (event: FocusEvent) => void;
  isLoading?: boolean;
  mouseOutHandler?: (event: MouseEvent) => void;
  mouseOverHandler?: (event: MouseEvent) => void;
  tooltip?: string;
  type?: string;
  variant?: ButtonType;
}

CalendarAgendaFillIcon

interface CalendarAgendaFillIcon {
  height?: string;
  width?: string;
}

CalendarAgendaIcon

interface CalendarAgendaIcon {
  height?: string;
  width?: string;
}

CalendarCancelIcon

interface CalendarCancelIcon {
  height?: string;
  width?: string;
}

CalendarCheckIcon

interface CalendarCheckIcon {
  height?: string;
  width?: string;
}

CalendarIcon

interface CalendarIcon {
  height?: string;
  width?: string;
}

CalendarInfoIcon

interface CalendarInfoIcon {
  height?: string;
  width?: string;
}

CalendarPatternsIcon

interface CalendarPatternsIcon {
  height?: string;
  width?: string;
}

CheckboxComponent

/**
 * The `checkbox-component` component is a UI component that allows users to select a checkbox.
 * This component is used in the scheduling form to input checkbox type inputs.
 */
interface CheckboxComponent {
  /**
   * The default value of the checkbox. This is the value that is displayed when the checkbox is rendered.
   */
  checked?: boolean;
  /**
   * The label of the checkbox. This is displayed next to the checkbox.
   */
  label?: string;
  /**
   * The name of the checkbox. This is used to identify the checkbox when submitting a form.
   */
  name?: string;
  /**
   * This event is fired when the checkbox is toggled.
   */
  onNylasFormCheckboxToggled?: (
    event: CheckboxComponentCustomEvent<{
      checked: boolean;
      name: string;
      label: string;
    }>,
  ) => void;
  /**
   * Whether the checkbox is required. If true, the checkbox must be checked when submitting a form. Default is false. If the checkbox is required and not checked, an error message is displayed.
   */
  required?: boolean;
}

CheckmarkCircleIcon

interface CheckmarkCircleIcon {
  height?: string;
  width?: string;
}

CheckmarkIcon

interface CheckmarkIcon {
  height?: string;
  width?: string;
}

ChevronIcon

interface ChevronIcon {
  height?: string;
  width?: string;
}

ClockIcon

interface ClockIcon {
  height?: string;
  width?: string;
}

CloseIcon

interface CloseIcon {
  height?: string;
  width?: string;
}

CopyIcon

interface CopyIcon {
  height?: string;
  width?: string;
}

DeleteIcon

interface DeleteIcon {
  height?: string;
  width?: string;
}

DocumentRefreshIcon

interface DocumentRefreshIcon {
  height?: string;
  width?: string;
}

DragableIcon

interface DragableIcon {
  height?: string;
  width?: string;
}

EditIcon

interface EditIcon {
  height?: string;
  width?: string;
}

EnvelopeFillIcon

interface EnvelopeFillIcon {
  height?: string;
  width?: string;
}

EnvelopeIcon

interface EnvelopeIcon {
  height?: string;
  width?: string;
}

EyeIcon

interface EyeIcon {
  height?: string;
  width?: string;
}

FeedbackIcon

interface FeedbackIcon {
  height?: string;
  width?: string;
}

FlowIcon

interface FlowIcon {
  height?: string;
  width?: string;
}

FolderIcon

interface FolderIcon {
  height?: string;
  width?: string;
}

ForwardIcon

interface ForwardIcon {
  height?: string;
  width?: string;
}

GlobeIcon

interface GlobeIcon {
  height?: string;
  width?: string;
}

GoogleLogoIcon

interface GoogleLogoIcon {
  height?: string;
  width?: string;
}

GoogleMeetIcon

interface GoogleMeetIcon {
  height?: string;
  width?: string;
}

InboxIcon

interface InboxIcon {
  height?: string;
  width?: string;
}

InfoIcon

interface InfoIcon {
  height?: string;
  width?: string;
}

InputColorPicker

/**
 * The `input-color-picker` component is a dropdown that allows users to select an accent color from either RGB inputs or an interactive color picker and converts them to a hex value.
 * This component is used in the scheduling form to input dropdown type inputs.
 */
interface InputColorPicker {
  /**
   * The default selected color
   */
  defaultSelectedColor?: string;
  /**
   * The name of the dropdown
   */
  name: string;
  /**
   * This event is fired when the selected option is changed
   */
  onNylasFormDropdownChanged?: (
    event: InputColorPickerCustomEvent<{
      value: string;
      name: string;
      error?: string;
      label?: string;
    }>,
  ) => void;
}

InputComponent

/**
 * The `input-component` component is a UI component that allows users to input text, email, or phone number values.
 * This component is used in the scheduling form to input text, email and phone number type inputs.
 */
interface InputComponent {
  /**
   * Whether the input should be focused when rendered. Default is false. If true, the input is focused when rendered. Use this to set the focus on the first input in a form.
   */
  autoFocus?: boolean;
  /**
   * The default value of the input. This is the value that is displayed when the input is rendered.
   */
  defaultValue?: string;
  /**
   * The label of the input. This is displayed above the input.
   */
  label?: string;
  /**
   * The maximum length of the input value. If the value is longer than the maximum length, an error message is displayed. Default is 255.
   */
  maxLength?: number;
  /**
   * The name of the input. This is used to identify the input when submitting a form.
   */
  name?: string;
  onNylasFormInputBlurred?: (
    event: InputComponentCustomEvent<{
      value: string;
      name: string;
    }>,
  ) => void;
  /**
   * This event is fired when the input value is changed. The scheduling form listens for this event to validate the input value and submit the form. If using outside of the scheduling form, listen for this event to validate the input value and handle the input value change.
   */
  onNylasFormInputChanged?: (
    event: InputComponentCustomEvent<{
      value: string;
      name: string;
      label: string;
      type: string;
      error: string;
    }>,
  ) => void;
  onNylasFormInputFocused?: (
    event: InputComponentCustomEvent<{
      value: string;
      name: string;
    }>,
  ) => void;
  /**
   * The pattern to validate the input value. If the value does not match the pattern, an error message is displayed. Default is null. If the pattern is not set, the pattern is determined by the input type for 'email' and 'phone_number'.
   */
  pattern?: RegExp;
  /**
   * The error message to display when the value does not match the pattern. Default is 'Invalid <field> format.' where <field> is the input label.
   */
  patternError?: string;
  /**
   * The placeholder of the input. This is displayed when the input is empty.
   */
  placeholder?: string;
  /**
   * Whether the input is read-only. If true, the input cannot be edited. Default is false.
   */
  readOnly?: boolean;
  /**
   * Whether the input is required. If true, the input must have a value when submitting a form. Default is false. If the input is required and the value is empty, an error message is displayed.
   */
  required?: boolean;
  /**
   * This error message is displayed when the input value is empty and the input is required.
   */
  requiredError?: string;
  /**
   * The type of the input. This is used to determine the input's behavior. Supported types are 'text', 'email', and 'phone_number'.
   */
  type?: 'text' | 'email' | 'phone_number';
}

InputDropdown

/**
 * The `input-dropdown` component is a dropdown that allows users to input an option and/or select from a list of options.
 */
interface InputDropdown {
  /**
   * The default selected option
   */
  defaultInputOption?: DropdownOption;
  /**
   * This is used to set if the dropdown should be filtered based on the input value. If set to true, the dropdown will be filtered based on the input value.
   */
  filterable?: boolean;
  /**
   * Should show search input
   */
  inputValue: string;
  /**
   * The name of the dropdown
   */
  name: string;
  /**
   * This event is fired when the selected option is changed
   */
  onInputOptionChanged?: (
    event: InputDropdownCustomEvent<{
      value: DropdownOption['value'];
      name: string;
    }>,
  ) => void;
  /**
   * The options to display in the dropdown
   */
  options?: DropdownOption[];
  /**
   * Show pluralized label for the selected option. This is s tring that is appended to the selected option label as a suffix.
   */
  pluralizedLabel?: string;
}

InputImageUrl

/**
 * The `nylas-image-input` component is a UI component that allows users input an image URL and see a preview of the image.
 */
interface InputImageUrl {
  /**
   * Error message to display when the image URL is invalid.
   */
  errorMessage?: string;
  /**
   * Image
   */
  imageUrl?: string;
  /**
   * The name of the component
   */
  name?: string;
  /**
   * This event is fired when the image URL is changed
   */
  onValueChanged?: (
    event: InputImageUrlCustomEvent<{
      value: string;
      name: string;
      valueChanged?: (event: CustomEvent<{ value: string; name: string }>) => void;
    }>,
  ) => void;
}

ItalicIcon

interface ItalicIcon {
  height?: string;
  width?: string;
}

LoadingIcon

interface LoadingIcon {
  height?: string;
  width?: string;
}

LocationIcon

interface LocationIcon {
  height?: string;
  width?: string;
}

LocationOffIcon

interface LocationOffIcon {
  height?: string;
  width?: string;
}

MicrosoftLogoIcon

interface MicrosoftLogoIcon {
  height?: string;
  width?: string;
}

MicrosoftTeamsIcon

interface MicrosoftTeamsIcon {
  height?: string;
  width?: string;
}

MultiSelectDropdown

interface MultiSelectDropdown {
  /**
   * Error message to display
   */
  error?: string;
  /**
   * The label of the dropdown
   */
  label?: string;
  /**
   * The name of the dropdown
   */
  name: string;
  /**
   * This event is fired when the selected options are changed
   */
  onSelectedOptionsChanged?: (
    event: MultiSelectDropdownCustomEvent<{
      value: string[];
      name: string;
    }>,
  ) => void;
  /**
   * The options to display in the dropdown
   */
  options?: DropdownOption[];
}

NylasAdditionalParticipants

/**
 * The `nylas-additional-participants` component is a form input for adding additional participants to an event.
 */
interface NylasAdditionalParticipants {
  /**
   * @standalone The logged in user
   */
  currentUser?: User;
  /**
   * @standalone The event participants
   */
  eventParticipants?: Participant[];
  /**
   * @standalone The name of the component
   */
  name?: string;
  /**
   * This event is fired when the selected participants change.
   */
  onValueChanged?: (
    event: NylasAdditionalParticipantsCustomEvent<{
      value: string;
      name: string;
    }>,
  ) => void;
  /**
   * @standalone The additional participants options from the config
   */
  participantOptions?: AdditionalParticipant[];
  /**
   * @standalone The selected config
   */
  selectedConfiguration?: Configuration;
}

NylasAvailabilityPicker

/**
 * The `nylas-availability-picker` component is a form input for selecting availability (open hours).
 */
interface NylasAvailabilityPicker {
  /**
   * @standalone The default timezone or preset timezone.
   */
  defaultTimezone?: string;
  /**
   * @standalone Hide the header of the availability picker.
   */
  hideHeader?: boolean;
  /**
   * @standalone The name of the availability picker.
   */
  name?: string;
  /**
   * This event is fired when the selected availability / open hours change. The value is a stringified JSON object with the open hours and timezone. ``` {  openHours: OpenHours[],  timezone: string } ```
   */
  onValueChanged?: (
    event: NylasAvailabilityPickerCustomEvent<{
      value: string;
      name: string;
    }>,
  ) => void;
  /**
   * @standalone The open hours to display.
   */
  openHours?: OpenHours[];
  /**
   * @standalone The selected configuration.
   */
  selectedConfiguration?: Configuration;
}

NylasBookedEventCard

/**
 * The `nylas-booked-event-card` component is a UI component that displays the booked event card.
 */
interface NylasBookedEventCard {
  /**
   * @standalone The booking info used to book / reschedule the event.
   */
  bookingInfo?: NylasSchedulerBookingData;
  /**
   * @standalone The config settings for the scheduler.
   */
  configSettings?: ConfigSettings;
  /**
   * @standalone The booked event.
   */
  eventInfo: NylasEvent;
  /**
   * @standalone The loading state prop. Used to display loading state when fetching availability.
   */
  isLoading?: boolean;
  /**
   * This event is fired when an error occurs while cancelling the booking.
   */
  onCancelBookedEventValidationError?: (
    event: NylasBookedEventCardCustomEvent<{
      error: {
        title: string;
        message: string;
      };
    }>,
  ) => void;
  /**
   * Cancel booking button clicked event.
   */
  onCancelBookingButtonClicked?: (event: NylasBookedEventCardCustomEvent<{ bookingId: string }>) => void;
  /**
   * This event is fired when an error occurs while rescheduling the booking.
   */
  onRescheduleBookedEventError?: (event: NylasBookedEventCardCustomEvent<NylasSchedulerErrorResponse>) => void;
  /**
   * Reschedule button clicked event.
   */
  onRescheduleButtonClicked?: (event: NylasBookedEventCardCustomEvent<{ bookingId: string; errorHandler?: (error: NylasSchedulerErrorResponse) => void }>) => void;
  /**
   * @standalone Booking flow type.
   */
  rescheduleBookingId?: string;
  /**
   * The selected language.
   */
  selectedLanguage?: string;
  /**
   * The selected timeslot.
   */
  selectedTimeslot: Timeslot;
  /**
   * The selected timezone.
   */
  selectedTimezone?: string;
}

NylasBookingCalendarPicker

/**
 * The `nylas-booking-calendar-picker` component is a UI component that displays the booking calendar picker.
 */
interface NylasBookingCalendarPicker {
  /**
   * @standalone The calendars to choose from.
   */
  calendars?: Calendar[];
  /**
   * @standalone The current logged in user.
   */
  currentUser?: User;
  /**
   * @standalone The list of user's calendars.
   */
  currentUserCalendars?: Calendar[];
  /**
   * @standalone The default selected calendar.
   */
  defaultBookingCalendar?: string;
  /**
   * The prop to hide the header.
   */
  hideHeader?: boolean;
  /**
   * @standalone The name of the calendar picker.
   */
  name?: string;
  /**
   * This event is fired when the selected booking calendar changes.
   */
  onValueChanged?: (
    event: NylasBookingCalendarPickerCustomEvent<{
      value: string;
      name: string;
      valueChanged?: (event: CustomEvent<{ value: string; name: string }>) => void;
    }>,
  ) => void;
}

NylasBookingConfirmationRedirect

/**
 * The `nylas-booking-confirmation-redirect` component is a UI component that allows the user to choose a custom redirect URL after a booking is confirmed.
 */
interface NylasBookingConfirmationRedirect {
  /**
   * @standalone The name of the confirmation redirect link.
   */
  name?: string;
  /**
   * This event is fired when the current redirect URL changes and is valid.
   */
  onValueChanged?: (
    event: NylasBookingConfirmationRedirectCustomEvent<{
      value: string;
      name: string;
      valueChanged?: (event: CustomEvent<{ value: string; name: string }>) => void;
    }>,
  ) => void;
  /**
   * @standalone The custom redirect URL.
   */
  redirectUrl?: string;
  /**
   * @standalone The custom redirect URL error message
   */
  redirectUrlErrorMessage?: string;
  /**
   * @standalone The selected config
   */
  selectedConfiguration?: Configuration;
}

NylasBookingConfirmationType

/**
 * The `nylas-booking-confirmation-type` component is a UI component that allows the user to choose a custom redirect URL after a booking is confirmed.
 */
interface NylasBookingConfirmationType {
  /**
   * @standalone The booking type.
   */
  bookingType?: string;
  /**
   * @standalone The name of the confirmation redirect link.
   */
  name?: string;
  /**
   * This event is fired when the selected bookingType changes.
   */
  onValueChanged?: (
    event: NylasBookingConfirmationTypeCustomEvent<{
      value: string;
      name: string;
      valueChanged?: (event: CustomEvent<{ value: string; name: string }>) => void;
    }>,
  ) => void;
  /**
   * @standalone The selected config
   */
  selectedConfiguration?: Configuration;
  /**
   * @standalone Show or hide the confirmation type. This prop is automatically determined based on the value of selectedConfiguration in the config, making it unnecessary to set this prop manually.
   */
  showComponent?: boolean;
}

NylasBookingForm

/**
 * The `nylas-booking-form` component is a UI component that allows users to book an event.
 * The booking form component.
 */
interface NylasBookingForm {
  /**
   * @standalone The booking info.
   */
  bookingInfo?: NylasSchedulerBookingData;
  /**
   * @standalone The config settings for the scheduler.
   */
  configSettings?: ConfigSettings;
  /**
   * @standalone The booked event (Used to track if a booking is created in an eventOverride).
   */
  eventInfo?: NylasEvent;
  /**
   * @standalone The loading state.
   */
  isLoading?: boolean;
  /**
   * This event is fired when the cancel button is clicked.
   */
  onBackButtonClicked?: (event: NylasBookingFormCustomEvent<boolean>) => void;
  /**
   * This event is fired when an error occurs in the booking form validation.
   */
  onBookingFormError?: (event: NylasBookingFormCustomEvent<Partial<Notification>>) => void;
  /**
   * This event is fired immediately after the book button is clicked. The booking form validation is not complete at this point.
   */
  onBookingFormSubmitted?: (event: NylasBookingFormCustomEvent<void>) => void;
  /**
   * This event is fired when the book button is clicked and the form validation is complete and successful. This event is fired before the booking request is sent.
   */
  onDetailsConfirmed?: (event: NylasBookingFormCustomEvent<NylasSchedulerBookingDataWithFlatFields>) => void;
  /**
   * This event is fired when the email is changed.
   */
  onEmailChanged?: (event: NylasBookingFormCustomEvent<string>) => void;
  /**
   * This event is fired when the name is changed.
   */
  onNameChanged?: (event: NylasBookingFormCustomEvent<string>) => void;
}

NylasBookingFormConfig

/**
 * The `nylas-booking-form-config` component is a form input for adding additional fields to the booking form.
 */
interface NylasBookingFormConfig {
  /**
   * The additional fields to be displayed on the booking form.
   */
  additonalFields?: AdditionalFields[];
  /**
   * The name of the booking form config.
   */
  name?: string;
  /**
   * This event is fired when the selected availability / open hours change.
   */
  onValueChanged?: (
    event: NylasBookingFormConfigCustomEvent<{
      value: Record<string, AdditionalFields>;
      name: string;
    }>,
  ) => void;
  selectedConfiguration?: Configuration;
}

NylasBufferTime

/**
 * The `nylas-buffer-time` component is a UI component that allows users to set buffer time before and after an event.
 */
interface NylasBufferTime {
  /**
   * @standalone The buffer time
   */
  buffer?: { before: number; after: number };
  /**
   * The name of the calendar picker.
   */
  name?: string;
  /**
   * This event is fired when the selected buffer time is changed.
   */
  onValueChanged?: (
    event: NylasBufferTimeCustomEvent<{
      value: string;
      name: string;
      valueChanged?: (event: CustomEvent<{ value: string; name: string }>) => void;
    }>,
  ) => void;
  selectedConfiguration?: Configuration;
}

NylasCalendarPicker

/**
 * The `nylas-calendar-picker` component is a form input for selecting calendars to check availability.
 */
interface NylasCalendarPicker {
  /**
   * @standalone The calendars to choose from.
   */
  calendars?: Calendar[];
  /**
   * @standalone The logged in user.
   */
  currentUser?: User;
  /**
   * @standalone The default selected calendars.
   */
  defaultSelectedCalendars?: string[];
  /**
   * @standalone The name of the calendar picker.
   */
  name?: string;
  /**
   * This event is fired when the selected calendars change.
   */
  onValueChanged?: (
    event: NylasCalendarPickerCustomEvent<{
      value: string[];
      name: string;
      valueChangedHandler?: (event: CustomEvent<{ value: string[]; name: string }>) => void;
    }>,
  ) => void;
}

NylasCancelBookingForm

/**
 * The `nylas-cancel-booking-form` component is a UI component that allows users to cancel a booking (DELETE request).
 * This component is also used to reject a booking (PUT request) by the organizer, if the prop `rejectBookingId` is provided.
 */
interface NylasCancelBookingForm {
  /**
   * The booking ID to cancel.
   */
  cancelBookingId?: string;
  /**
   * @standalone The config settings.
   */
  configSettings?: ConfigSettings;
  /**
   * @standalone The event info.
   */
  eventInfo?: NylasEvent;
  /**
   * @standalone The loading state.
   */
  isLoading?: boolean;
  /**
   * This event is fired when an error occurs while cancelling the booking.
   */
  onCancelBookedEventError?: (event: NylasCancelBookingFormCustomEvent<NylasSchedulerErrorResponse>) => void;
  /**
   * This event is fired when an error occurs in the booking form.
   */
  onCancelBookingFormError?: (event: NylasCancelBookingFormCustomEvent<Partial<Notification>>) => void;
  /**
   * This event is fired when the cancel booking form is submitted.
   */
  onCancelBookingFormSubmitted?: (
    event: NylasCancelBookingFormCustomEvent<{
      bookingId: string;
      action: 'reject' | 'cancel';
      reason: string;
      errorHandler?: (error: NylasSchedulerErrorResponse) => void;
    }>,
  ) => void;
  /**
   * This event is fired when the Go back button is clicked on the cancel booking form.
   */
  onGoBackButtonClicked?: (event: NylasCancelBookingFormCustomEvent<void>) => void;
  /**
   * This event is only for triggering the validation on the text area for cancellation reason. This is for internal purposes only.
   */
  onTriggerValidation?: (event: NylasCancelBookingFormCustomEvent<{}>) => void;
  /**
   * The booking ID to reject.
   */
  rejectBookingId?: string;
  /**
   * The selected timeslot.
   */
  selectedTimeslot: Timeslot;
}

NylasCancellationPolicy

/**
 * The `nylas-cancellation-policy` component is a form input for the cancellation policy message of an event.
 */
interface NylasCancellationPolicy {
  /**
   * @standalone The cancellation policy stored in the configuration
   */
  cancellationPolicy?: string;
  /**
   * @standalone The name of the cancellation policy input.
   */
  name?: string;
  /**
   * Event emitted when the cancellation policy message changes.
   */
  onValueChanged?: (
    event: NylasCancellationPolicyCustomEvent<{
      value: string;
      name: string;
    }>,
  ) => void;
  /**
   * @standalone The selected config
   */
  selectedConfiguration?: Configuration;
}

NylasCancelledEventCard

/**
 * The `nylas-cancelled-event-card` component is a UI component that displays the cancelled event card.
 */
interface NylasCancelledEventCard {
  /**
   * The participant's name who booked the event / is logged in.
   */
  cancelledEventInfo: Partial<NylasEvent1>;
  /**
   * @standalone The config settings for the scheduler.
   */
  configSettings?: ConfigSettings;
  /**
   * This event is fired when an error occurs.
   */
  onCancelledEventCardError?: (event: NylasCancelledEventCardCustomEvent<NylasSchedulerErrorResponse1>) => void;
  /**
   * This event is fired when the close button is clicked on the cancelled event card.
   */
  onCloseCancelEventCardClicked?: (event: NylasCancelledEventCardCustomEvent<{ errorHandler?: (error: NylasSchedulerErrorResponse1) => void }>) => void;
}

NylasConfirmationEmail

/**
 * The `nylas-confirmation-email` component is a UI component that allows users to set buffer time before and after an event.
 */
interface NylasConfirmationEmail {
  /**
   * The confirmation email template data to display
   */
  confirmationEmailTemplate?: EmailTemplate;
  /**
   * Is the confirmation email card open
   */
  isOpen?: boolean;
  /**
   * The name of the component
   */
  name?: string;
  /**
   * This event is fired when the email reminders change.
   */
  onValueChanged?: (
    event: NylasConfirmationEmailCustomEvent<{
      value: string;
      name: string;
      valueChanged?: (event: CustomEvent<{ value: string; name: string }>) => void;
    }>,
  ) => void;
  /**
   * List of participants
   */
  participants?: Participant[];
  selectedConfiguration?: Configuration;
}

NylasConfirmedEventCard

/**
 * The `nylas-confirmed-event-card` component is a UI component that displays the confirmed event card.
 */
interface NylasConfirmedEventCard {
  /**
   * @standalone The config settings for the scheduler.
   */
  configSettings?: ConfigSettings;
  /**
   * The participant's name who booked the event / is logged in.
   */
  confirmedEventInfo: Partial<NylasEvent1>;
  /**
   * This event is fired when the close button is clicked on the confirmed event card.
   */
  onCloseConfirmEventCardClicked?: (event: NylasConfirmedEventCardCustomEvent<{ errorHandler?: (error: NylasSchedulerErrorResponse1) => void }>) => void;
  /**
   * This event is fired when an error occurs.
   */
  onConfirmedEventCardError?: (event: NylasConfirmedEventCardCustomEvent<NylasSchedulerErrorResponse1>) => void;
}

NylasConnectedCalendars

/**
 * The `nylas-connected-calendars` component is a form input for selecting calendars to check availability for participants.
 */
interface NylasConnectedCalendars {
  /**
   * @standalone The calendars to choose from for the organizer / logged in user.
   */
  calendars?: Calendar[];
  /**
   * The name of the participants custom availability.
   */
  name?: string;
  /**
   * This event is fired when the participants custom availability changes.
   */
  onValueChanged?: (
    event: NylasConnectedCalendarsCustomEvent<{
      value: string;
      name: string;
    }>,
  ) => void;
  /**
   * @standalone The participant options passed in the additionalParticipants prop from the nylas-scheduler-editor component.
   */
  participantOptions?: AdditionalParticipant[];
  /**
   * @standalone The participants selected in the add participants section.
   */
  participants?: Participant[];
  /**
   * @standalone The selected config
   */
  selectedConfiguration?: Configuration;
}

NylasCustomBookingFlow

/**
 * The `nylas-custom-booking-flow` component is an input form for booking type (automatically or manually accept bookings) and confirmation redirect URL (default or custom).
 * This component is a container for the `nylas-booking-confirmation-type`, `nylas-booking-confirmation-redirect` components.
 * ```html
 * <nylas-custom-booking-flow>
 *   <div slot="inputs">
 *     <nylas-booking-confirmation-type></nylas-booking-confirmation-type>
 *     <nylas-booking-confirmation-redirect></nylas-booking-confirmation-redirect>
 *   </div>
 * </nylas-custom-booking-flow>
 * ```
 */
interface NylasCustomBookingFlow {}

NylasCustomEventSlug

/**
 * The `nylas-custom-event-slug` component is a UI component that allows users to add a custom URL slug for their event link.
 */
interface NylasCustomEventSlug {
  /**
   * The default custom event slug
   */
  defaultUrlSlug?: string;
  /**
   * Is the custom event slug card expanded
   */
  isOpen?: boolean;
  /**
   * The name of the component
   */
  name?: string;
  /**
   * This event is fired when the slug value changes
   */
  onValueChanged?: (
    event: NylasCustomEventSlugCustomEvent<{
      value: string;
      name: string;
      valueChanged?: (event: CustomEvent<{ value: string; name: string }>) => void;
    }>,
  ) => void;
  /**
   * Indicates if a slug is required for the configuration. When set to true, the user must enter a slug when creating or editing a configuration. The slug is used for hosted pages that are public.
   */
  requiresSlug?: boolean;
  /**
   * The selected config
   */
  selectedConfiguration?: Configuration;
  /**
   * Slug error message
   */
  slugErrorMessage?: string;
}

NylasCustomizeBookingSettings

/**
 * The `nylas-customize-booking-settings` component is a UI component that displays the booking calendar picker.
 */
interface NylasCustomizeBookingSettings {
  /**
   * @standalone The default additional guests hidden setting as set in the configuration.
   */
  defaultHideAdditionalGuests?: boolean;
  /**
   * @standalone The default hide cancellation options setting as set in the configuration.
   */
  defaultHideCancellationOptions?: boolean;
  /**
   * @standalone The default hide rescheduling options setting as set in the configuration.
   */
  defaultHideReschedulingOptions?: boolean;
  /**
   * @standalone The name of the calendar picker.
   */
  name?: string;
  /**
   * This event is fired when the selected booking calendar changes.
   */
  onValueChanged?: (
    event: NylasCustomizeBookingSettingsCustomEvent<{
      value: string;
      name: string;
      valueChanged?: (event: CustomEvent<{ value: string; name: string }>) => void;
    }>,
  ) => void;
  /**
   * @standalone The selected config
   */
  selectedConfiguration?: Configuration;
}

NylasDatePicker

/**
 * The `nylas-date-picker` component is a UI component that allows users to select a date.
 */
interface NylasDatePicker {
  /**
   * @standalone The config settings.
   */
  configSettings?: ConfigSettings;
  /**
   * The event duration.
   */
  eventDuration?: number;
  /**
   * The loading state.
   */
  isLoading?: boolean;
  /**
   * This event is fired when a date is selected.
   */
  onDateSelected?: (event: NylasDatePickerCustomEvent<Date>) => void;
  /**
   * This event is fired when the month is changed.
   */
  onMonthChanged?: (event: NylasDatePickerCustomEvent<Date>) => void;
  /**
   * @standalone The dates that are selectable.
   */
  selectableDates?: Date[];
  /**
   * The selected date.
   */
  selectedDate?: Date;
  /**
   * The selected language.
   */
  selectedLanguage?: string;
}

NylasEditorTabs

/**
 * The nylas-editor-tabs component provides the user interface for managing editor tabs within the scheduler editor.
 * It is primarily used to control the edit mode of the scheduler editor, and it is rendered automatically by the
 * parent component, nylas-scheduler-editor, during editing. There is no need to interact with this component directly
 * or set any props manually, as its behavior is fully managed by the parent component.
 */
interface NylasEditorTabs {
  /**
   * @standalone The list of calendars to use in the editor when configuring availability.
   */
  calendars?: Calendar[];
  /**
   * @standalone The list of configurations
   */
  configurations?: Configuration[];
  /**
   * @standalone The current logged in user.
   */
  currentUser?: User;
  /**
   * @standalone This prop is passed down by the parent component to enable or disable user feedback.
   */
  enableUserFeedback?: boolean;
  /**
   * @standalone This prop is passed down by the parent component. It is an optional prop is used to hide tabs in the editor. Available tabs are: eventInfo, availability, participants, bookingOptions, bookingForm
   */
  hideEditorTabs?: Tab[];
  /**
   * @standalone The mode of the editor. - `app`: The editor is used as a standalone app. - `composable`: The editor is used as a composable component.
   */
  mode?: 'app' | 'composable';
  /**
   * Event emitted when the user clicks the cancel button.
   */
  onCancelButtonClick?: (event: NylasEditorTabsCustomEvent<void>) => void;
  /**
   * Event emitted on form submission.
   */
  onFormSubmitted?: (event: NylasEditorTabsCustomEvent<void>) => void;
  /**
   * Event emitted when the user clicks the preview button.
   */
  onPreviewButtonClicked?: (event: NylasEditorTabsCustomEvent<HTMLNylasEditorTabsElement>) => void;
  /**
   * Event emitted when the configuration is created/updated (after the request is complete). This fires for both create and edit actions.
   */
  onSchedulerConfigChanged?: (event: NylasEditorTabsCustomEvent<SchedulerEventDetail>) => void;
  /**
   * Event emitted when the value of a form field changes.
   */
  onSchedulerEditorFormUpdated?: (event: NylasEditorTabsCustomEvent<{ value: string; name: string }>) => void;
  /**
   * @standalone The scheduler preview link to use when the user clicks on the preview button. You can use a placeholder `{config.id}` to replace the configuration id anywhere in the link.
   */
  schedulerPreviewLink?: string;
  /**
   * @standalone The selected configuration to use in the editor when editing an existing configuration or creating a new one.
   */
  selectedConfiguration?: Configuration;
}

NylasEventDescription

/**
 * The `nylas-event-description` component is a form input for the description of an event.
 */
interface NylasEventDescription {
  /**
   * @standalone The event description stored in the configuration
   */
  eventDescription?: string;
  /**
   * @standalone The name of the event description input.
   */
  name?: string;
  /**
   * Event emitted when the event description changes.
   */
  onValueChanged?: (
    event: NylasEventDescriptionCustomEvent<{
      value: string;
      name: string;
    }>,
  ) => void;
  /**
   * @standalone The selected config
   */
  selectedConfiguration?: Configuration;
}

NylasEventDuration

/**
 * The `nylas-event-duration` component is a form input for the duration of an event.
 */
interface NylasEventDuration {
  /**
   * @standalone The event duration in minutes as set in the configuration.
   */
  eventDurationMinutes?: number;
  /**
   * @standalone The name of the event duration. Default is 'duration'.
   */
  name?: string;
  /**
   * Event emitted when the event duration changes.
   */
  onValueChanged?: (
    event: NylasEventDurationCustomEvent<{
      value: string;
      name: string;
    }>,
  ) => void;
  /**
   * @standalone The selected config
   */
  selectedConfiguration?: Configuration;
}

NylasEventInfo

/**
 * The `nylas-event-info` component is an input form for event information such as title, description, duration, location.
 * This component is a container for the `nylas-event-title`, `nylas-event-description`, `nylas-event-duration`, and `nylas-event-location` components.
 * ```html
 * <nylas-event-info>
 *   <div slot="inputs">
 *     <nylas-event-title></nylas-event-title>
 *     <nylas-event-description></nylas-event-description>
 *     <nylas-event-duration></nylas-event-duration>
 *     <nylas-lcation-component></nylas-event-location>
 *   </div>
 * </nylas-event-info>
 * ```
 */
interface NylasEventInfo {}

NylasEventLimits

/**
 * The `nylas-event-limits` component is an input form for event limits, such as the number of available days in the future and
 * the minimum period of notice that a guest must provide to cancel a booking.
 * This component is a container for the `nylas-limit-future-bookings` and `nylas-min-cancellation-notice` components.
 * ```html
 * <nylas-event-limits>
 *   <div slot="inputs">
 *     <nylas-limit-future-bookings></nylas-limit-future-bookings>
 *     <nylas-min-cancellation-notice></nylas-min-cancellation-notice>
 *   </div>
 * </nylas-event-limits>
 * ```
 */
interface NylasEventLimits {}

NylasEventLocation

/**
 * The `nylas-event-location` component is a form input for the location of an event.
 */
interface NylasEventLocation {
  /**
   * @standalone The conference providers where the key is the provider name ('zoom') and the value is the grant id. We currently support same provider ('google', 'microsoft') for all participants and 'zoom' for cross-provider conferencing.
   */
  conferenceProviders?: Record<string, string>;
  /**
   * @standalone The current user
   */
  currentUser?: User;
  /**
   * @standalone The event conferencing stored in the configuration
   */
  eventConferencing?: Conference;
  /**
   * @standalone The event location stored in the configuration
   */
  eventLocation?: string;
  /**
   * @standalone The name of the event location input.
   */
  name?: string;
  /**
   * This event is fired when the value of the event location changes.
   */
  onValueChanged?: (
    event: NylasEventLocationCustomEvent<{
      value: string;
      name: string;
    }>,
  ) => void;
  /**
   * @standalone The selected config
   */
  selectedConfiguration?: Configuration;
  /**
   * @standalone The users provider
   */
  userProvider?: string;
}

NylasEventTitle

/**
 * The `nylas-event-title` component is a form input for the title of an event.
 */
interface NylasEventTitle {
  /**
   * @standalone The title of the event from the cofiguration.
   */
  eventTitle?: string;
  /**
   * @standalone The name attribute of this component.
   */
  name?: string;
  /**
   * This event is fired when the value of the event title changes.
   */
  onValueChanged?: (
    event: NylasEventTitleCustomEvent<{
      value: string;
      name: string;
    }>,
  ) => void;
  /**
   * @standalone The selected config
   */
  selectedConfiguration?: Configuration;
}

NylasFeedbackForm

/**
 * The `nylas-feedback-form` component is a UI component that displays the booked event card.
 */
interface NylasFeedbackForm {
  /**
   * Feedback modal close event.
   */
  onFeedbackModalClosed?: (event: NylasFeedbackFormCustomEvent<void>) => void;
  /**
   * Feedback submitted event.
   */
  onFeedbackSubmitted?: (event: NylasFeedbackFormCustomEvent<{ feedback: string }>) => void;
  /**
   * This is an internal event that is used to trigger validation on the form.
   */
  onTriggerValidation?: (event: NylasFeedbackFormCustomEvent<void>) => void;
}

NylasFormCard

/**
 * The `nylas-form-card` component is a card that can be used to display a form. It is a simple wrapper around a card with a header and content area.
 */
interface NylasFormCard {}

NylasIfState

interface NylasIfState {
  getStore?: <K extends keyof Stores>(name: K) => Stores[K];
  /**
   * If true, then the component will render if the state is true. This prop is used with the `state` prop.
   */
  isBoolean?: boolean;
  /**
   * If true, then the component will render if the state is set (empty or not set). This prop is used with the `state` prop.
   */
  isStateSet?: boolean;
  /**
   * The name of the state to watch.
   */
  state?: string;
  transition?: Transitions;
}

NylasLimitFutureBookings

/**
 * The `nylas-limit-future-bookings` component is a form input for the number of days in the future a guest is allowed to book an event.
 */
interface NylasLimitFutureBookings {
  /**
   * @standalone The number of days into the future that invitees will see availability, as set in the configuration.
   */
  availableDaysInFuture?: number;
  /**
   * @standalone The name of the limit future bookings input.
   */
  name?: string;
  /**
   * Event emitted when the future booking limit changes.
   */
  onValueChanged?: (
    event: NylasLimitFutureBookingsCustomEvent<{
      value: string;
      name: string;
    }>,
  ) => void;
  /**
   * @standalone The selected config
   */
  selectedConfiguration?: Configuration;
}

NylasListConfigurations

/**
 * The `nylas-list-configurations` component displays a list of scheduling pages.
 */
interface NylasListConfigurations {
  /**
   * The list of configurations to display.
   */
  configurations?: Configuration[];
  /**
   * The next cursor for list configurations, if any.
   */
  listConfigurationsNextCursor?: string | null;
  /**
   * Event emitted when the user clicks the create event button.
   */
  onCreateButtonClick?: (event: NylasListConfigurationsCustomEvent<HTMLNylasListConfigurationsElement>) => void;
  /**
   * Event emitted when the user clicks the delete event button.
   */
  onDeleteButtonClick?: (
    event: NylasListConfigurationsCustomEvent<{
      host: HTMLNylasListConfigurationsElement;
      configuration: Configuration;
    }>,
  ) => void;
  /**
   * Event emitted when the user clicks the edit event button.
   */
  onEditButtonClick?: (
    event: NylasListConfigurationsCustomEvent<{
      host: HTMLNylasListConfigurationsElement;
      configuration: Configuration;
    }>,
  ) => void;
  /**
   * Event emitted when the component is initialized.
   */
  onInitListConfigurations?: (
    event: NylasListConfigurationsCustomEvent<{
      host: HTMLNylasListConfigurationsElement;
      cursor?: string;
    }>,
  ) => void;
  /**
   * The scheduler preview link to use when the user clicks on the preview button. You can use a placeholder `{config.id}` to replace the configuration id anywhere in the link.
   */
  schedulerPreviewLink?: string;
}

NylasLocaleSwitch

/**
 * The `nylas-locale-switch` component is a UI component that allows users to select a timezone and language.
 */
interface NylasLocaleSwitch {
  /**
   * This event is fired when the language is changed.
   */
  onLanguageChanged?: (event: NylasLocaleSwitchCustomEvent<string>) => void;
  /**
   * This event is fired when the timezone is changed.
   */
  onTimezoneChanged?: (event: NylasLocaleSwitchCustomEvent<string>) => void;
  /**
   * The selected language.
   */
  selectedLanguage?: string;
  /**
   * The selected timezone.
   */
  selectedTimezone?: string;
}

NylasLogin

interface NylasLogin {
  buttonText?: string;
  companyName?: string;
  isAuthenticated?: boolean;
  loginMethod?: 'redirect' | 'emebded';
  logoUrl?: string;
  logoWidth?: string;
  nylasConnector?: NylasAuthConnectorInterface;
  onButtonClick?: (event: NylasLoginCustomEvent<{ url?: string }>) => void;
  providers?: string;
  scopes?: string[];
}

interface NylasLogo {
  height?: string;
  width?: string;
}

NylasMinBookingNotice

/**
 * The `nylas-min-booking-notice` component is a form input for the minimum period of notice (minutes) that a guest must
 * provide to book an event.
 */
interface NylasMinBookingNotice {
  /**
   * @standalone The minimum booking notice (minutes) stored in the configuration
   */
  minBookingNotice?: number;
  /**
   * @standalone The name of the min booking notice input.
   */
  name?: string;
  /**
   * This event is fired when the value of the min booking notice changes.
   */
  onValueChanged?: (
    event: NylasMinBookingNoticeCustomEvent<{
      value: string;
      name: string;
    }>,
  ) => void;
  /**
   * @standalone The selected config
   */
  selectedConfiguration?: Configuration;
}

NylasMinCancellationNotice

/**
 * The `nylas-min-cancellation-notice` component is a form input for the minimum period of notice (minutes) that a guest must
 * provide to cancel a booked event.
 */
interface NylasMinCancellationNotice {
  /**
   * @standalone The minimum cancellation notice (minutes) stored in the configuration
   */
  minCancellationNotice?: number;
  /**
   * @standalone The name of the min cancellation notice input.
   */
  name?: string;
  /**
   * This event is fired when the value of the min cancellation notice changes.
   */
  onValueChanged?: (
    event: NylasMinCancellationNoticeCustomEvent<{
      value: string;
      name: string;
    }>,
  ) => void;
  /**
   * @standalone The selected config
   */
  selectedConfiguration?: Configuration;
}

NylasNotification

/**
 * The `nylas-notification` component is a UI component that displays notifications.
 */
interface NylasNotification {
  allowedCategories?: string[];
  /**
   * The time-to-live for notifications in milliseconds. Set to 'none' to disable auto-dismissal.
   */
  ttl?: number | 'none';
}

NylasOrganizerConfirmationCard

/**
 * The `nylas-organizer-confirmation-card` component is a UI component that displays the booked event card.
 */
interface NylasOrganizerConfirmationCard {
  /**
   * @standalone The config settings for the scheduler.
   */
  configSettings?: ConfigSettings;
  /**
   * @standalone The loading state prop. Used to display loading state when fetching availability.
   */
  isLoading?: boolean;
  /**
   * Reschedule button clicked event.
   */
  onConfirmBookingButtonClicked?: (
    event: NylasOrganizerConfirmationCardCustomEvent<{
      bookingId: string;
      host: HTMLNylasOrganizerConfirmationCardElement;
      errorHandler?: (error: NylasSchedulerErrorResponse) => void;
    }>,
  ) => void;
  /**
   * This event is fired when an error occurs while rescheduling the booking.
   */
  onConfirmBookingError?: (event: NylasOrganizerConfirmationCardCustomEvent<NylasSchedulerErrorResponse>) => void;
  /**
   * Reject booking button clicked event.
   */
  onRejectBookingButtonClicked?: (event: NylasOrganizerConfirmationCardCustomEvent<{ bookingId: string; host: HTMLNylasOrganizerConfirmationCardElement }>) => void;
  /**
   * Booking flow type.
   */
  organizerConfirmationBookingId?: string;
  /**
   * The selected language.
   */
  selectedLanguage?: string;
}

NylasPageName

/**
 * The `nylas-page-name` component is a UI component that allows users to add a custom page name which will appear in the top left corner of the date picker.
 */
interface NylasPageName {
  /**
   * @standalone Is the page name container card expanded
   */
  isOpen?: boolean;
  /**
   * @standalone The name of the component
   */
  name?: string;
  /**
   * This event is fired when the page name value changes
   */
  onValueChanged?: (
    event: NylasPageNameCustomEvent<{
      value: string;
      name: string;
      valueChanged?: (event: CustomEvent<{ value: string; name: string }>) => void;
    }>,
  ) => void;
  /**
   * @standalone The default page name
   */
  pageName?: string;
  /**
   * @standalone The selected config
   */
  selectedConfiguration?: Configuration;
  /**
   * @standalone Show toggle button that allows users to expand or collapse the card
   */
  showToggle?: boolean;
}

NylasPageStyling

/**
 * The `nylas-page-styling` component is a UI component that allows users to customize the styling of the scheduling page.
 * To use this component, pass a slot `custom-page-style-inputs` to the `nylas-scheduler-editor` component with the input
 * fields you want to display. The component will automatically update the appearance object when the input fields are changed.
 * Ensure that the input fields have the `name` attribute set to the key in the appearance object.
 * If you want to style the Nylas hosted scheduler page, you can use this component to customize the appearance of the page.
 * The fields that can be customized in the Nylas hosted scheduler page are:
 * - Primary color: (name: color)
 * - Company logo: (name: company_logo_url)
 * - Submit button label: (name: submit_button_label)
 * - Thank you message: (name: thank_you_message)
 * This component cannot be used as an independent component. It must be used within the `nylas-scheduler-editor` component.
 */
interface NylasPageStyling {
  appearance?: Appearance;
  isOpen?: boolean;
  name?: string;
  /**
   * This event is fired when the form is submitted in the parent component.
   */
  onBookingFormSubmitted?: (event: NylasPageStylingCustomEvent<void>) => void;
  /**
   * This event is fired when the email reminders change.
   */
  onValueChanged?: (
    event: NylasPageStylingCustomEvent<{
      value: string;
      name: string;
      valueChanged?: (event: CustomEvent<{ value: string; name: string }>) => void;
    }>,
  ) => void;
  selectedConfiguration?: Configuration;
}

NylasParticipantBookingCalendars

/**
 * The `nylas-participant-booking-calendars` component is a form input for selecting calendars to check availability for participants.
 */
interface NylasParticipantBookingCalendars {
  /**
   * @standalone The calendars to choose from for the organizer / logged in user.
   */
  calendars?: Calendar[];
  /**
   * @standalone The name of the participants custom availability.
   */
  name?: string;
  /**
   * This event is fired when the participants custom availability changes.
   */
  onValueChanged?: (
    event: NylasParticipantBookingCalendarsCustomEvent<{
      value: string;
      name: string;
    }>,
  ) => void;
  /**
   * @standalone The participant options passed in the additionalParticipants prop from the nylas-scheduler-editor component.
   */
  participantOptions?: AdditionalParticipant[];
  /**
   * @standalone The participants selected in the add participants section.
   */
  participants?: Participant[];
  /**
   * @standalone The selected config
   */
  selectedConfiguration?: Configuration;
}

NylasParticipantsCustomAvailability

/**
 * The `nylas-participants-custom-availability` component is a form input for setting custom availability for participants.
 */
interface NylasParticipantsCustomAvailability {
  /**
   * @standalone The name of the participants custom availability.
   */
  name?: string;
  /**
   * This event is fired when the participants custom availability changes.
   */
  onValueChanged?: (
    event: NylasParticipantsCustomAvailabilityCustomEvent<{
      value: string;
      name: string;
    }>,
  ) => void;
  /**
   * @standalone The participants selected in the add participants section.
   */
  participants?: Participant[];
  /**
   * @standalone The selected config
   */
  selectedConfiguration?: Configuration;
}

NylasProvider

/**
 * The Nylas Provider component.
 * This component is used to manage the Nylas Provider.
 * It is used to manage the Nylas Auth instance, the Nylas Connector instance,
 * and the Nylas Store instance.
 */
interface NylasProvider {
  /**
   * The Nylas Auth configuration. Used to manage all things authentication with Nylas.
   */
  authConfig?: AuthConfig;
  /**
   * Automatically register components that have the `@RegisterComponent` decorator. If this is set to false, you will need to manually register components using the `registerComponent` method.
   * @default true
   */
  automaticComponentRegistration?: boolean;
  /**
   * This provides a way to override the default event handlers.
   */
  eventOverrides?: EventOverride<Exclude<typeof this.nylasConnector, undefined>>;
  /**
   * This event is fired when the provider is initialized. It can be used to set the initial state of the provider, or to prevent the provider from firing some default behavior.
   */
  onInit?: (event: NylasProviderCustomEvent<HTMLNylasProviderElement>) => void;
  /**
   * This event is fired when the the NyalsAuth isAuthenticated state changes to true.
   */
  onLoggedIn?: (event: NylasProviderCustomEvent<HTMLNylasProviderElement>) => void;
  /**
   * This event is fired when the the NyalsAuth isAuthenticated state changes to true.
   */
  onLoggedOut?: (event: NylasProviderCustomEvent<HTMLNylasProviderElement>) => void;
}

NylasReminderEmails

/**
 * The `nylas-reminder-emails` component is a UI component that allows users to set buffer time before and after an event.
 */
interface NylasReminderEmails {
  /**
   * The name of the component
   */
  name?: string;
  /**
   * This event is fired when the email reminders change.
   */
  onValueChanged?: (
    event: NylasReminderEmailsCustomEvent<{
      value: string;
      name: string;
      valueChanged?: (event: CustomEvent<{ value: string; name: string }>) => void;
    }>,
  ) => void;
  /**
   * The selected configuration.
   */
  selectedConfiguration?: Configuration;
}

NylasReminderTime

/**
 * The `nylas-reminder-time` component is a form input for the reminder time before an event.
 */
interface NylasReminderTime {
  /**
   * The event reminder time in minutes as set in the configuration.
   */
  eventReminderTimeMinutes?: number;
  /**
   * The name of the reminder time. Default is 'reminder time'.
   */
  name?: string;
  /**
   * Event emitted when the event reminder time changes.
   */
  onValueChanged?: (
    event: NylasReminderTimeCustomEvent<{
      value: string;
      name: string;
    }>,
  ) => void;
}

NylasSchedulerEditor

/**
 * The `nylas-scheduler-editor` component is a form that allows users to configure the settings for the Nylas Scheduler.
 */
interface NylasSchedulerEditor {
  /**
   * This prop is used to populate the additional participants and their availability in the scheduler editor.
   */
  additionalParticipants?: AdditionalParticipant[];
  /**
   * This prop will be used to populate the conference provider options in the editor. The key is the provider name ('zoom') and the value is the grant id. We currently support same provider ('google', 'microsoft') for all participants and 'zoom' for cross-provider conferencing.
   */
  conferenceProviders?: Record<string, string>;
  /**
   * * The configuration id to use for the scheduler editor. If provided, then the scheduler editor will try and fetch the configuration with the provided id. If found, it will automatically load the editor with the configuration settings for editing.
   */
  configurationId?: string;
  /**
   * The default authentication arguments to use when authenticating a user.
   */
  defaultAuthArgs?: AuthArgs[];
  /**
   * The default scheduler config store state. Used to set the initial state of the scheduler config store. This state can be used to pass defaults to newly created configurations.
   */
  defaultSchedulerConfigState?: Partial<NylasSchedulerConfigStoreState>;
  /**
   * Indicates if the user feedback feature is enabled. By default, this is set to true. When enabled, the user feedback feature will be available in the edit mode. To disable the user feedback feature, set this prop to false.
   */
  enableUserFeedback?: boolean;
  /**
   * This provides a way to override the default event handlers.
   */
  eventOverrides?: SchedulerEditorEventOverride;
  /**
   * This optional prop is used to hide tabs in the editor. Available tabs are: eventInfo, availability, participants, bookingOptions, bookingForm
   */
  hideEditorTabs?: Tab[];
  /**
   * This is used to set the mode for the scheduler config. The mode can be 'app' or 'composable'. The default mode is 'app'.
   */
  mode?: 'app' | 'composable';
  /**
   * The Nylas Api Request instance. Used to make requests to the Nylas API.
   */
  nylasApiRequest?: NylasApiRequest;
  /**
   * The Nylas Sessions configuration. Used to configure the Nylas Sessions instance.
   */
  nylasSessionsConfig?: Config;
  /**
   * This event is fired when the provider is initialized. By default, this event handles determining if the user is logged in or not. In addition, it fetches the provided configuration if a valid configuration id is provided.
   */
  onInit?: (event: NylasSchedulerEditorCustomEvent<HTMLNylasSchedulerEditorElement>) => void;
  /**
   * This event is fired when the the NylasAuth isAuthenticated state changes to true.
   */
  onLoggedIn?: (event: NylasSchedulerEditorCustomEvent<HTMLNylasSchedulerEditorElement>) => void;
  /**
   * This event is fired when the the NylasAuth isAuthenticated state changes to false.
   */
  onLoggedOut?: (event: NylasSchedulerEditorCustomEvent<HTMLNylasSchedulerEditorElement>) => void;
  /**
   * This event is fired when the close button on scheduler config is clicked.
   */
  onSchedulerConfigCloseClicked?: (event: NylasSchedulerEditorCustomEvent<HTMLNylasSchedulerEditorElement>) => void;
  /**
   * Indicates if a slug is required for the configuration. When set to true, the user must enter a slug when creating or editing a configuration. The slug is used for hosted pages. If using Nylas hosted scheduling pages, the `schedulerPreviewLink` prop can be set to redirect to a public configuration as follows: `https://book.nylas.com/us/<YOUR_NYLAS_APP_CLIENT_ID>/{slug}`. `us` denotes the region. Replace it with the appropriate region of your application. Replace `<YOUR_NYLAS_APP_CLIENT_ID>` with your Nylas app client ID. The `{slug}` placeholder is replaced with the appropriate slug when the scheduler preview button is clicked. Note: Nylas hosted scheduling pages are only available for public configurations.
   */
  requiresSlug?: boolean;
  /**
   * The scheduler preview link used when the user clicks the preview button. If `requiresSlug` is true, you can use the placeholder `{slug}` to insert the slug in the link for Nylas hosted scheduling pages. Additionally, you can use the placeholder `{config.id}` to insert the configuration ID anywhere in the link. For example: `https://book.nylas.com/us/<YOUR_NYLAS_APP_CLIENT_ID>/{slug}`. `us` denotes the region. Replace it with the appropriate region of your application. Replace `<YOUR_NYLAS_APP_CLIENT_ID>` with your Nylas app client ID. Note: Nylas hosted scheduling pages are only available for public configurations.
   */
  schedulerPreviewLink?: string;
}

NylasScheduling

/**
 * The `nylas-scheduling` component is used to display the Nylas Scheduling UI.
 */
interface NylasScheduling {
  /**
   * This enables passing the bookingInfo object to the Scheduler UI for direct booking event creation. When used with timeslotConfirmedHandler, it bypasses the additional data page and immediately invokes the handler after booking.
   */
  bookingInfo?: NylasSchedulerBookingData2;
  /**
   * Booking Ref required for cancelling flow.
   */
  cancelBookingRef?: string;
  /**
   * The app ID of the configuration (public config) to be used for the Nylas Scheduler. This is used in conjunction with the slug. When the configurationId is not provided, the slug and clientId are used to make requests to the Scheduler API endpoints. If the configurationId is provided, this prop will be ignored.
   */
  clientId?: string;
  /**
   * The config ID for the Nylas Scheduler. This should be passed in when using a public config, in which case the sessionId is not required.
   */
  configurationId?: string;
  /**
   * The default scheduler store state. Used to set the initial state of the scheduler store.
   */
  defaultSchedulerState?: Partial<NylasSchedulerStoreState>;
  enableUserFeedback?: boolean;
  /**
   * This provides an easy way to override the default function of the event emitter. An example of this is the `timeslotConfirmed` event. By default, this event will set the scheduler store state for `showBookingForm` to `true` which will show the booking form. However, if you want to override this behavior, you can pass in the prop `eventOverride` like: ```html <nylas-scheduling eventOverride={{"timeslotConfirmed": (event, nylasConnector) => { console.log("Timeslot confirmed event fired!"); } }} /> ```
   */
  eventOverrides?: SchedulerEventOverride;
  /**
   * The loading state. This is used to set the loading state for the Nylas Scheduler when fetching data.
   */
  isLoading?: boolean;
  /**
   * This prop will allow to override the default localization strings for each language. Nylas scheduling page currently support the following language codes: en, es, fr, de, sv, zh, ja, nl.
   */
  localization?: Partial<Record<LANGUAGE_CODE, Locale>>;
  /**
   * This is used to set the mode for the Nylas Scheduler. The mode can be either `app` or `composable`. The default mode is `app`. - `app`: This mode is used to show the default Nylas Scheduler UI. - `composable`: This mode is used to show the composable Nylas Scheduler UI    by passing the individual scheduler components as children.
   */
  mode?: 'app' | 'composable';
  /**
   * This prop lets you hide the Nylas branding. Default is true.
   */
  nylasBranding?: boolean;
  /**
   * This event is triggered on successful booking request. It emits the event data.
   */
  onBookedEventInfo?: (event: NylasSchedulingCustomEvent<NylasSchedulerResponse<NylasEvent>>) => void;
  /**
   * This event is triggered if either the rescheduleBookingRef or cancelBookingRef or organizerConfirmationBookingRef prop is supplied and the component has been attached to the DOM. It emits the configurationId and bookingId derived from the rescheduleBookingRef or cancelBookingRef or organizerConfirmationBookingRef. Subscribe to this event to obtain the extracted configurationId, which is necessary to generate the sessionID for configurations that are not public.
   */
  onBookingRefExtracted?: (event: NylasSchedulingCustomEvent<{ configurationId: string; bookingId: string; salt?: string }>) => void;
  onConfigSettingsLoaded?: (event: NylasSchedulingCustomEvent<{ settings: NylasSchedulerResponse<UISettingsResponse> }>) => void;
  /**
   * This event is fired when the provider is initialized. It can be used to set the initial state of the provider, or to prevent the provider from firing some default behavior.
   */
  onInit?: (event: NylasSchedulingCustomEvent<HTMLNylasSchedulingElement>) => void;
  onNylasSchedulerError?: (event: NylasSchedulingCustomEvent<{ notification: Notification; host: HTMLElement }>) => void;
  /**
   * This event is fired when the scheduler component enters componentDidLoad lifecycle.
   */
  onSchedulerDidLoad?: (event: NylasSchedulingCustomEvent<HTMLNylasSchedulingElement>) => void;
  /**
   * This event is fired when the scheduler component enters componentWillLoad lifecycle.
   */
  onSchedulerWillLoad?: (event: NylasSchedulingCustomEvent<HTMLNylasSchedulingElement>) => void;
  /**
   * Booking Ref required for the manual confirmation flow.
   */
  organizerConfirmationBookingRef?: string;
  /**
   * Booking Ref required for rescheduling flow.
   */
  rescheduleBookingRef?: string;
  /**
   * The URL for the Nylas Scheduler API. (staging or production URL)
   */
  schedulerApiUrl?: string;
  /**
   * The session ID for the Nylas Scheduler. This is used to authenticate the user.
   */
  sessionId?: string;
  showNotification?: boolean;
  /**
   * The slug of the configuration (public config) to be used for the Nylas Scheduler. This is used in conjunction with the clientId. When the configurationId is not provided, the slug and clientId are used to make requests to the Scheduler API endpoints. If the configurationId is provided, this prop will be ignored.
   */
  slug?: string;
  /**
   * Theme config, used to automatically generate a theme with color palette and CSS variables to customize the look and feel of the Nylas Scheduler.
   */
  themeConfig?: ThemeConfig;
}

NylasSchedulingMethod

/**
 * The `nylas-scheduling-method` component is a UI component that displays the booking calendar picker.
 */
interface NylasSchedulingMethod {
  /**
   * @standalone The name of the booking type picker.
   */
  name?: string;
  /**
   * This event is fired when the selected booking calendar changes.
   */
  onValueChanged?: (
    event: NylasSchedulingMethodCustomEvent<{
      value: string;
      name: string;
      valueChanged?: (event: CustomEvent<{ value: string; name: string }>) => void;
    }>,
  ) => void;
  /**
   * @standalone The participant options passed in the additionalParticipants prop from the nylas-scheduler-editor component.
   */
  participantOptions?: AdditionalParticipant[];
  /**
   * This prop is used to display the component in a disabled state / read-only mode.
   */
  readOnly?: boolean;
  /**
   * @standalone The selected config
   */
  selectedConfiguration?: Configuration;
}

NylasSelectedEventCard

/**
 * The `nylas-selected-event-card` component is a UI component that displays the selected event card.
 */
interface NylasSelectedEventCard {
  /**
   * The selected date.
   */
  selectedDate?: Date;
  /**
   * The selected language.
   */
  selectedLanguage?: string;
  /**
   * The selected time.
   */
  selectedTimeslot?: Timeslot;
  /**
   * The selected timezone.
   */
  selectedTimezone?: string;
}

NylasTimeWindowPicker

/**
 * The `nylas-time-window-picker` component is a time picker that can be used to select a time.
 */
interface NylasTimeWindowPicker {
  /**
   * This sets the error state of the input.
   */
  hasError?: boolean;
  /**
   * This is the start time value if one is set by the parent component. It is useful if this component is used to render an end time which should not be before the start time, defining the earliest selectable time.
   */
  minimumStartTime?: string | null;
  /**
   * The name of the input.
   */
  name: string;
  /**
   * This event is fired when the form has an error. The parent component can listen for this event and display an error message or set form validity.
   */
  onFormError?: (
    event: NylasTimeWindowPickerCustomEvent<{
      key: string;
      message: string;
    }>,
  ) => void;
  /**
   * This event is fired when the time is changed.
   */
  onTimeChange?: (
    event: NylasTimeWindowPickerCustomEvent<{
      key: string;
      value: string;
    }>,
  ) => void;
  /**
   * The placeholder text for the input.
   */
  placeholder?: string;
  /**
   * The time to display in the input. This is passed by the parent component and can be updated using the setTime prop function provided by the parent component.
   */
  time: string;
}

NylasTimeslotInterval

/**
 * The `nylas-timeslot-interval` component allows users to set their time slot interval preferences.
 * This component provides an option to set both `interval_minutes` and `round_to` in the configuration.
 */
interface NylasTimeslotInterval {
  /**
   * @standalone The event duration in minutes.
   */
  eventDurationMinutes?: number;
  /**
   * @standalone The name of the calendar picker.
   */
  name?: string;
  /**
   * This event is fired when the selected booking calendar changes.
   */
  onValueChanged?: (
    event: NylasTimeslotIntervalCustomEvent<{
      value: string;
      name: string;
    }>,
  ) => void;
  /**
   * @standalone The selected config
   */
  selectedConfiguration?: Configuration;
}

NylasTimeslotPicker

/**
 * The `nylas-timeslot-picker` component is a UI component that allows users to select a timeslot from a list of available timeslots.
 */
interface NylasTimeslotPicker {
  /**
   * @standalone The available timeslots.
   */
  availability?: AvailabilityTimeslot[];
  /**
   * @standalone The loading state prop. Used to display loading state when fetching availability.
   */
  isLoading?: boolean;
  /**
   * This event is fired when a timeslot is confirmed. By default, this will proceed to the booking form page.
   */
  onTimeslotConfirmed?: (event: NylasTimeslotPickerCustomEvent<Timeslot>) => void;
  /**
   * This event is fired when a timeslot is selected.
   */
  onTimeslotSelected?: (event: NylasTimeslotPickerCustomEvent<Timeslot>) => void;
  /**
   * The selected date.
   */
  selectedDate?: Date;
  /**
   * The selected language.
   */
  selectedLanguage?: string;
  /**
   * The selected timeslot.
   */
  selectedTimeslot?: Timeslot;
  /**
   * The selected timezone.
   */
  selectedTimezone?: string;
}

PaintbrushFillIcon

interface PaintbrushFillIcon {
  height?: string;
  width?: string;
}

PaintbrushIcon

interface PaintbrushIcon {
  height?: string;
  width?: string;
}

PeopleIcon

interface PeopleIcon {
  height?: string;
  width?: string;
}

PersonClipboardIcon

interface PersonClipboardIcon {
  height?: string;
  width?: string;
}

PersonIcon

interface PersonIcon {
  height?: string;
  width?: string;
}

PlayIcon

interface PlayIcon {
  height?: string;
  width?: string;
}

PlusIcon

interface PlusIcon {
  height?: string;
  width?: string;
}

RadioButtonGroup

/**
 * The `radio-button-group` component is a UI component that allows users to select a single option from a list of options.
 * This component is used in the scheduling form to input radio button type inputs.
 */
interface RadioButtonGroup {
  /**
   * The default selected value of the radio group.
   */
  defaultSelectedValue?: string;
  /**
   * The label of the radio group. This is displayed above the radio group. Label is optional. You can also use the slot 'label' to add a label.
   */
  label?: string;
  /**
   * The name of the radio group. This is used to identify the radio group when submitting a form.
   */
  name?: string;
  /**
   * This event is fired when the selected value changes.
   */
  onNylasFormRadioChanged?: (
    event: RadioButtonGroupCustomEvent<{
      value: string;
      name: string;
      label?: string;
    }>,
  ) => void;
  /**
   * The list of options in the radio group. Each option has a label and a value and an optional description.
   */
  options?: { label: string; value: string; description?: string }[];
  /**
   * Whether the radio group is required. If true, the radio group must have a value when submitting a form. Default is false. If the radio group is required and the value is empty, an error message is displayed.
   */
  required?: boolean;
}

RefreshIcon

interface RefreshIcon {
  height?: string;
  width?: string;
}

ReplyAllIcon

interface ReplyAllIcon {
  height?: string;
  width?: string;
}

ReplyIcon

interface ReplyIcon {
  height?: string;
  width?: string;
}

SearchIcon

interface SearchIcon {
  height?: string;
  width?: string;
}

SelectDropdown

/**
 * The `select-dropdown` component is a dropdown that allows users to select an option from a list of options.
 * This component is used in the scheduling form to input dropdown type inputs.
 */
interface SelectDropdown {
  /**
   * The default selected option
   */
  defaultSelectedOption?: DropdownOption | null;
  /**
   * Overrides the select dropdown to be used as a button with dropdownButtonText representing actions &  dropdownText name on the dropdown intead of selected value
   */
  dropdownButtonText?: string;
  /**
   * The label for the dropdown, skipped if no label is provided
   */
  label?: string;
  /**
   * The name of the dropdown
   */
  name: string;
  /**
   * This event is fired when the selected option is changed
   */
  onNylasFormDropdownChanged?: (
    event: SelectDropdownCustomEvent<{
      value: DropdownOption['value'];
      name: string;
      error?: string;
      label?: string;
    }>,
  ) => void;
  /**
   * This event is fired when the default selected option is set, on component load
   */
  onNylasFormDropdownDefaultSelected?: (
    event: SelectDropdownCustomEvent<{
      value: DropdownOption['value'];
      name: string;
      error?: string;
      label?: string;
    }>,
  ) => void;
  /**
   * The options to display in the dropdown
   */
  options?: DropdownOption[];
  /**
   * Show pluralized label for the selected option. This is s tring that is appended to the selected option label as a suffix.
   */
  pluralizedLabel?: string;
  /**
   * If true, the dropdown is required for form submission
   */
  required?: boolean;
  /**
   * Should show chevron on button
   */
  withChevron?: boolean;
  /**
   * Should show search input
   */
  withSearch?: boolean;
}

SentIcon

interface SentIcon {
  height?: string;
  width?: string;
}

SpamIcon

interface SpamIcon {
  height?: string;
  width?: string;
}

StarIcon

interface StarIcon {
  height?: string;
  width?: string;
}

StopIcon

interface StopIcon {
  height?: string;
  width?: string;
}

TextareaComponent

/**
 * `textarea-component` allows users to enter multiline text.
 * It is ideal for larger inputs like comments or messages in a form.
 * This component is used in the scheduling form to input multiline text.
 */
interface TextareaComponent {
  /**
   * Automatically focus the textarea when the component loads.
   */
  autoFocus?: boolean;
  /**
   * The default value of the textarea, appearing when the component first renders.
   */
  defaultValue?: string;
  /**
   * The label for the textarea, displayed above it.
   */
  label?: string;
  /**
   * The maximum number of characters allowed in the textarea.
   */
  maxLength?: number;
  /**
   * The name of the textarea, important for form submissions.
   */
  name?: string;
  /**
   * Event emitted when the value of the textarea changes. Useful for parent components to capture user input.
   */
  onNylasFormInputChanged?: (event: TextareaComponentCustomEvent<{ value: string; name: string; error: string; label: string; type: string }>) => void;
  /**
   * Placeholder text shown in the textarea when it is empty.
   */
  placeholder?: string;
  /**
   * If true, the textarea cannot be edited by the user.
   */
  readOnly?: boolean;
  /**
   * Specifies if the textarea is required for form submission. If true, an error message shows if left empty.
   */
  required?: boolean;
  /**
   * The content of the label's tooltip
   */
  tooltip?: string;
  /**
   * The type
   */
  type?: string;
}

TimePeriodSelector

interface TimePeriodSelector {
  /**
   * The default selected number.
   */
  defaultSelectedNumber: number;
  /**
   * The default selected time period.
   */
  defaultSelectedPeriod: string;
  onTimePeriodChanged?: (event: TimePeriodSelectorCustomEvent<{ number: number; period: string }>) => void;
  timePeriods?: string[];
}

ToggleSwitch

/**
 * The `toggle-switch` component is a UI component that allows users to toggle a switch.
 * This component is used in the scheduling form to input toggle switch type inputs.
 * Use it as a replacement for checkboxes when you want to present a switch in the UI.
 */
interface ToggleSwitch {
  /**
   * The default value of the toggle switch. This is the value that is displayed when the toggle switch is rendered.
   */
  checked?: boolean;
  /**
   * The label of the toggle switch. This is displayed next to the toggle switch.
   */
  label?: string;
  /**
   * The name of the toggle switch. This is used to identify the toggle switch when submitting a form.
   */
  name?: string;
  /**
   * This event is fired when the toggle switch is toggled.
   */
  onNylasFormSwitchToggled?: (
    event: ToggleSwitchCustomEvent<{
      checked: boolean;
      name: string;
      label: string;
    }>,
  ) => void;
}

TooltipComponent

/**
 * The `tooltip-component` component is a UI component that displays a tooltip.
 */
interface TooltipComponent {
  /**
   * The position of the tooltip.
   */
  position?: 'top' | 'bottom' | 'left' | 'right';
}

TranslateIcon

interface TranslateIcon {
  height?: string;
  width?: string;
}

TrashFillIcon

interface TrashFillIcon {
  height?: string;
  width?: string;
}

TrashIcon

interface TrashIcon {
  height?: string;
  width?: string;
}

UnderlineIcon

interface UnderlineIcon {
  height?: string;
  width?: string;
}

WarningIcon

interface WarningIcon {
  height?: string;
  width?: string;
}

ZoomIcon

interface ZoomIcon {
  height?: string;
  width?: string;
}

IntrinsicElements

interface IntrinsicElements {
  'add-circle-icon': AddCircleIcon;
  'archive-icon': ArchiveIcon;
  'arrow-icon': ArrowIcon;
  'bold-icon': BoldIcon;
  'button-component': ButtonComponent;
  'calendar-agenda-fill-icon': CalendarAgendaFillIcon;
  'calendar-agenda-icon': CalendarAgendaIcon;
  'calendar-cancel-icon': CalendarCancelIcon;
  'calendar-check-icon': CalendarCheckIcon;
  'calendar-icon': CalendarIcon;
  'calendar-info-icon': CalendarInfoIcon;
  'calendar-patterns-icon': CalendarPatternsIcon;
  'checkbox-component': CheckboxComponent;
  'checkmark-circle-icon': CheckmarkCircleIcon;
  'checkmark-icon': CheckmarkIcon;
  'chevron-icon': ChevronIcon;
  'clock-icon': ClockIcon;
  'close-icon': CloseIcon;
  'copy-icon': CopyIcon;
  'delete-icon': DeleteIcon;
  'document-refresh-icon': DocumentRefreshIcon;
  'dragable-icon': DragableIcon;
  'edit-icon': EditIcon;
  'envelope-fill-icon': EnvelopeFillIcon;
  'envelope-icon': EnvelopeIcon;
  'eye-icon': EyeIcon;
  'feedback-icon': FeedbackIcon;
  'flow-icon': FlowIcon;
  'folder-icon': FolderIcon;
  'forward-icon': ForwardIcon;
  'globe-icon': GlobeIcon;
  'google-logo-icon': GoogleLogoIcon;
  'google-meet-icon': GoogleMeetIcon;
  'inbox-icon': InboxIcon;
  'info-icon': InfoIcon;
  'input-color-picker': InputColorPicker;
  'input-component': InputComponent;
  'input-dropdown': InputDropdown;
  'input-image-url': InputImageUrl;
  'italic-icon': ItalicIcon;
  'loading-icon': LoadingIcon;
  'location-icon': LocationIcon;
  'location-off-icon': LocationOffIcon;
  'microsoft-logo-icon': MicrosoftLogoIcon;
  'microsoft-teams-icon': MicrosoftTeamsIcon;
  'multi-select-dropdown': MultiSelectDropdown;
  'nylas-additional-participants': NylasAdditionalParticipants;
  'nylas-availability-picker': NylasAvailabilityPicker;
  'nylas-booked-event-card': NylasBookedEventCard;
  'nylas-booking-calendar-picker': NylasBookingCalendarPicker;
  'nylas-booking-confirmation-redirect': NylasBookingConfirmationRedirect;
  'nylas-booking-confirmation-type': NylasBookingConfirmationType;
  'nylas-booking-form': NylasBookingForm;
  'nylas-booking-form-config': NylasBookingFormConfig;
  'nylas-buffer-time': NylasBufferTime;
  'nylas-calendar-picker': NylasCalendarPicker;
  'nylas-cancel-booking-form': NylasCancelBookingForm;
  'nylas-cancellation-policy': NylasCancellationPolicy;
  'nylas-cancelled-event-card': NylasCancelledEventCard;
  'nylas-confirmation-email': NylasConfirmationEmail;
  'nylas-confirmed-event-card': NylasConfirmedEventCard;
  'nylas-connected-calendars': NylasConnectedCalendars;
  'nylas-custom-booking-flow': NylasCustomBookingFlow;
  'nylas-custom-event-slug': NylasCustomEventSlug;
  'nylas-customize-booking-settings': NylasCustomizeBookingSettings;
  'nylas-date-picker': NylasDatePicker;
  'nylas-editor-tabs': NylasEditorTabs;
  'nylas-event-description': NylasEventDescription;
  'nylas-event-duration': NylasEventDuration;
  'nylas-event-info': NylasEventInfo;
  'nylas-event-limits': NylasEventLimits;
  'nylas-event-location': NylasEventLocation;
  'nylas-event-title': NylasEventTitle;
  'nylas-feedback-form': NylasFeedbackForm;
  'nylas-form-card': NylasFormCard;
  'nylas-if-state': NylasIfState;
  'nylas-limit-future-bookings': NylasLimitFutureBookings;
  'nylas-list-configurations': NylasListConfigurations;
  'nylas-locale-switch': NylasLocaleSwitch;
  'nylas-login': NylasLogin;
  'nylas-logo': NylasLogo;
  'nylas-min-booking-notice': NylasMinBookingNotice;
  'nylas-min-cancellation-notice': NylasMinCancellationNotice;
  'nylas-notification': NylasNotification;
  'nylas-organizer-confirmation-card': NylasOrganizerConfirmationCard;
  'nylas-page-name': NylasPageName;
  'nylas-page-styling': NylasPageStyling;
  'nylas-participant-booking-calendars': NylasParticipantBookingCalendars;
  'nylas-participants-custom-availability': NylasParticipantsCustomAvailability;
  'nylas-provider': NylasProvider;
  'nylas-reminder-emails': NylasReminderEmails;
  'nylas-reminder-time': NylasReminderTime;
  'nylas-scheduler-editor': NylasSchedulerEditor;
  'nylas-scheduling': NylasScheduling;
  'nylas-scheduling-method': NylasSchedulingMethod;
  'nylas-selected-event-card': NylasSelectedEventCard;
  'nylas-time-window-picker': NylasTimeWindowPicker;
  'nylas-timeslot-interval': NylasTimeslotInterval;
  'nylas-timeslot-picker': NylasTimeslotPicker;
  'paintbrush-fill-icon': PaintbrushFillIcon;
  'paintbrush-icon': PaintbrushIcon;
  'people-icon': PeopleIcon;
  'person-clipboard-icon': PersonClipboardIcon;
  'person-icon': PersonIcon;
  'play-icon': PlayIcon;
  'plus-icon': PlusIcon;
  'radio-button-group': RadioButtonGroup;
  'refresh-icon': RefreshIcon;
  'reply-all-icon': ReplyAllIcon;
  'reply-icon': ReplyIcon;
  'search-icon': SearchIcon;
  'select-dropdown': SelectDropdown;
  'sent-icon': SentIcon;
  'spam-icon': SpamIcon;
  'star-icon': StarIcon;
  'stop-icon': StopIcon;
  'textarea-component': TextareaComponent;
  'time-period-selector': TimePeriodSelector;
  'toggle-switch': ToggleSwitch;
  'tooltip-component': TooltipComponent;
  'translate-icon': TranslateIcon;
  'trash-fill-icon': TrashFillIcon;
  'trash-icon': TrashIcon;
  'underline-icon': UnderlineIcon;
  'warning-icon': WarningIcon;
  'zoom-icon': ZoomIcon;
}

IntrinsicElements

interface IntrinsicElements {
  'add-circle-icon': LocalJSX.AddCircleIcon & JSXBase.HTMLAttributes<HTMLAddCircleIconElement>;
  'archive-icon': LocalJSX.ArchiveIcon & JSXBase.HTMLAttributes<HTMLArchiveIconElement>;
  'arrow-icon': LocalJSX.ArrowIcon & JSXBase.HTMLAttributes<HTMLArrowIconElement>;
  'bold-icon': LocalJSX.BoldIcon & JSXBase.HTMLAttributes<HTMLBoldIconElement>;
  'button-component': LocalJSX.ButtonComponent & JSXBase.HTMLAttributes<HTMLButtonComponentElement>;
  'calendar-agenda-fill-icon': LocalJSX.CalendarAgendaFillIcon & JSXBase.HTMLAttributes<HTMLCalendarAgendaFillIconElement>;
  'calendar-agenda-icon': LocalJSX.CalendarAgendaIcon & JSXBase.HTMLAttributes<HTMLCalendarAgendaIconElement>;
  'calendar-cancel-icon': LocalJSX.CalendarCancelIcon & JSXBase.HTMLAttributes<HTMLCalendarCancelIconElement>;
  'calendar-check-icon': LocalJSX.CalendarCheckIcon & JSXBase.HTMLAttributes<HTMLCalendarCheckIconElement>;
  'calendar-icon': LocalJSX.CalendarIcon & JSXBase.HTMLAttributes<HTMLCalendarIconElement>;
  'calendar-info-icon': LocalJSX.CalendarInfoIcon & JSXBase.HTMLAttributes<HTMLCalendarInfoIconElement>;
  'calendar-patterns-icon': LocalJSX.CalendarPatternsIcon & JSXBase.HTMLAttributes<HTMLCalendarPatternsIconElement>;
  /**
   * The `checkbox-component` component is a UI component that allows users to select a checkbox.
   * This component is used in the scheduling form to input checkbox type inputs.
   */
  'checkbox-component': LocalJSX.CheckboxComponent & JSXBase.HTMLAttributes<HTMLCheckboxComponentElement>;
  'checkmark-circle-icon': LocalJSX.CheckmarkCircleIcon & JSXBase.HTMLAttributes<HTMLCheckmarkCircleIconElement>;
  'checkmark-icon': LocalJSX.CheckmarkIcon & JSXBase.HTMLAttributes<HTMLCheckmarkIconElement>;
  'chevron-icon': LocalJSX.ChevronIcon & JSXBase.HTMLAttributes<HTMLChevronIconElement>;
  'clock-icon': LocalJSX.ClockIcon & JSXBase.HTMLAttributes<HTMLClockIconElement>;
  'close-icon': LocalJSX.CloseIcon & JSXBase.HTMLAttributes<HTMLCloseIconElement>;
  'copy-icon': LocalJSX.CopyIcon & JSXBase.HTMLAttributes<HTMLCopyIconElement>;
  'delete-icon': LocalJSX.DeleteIcon & JSXBase.HTMLAttributes<HTMLDeleteIconElement>;
  'document-refresh-icon': LocalJSX.DocumentRefreshIcon & JSXBase.HTMLAttributes<HTMLDocumentRefreshIconElement>;
  'dragable-icon': LocalJSX.DragableIcon & JSXBase.HTMLAttributes<HTMLDragableIconElement>;
  'edit-icon': LocalJSX.EditIcon & JSXBase.HTMLAttributes<HTMLEditIconElement>;
  'envelope-fill-icon': LocalJSX.EnvelopeFillIcon & JSXBase.HTMLAttributes<HTMLEnvelopeFillIconElement>;
  'envelope-icon': LocalJSX.EnvelopeIcon & JSXBase.HTMLAttributes<HTMLEnvelopeIconElement>;
  'eye-icon': LocalJSX.EyeIcon & JSXBase.HTMLAttributes<HTMLEyeIconElement>;
  'feedback-icon': LocalJSX.FeedbackIcon & JSXBase.HTMLAttributes<HTMLFeedbackIconElement>;
  'flow-icon': LocalJSX.FlowIcon & JSXBase.HTMLAttributes<HTMLFlowIconElement>;
  'folder-icon': LocalJSX.FolderIcon & JSXBase.HTMLAttributes<HTMLFolderIconElement>;
  'forward-icon': LocalJSX.ForwardIcon & JSXBase.HTMLAttributes<HTMLForwardIconElement>;
  'globe-icon': LocalJSX.GlobeIcon & JSXBase.HTMLAttributes<HTMLGlobeIconElement>;
  'google-logo-icon': LocalJSX.GoogleLogoIcon & JSXBase.HTMLAttributes<HTMLGoogleLogoIconElement>;
  'google-meet-icon': LocalJSX.GoogleMeetIcon & JSXBase.HTMLAttributes<HTMLGoogleMeetIconElement>;
  'inbox-icon': LocalJSX.InboxIcon & JSXBase.HTMLAttributes<HTMLInboxIconElement>;
  'info-icon': LocalJSX.InfoIcon & JSXBase.HTMLAttributes<HTMLInfoIconElement>;
  /**
   * The `input-color-picker` component is a dropdown that allows users to select an accent color from either RGB inputs or an interactive color picker and converts them to a hex value.
   * This component is used in the scheduling form to input dropdown type inputs.
   */
  'input-color-picker': LocalJSX.InputColorPicker & JSXBase.HTMLAttributes<HTMLInputColorPickerElement>;
  /**
   * The `input-component` component is a UI component that allows users to input text, email, or phone number values.
   * This component is used in the scheduling form to input text, email and phone number type inputs.
   */
  'input-component': LocalJSX.InputComponent & JSXBase.HTMLAttributes<HTMLInputComponentElement>;
  /**
   * The `input-dropdown` component is a dropdown that allows users to input an option and/or select from a list of options.
   */
  'input-dropdown': LocalJSX.InputDropdown & JSXBase.HTMLAttributes<HTMLInputDropdownElement>;
  /**
   * The `nylas-image-input` component is a UI component that allows users input an image URL and see a preview of the image.
   */
  'input-image-url': LocalJSX.InputImageUrl & JSXBase.HTMLAttributes<HTMLInputImageUrlElement>;
  'italic-icon': LocalJSX.ItalicIcon & JSXBase.HTMLAttributes<HTMLItalicIconElement>;
  'loading-icon': LocalJSX.LoadingIcon & JSXBase.HTMLAttributes<HTMLLoadingIconElement>;
  'location-icon': LocalJSX.LocationIcon & JSXBase.HTMLAttributes<HTMLLocationIconElement>;
  'location-off-icon': LocalJSX.LocationOffIcon & JSXBase.HTMLAttributes<HTMLLocationOffIconElement>;
  'microsoft-logo-icon': LocalJSX.MicrosoftLogoIcon & JSXBase.HTMLAttributes<HTMLMicrosoftLogoIconElement>;
  'microsoft-teams-icon': LocalJSX.MicrosoftTeamsIcon & JSXBase.HTMLAttributes<HTMLMicrosoftTeamsIconElement>;
  'multi-select-dropdown': LocalJSX.MultiSelectDropdown & JSXBase.HTMLAttributes<HTMLMultiSelectDropdownElement>;
  /**
   * The `nylas-additional-participants` component is a form input for adding additional participants to an event.
   */
  'nylas-additional-participants': LocalJSX.NylasAdditionalParticipants & JSXBase.HTMLAttributes<HTMLNylasAdditionalParticipantsElement>;
  /**
   * The `nylas-availability-picker` component is a form input for selecting availability (open hours).
   */
  'nylas-availability-picker': LocalJSX.NylasAvailabilityPicker & JSXBase.HTMLAttributes<HTMLNylasAvailabilityPickerElement>;
  /**
   * The `nylas-booked-event-card` component is a UI component that displays the booked event card.
   */
  'nylas-booked-event-card': LocalJSX.NylasBookedEventCard & JSXBase.HTMLAttributes<HTMLNylasBookedEventCardElement>;
  /**
   * The `nylas-booking-calendar-picker` component is a UI component that displays the booking calendar picker.
   */
  'nylas-booking-calendar-picker': LocalJSX.NylasBookingCalendarPicker & JSXBase.HTMLAttributes<HTMLNylasBookingCalendarPickerElement>;
  /**
   * The `nylas-booking-confirmation-redirect` component is a UI component that allows the user to choose a custom redirect URL after a booking is confirmed.
   */
  'nylas-booking-confirmation-redirect': LocalJSX.NylasBookingConfirmationRedirect & JSXBase.HTMLAttributes<HTMLNylasBookingConfirmationRedirectElement>;
  /**
   * The `nylas-booking-confirmation-type` component is a UI component that allows the user to choose a custom redirect URL after a booking is confirmed.
   */
  'nylas-booking-confirmation-type': LocalJSX.NylasBookingConfirmationType & JSXBase.HTMLAttributes<HTMLNylasBookingConfirmationTypeElement>;
  /**
   * The `nylas-booking-form` component is a UI component that allows users to book an event.
   * The booking form component.
   */
  'nylas-booking-form': LocalJSX.NylasBookingForm & JSXBase.HTMLAttributes<HTMLNylasBookingFormElement>;
  /**
   * The `nylas-booking-form-config` component is a form input for adding additional fields to the booking form.
   */
  'nylas-booking-form-config': LocalJSX.NylasBookingFormConfig & JSXBase.HTMLAttributes<HTMLNylasBookingFormConfigElement>;
  /**
   * The `nylas-buffer-time` component is a UI component that allows users to set buffer time before and after an event.
   */
  'nylas-buffer-time': LocalJSX.NylasBufferTime & JSXBase.HTMLAttributes<HTMLNylasBufferTimeElement>;
  /**
   * The `nylas-calendar-picker` component is a form input for selecting calendars to check availability.
   */
  'nylas-calendar-picker': LocalJSX.NylasCalendarPicker & JSXBase.HTMLAttributes<HTMLNylasCalendarPickerElement>;
  /**
   * The `nylas-cancel-booking-form` component is a UI component that allows users to cancel a booking (DELETE request).
   * This component is also used to reject a booking (PUT request) by the organizer, if the prop `rejectBookingId` is provided.
   */
  'nylas-cancel-booking-form': LocalJSX.NylasCancelBookingForm & JSXBase.HTMLAttributes<HTMLNylasCancelBookingFormElement>;
  /**
   * The `nylas-cancellation-policy` component is a form input for the cancellation policy message of an event.
   */
  'nylas-cancellation-policy': LocalJSX.NylasCancellationPolicy & JSXBase.HTMLAttributes<HTMLNylasCancellationPolicyElement>;
  /**
   * The `nylas-cancelled-event-card` component is a UI component that displays the cancelled event card.
   */
  'nylas-cancelled-event-card': LocalJSX.NylasCancelledEventCard & JSXBase.HTMLAttributes<HTMLNylasCancelledEventCardElement>;
  /**
   * The `nylas-confirmation-email` component is a UI component that allows users to set buffer time before and after an event.
   */
  'nylas-confirmation-email': LocalJSX.NylasConfirmationEmail & JSXBase.HTMLAttributes<HTMLNylasConfirmationEmailElement>;
  /**
   * The `nylas-confirmed-event-card` component is a UI component that displays the confirmed event card.
   */
  'nylas-confirmed-event-card': LocalJSX.NylasConfirmedEventCard & JSXBase.HTMLAttributes<HTMLNylasConfirmedEventCardElement>;
  /**
   * The `nylas-connected-calendars` component is a form input for selecting calendars to check availability for participants.
   */
  'nylas-connected-calendars': LocalJSX.NylasConnectedCalendars & JSXBase.HTMLAttributes<HTMLNylasConnectedCalendarsElement>;
  /**
   * The `nylas-custom-booking-flow` component is an input form for booking type (automatically or manually accept bookings) and confirmation redirect URL (default or custom).
   * This component is a container for the `nylas-booking-confirmation-type`, `nylas-booking-confirmation-redirect` components.
   * ```html
   * <nylas-custom-booking-flow>
   *   <div slot="inputs">
   *     <nylas-booking-confirmation-type></nylas-booking-confirmation-type>
   *     <nylas-booking-confirmation-redirect></nylas-booking-confirmation-redirect>
   *   </div>
   * </nylas-custom-booking-flow>
   * ```
   */
  'nylas-custom-booking-flow': LocalJSX.NylasCustomBookingFlow & JSXBase.HTMLAttributes<HTMLNylasCustomBookingFlowElement>;
  /**
   * The `nylas-custom-event-slug` component is a UI component that allows users to add a custom URL slug for their event link.
   */
  'nylas-custom-event-slug': LocalJSX.NylasCustomEventSlug & JSXBase.HTMLAttributes<HTMLNylasCustomEventSlugElement>;
  /**
   * The `nylas-customize-booking-settings` component is a UI component that displays the booking calendar picker.
   */
  'nylas-customize-booking-settings': LocalJSX.NylasCustomizeBookingSettings & JSXBase.HTMLAttributes<HTMLNylasCustomizeBookingSettingsElement>;
  /**
   * The `nylas-date-picker` component is a UI component that allows users to select a date.
   */
  'nylas-date-picker': LocalJSX.NylasDatePicker & JSXBase.HTMLAttributes<HTMLNylasDatePickerElement>;
  /**
   * The nylas-editor-tabs component provides the user interface for managing editor tabs within the scheduler editor.
   * It is primarily used to control the edit mode of the scheduler editor, and it is rendered automatically by the
   * parent component, nylas-scheduler-editor, during editing. There is no need to interact with this component directly
   * or set any props manually, as its behavior is fully managed by the parent component.
   */
  'nylas-editor-tabs': LocalJSX.NylasEditorTabs & JSXBase.HTMLAttributes<HTMLNylasEditorTabsElement>;
  /**
   * The `nylas-event-description` component is a form input for the description of an event.
   */
  'nylas-event-description': LocalJSX.NylasEventDescription & JSXBase.HTMLAttributes<HTMLNylasEventDescriptionElement>;
  /**
   * The `nylas-event-duration` component is a form input for the duration of an event.
   */
  'nylas-event-duration': LocalJSX.NylasEventDuration & JSXBase.HTMLAttributes<HTMLNylasEventDurationElement>;
  /**
   * The `nylas-event-info` component is an input form for event information such as title, description, duration, location.
   * This component is a container for the `nylas-event-title`, `nylas-event-description`, `nylas-event-duration`, and `nylas-event-location` components.
   * ```html
   * <nylas-event-info>
   *   <div slot="inputs">
   *     <nylas-event-title></nylas-event-title>
   *     <nylas-event-description></nylas-event-description>
   *     <nylas-event-duration></nylas-event-duration>
   *     <nylas-lcation-component></nylas-event-location>
   *   </div>
   * </nylas-event-info>
   * ```
   */
  'nylas-event-info': LocalJSX.NylasEventInfo & JSXBase.HTMLAttributes<HTMLNylasEventInfoElement>;
  /**
   * The `nylas-event-limits` component is an input form for event limits, such as the number of available days in the future and
   * the minimum period of notice that a guest must provide to cancel a booking.
   * This component is a container for the `nylas-limit-future-bookings` and `nylas-min-cancellation-notice` components.
   * ```html
   * <nylas-event-limits>
   *   <div slot="inputs">
   *     <nylas-limit-future-bookings></nylas-limit-future-bookings>
   *     <nylas-min-cancellation-notice></nylas-min-cancellation-notice>
   *   </div>
   * </nylas-event-limits>
   * ```
   */
  'nylas-event-limits': LocalJSX.NylasEventLimits & JSXBase.HTMLAttributes<HTMLNylasEventLimitsElement>;
  /**
   * The `nylas-event-location` component is a form input for the location of an event.
   */
  'nylas-event-location': LocalJSX.NylasEventLocation & JSXBase.HTMLAttributes<HTMLNylasEventLocationElement>;
  /**
   * The `nylas-event-title` component is a form input for the title of an event.
   */
  'nylas-event-title': LocalJSX.NylasEventTitle & JSXBase.HTMLAttributes<HTMLNylasEventTitleElement>;
  /**
   * The `nylas-feedback-form` component is a UI component that displays the booked event card.
   */
  'nylas-feedback-form': LocalJSX.NylasFeedbackForm & JSXBase.HTMLAttributes<HTMLNylasFeedbackFormElement>;
  /**
   * The `nylas-form-card` component is a card that can be used to display a form. It is a simple wrapper around a card with a header and content area.
   */
  'nylas-form-card': LocalJSX.NylasFormCard & JSXBase.HTMLAttributes<HTMLNylasFormCardElement>;
  'nylas-if-state': LocalJSX.NylasIfState & JSXBase.HTMLAttributes<HTMLNylasIfStateElement>;
  /**
   * The `nylas-limit-future-bookings` component is a form input for the number of days in the future a guest is allowed to book an event.
   */
  'nylas-limit-future-bookings': LocalJSX.NylasLimitFutureBookings & JSXBase.HTMLAttributes<HTMLNylasLimitFutureBookingsElement>;
  /**
   * The `nylas-list-configurations` component displays a list of scheduling pages.
   */
  'nylas-list-configurations': LocalJSX.NylasListConfigurations & JSXBase.HTMLAttributes<HTMLNylasListConfigurationsElement>;
  /**
   * The `nylas-locale-switch` component is a UI component that allows users to select a timezone and language.
   */
  'nylas-locale-switch': LocalJSX.NylasLocaleSwitch & JSXBase.HTMLAttributes<HTMLNylasLocaleSwitchElement>;
  'nylas-login': LocalJSX.NylasLogin & JSXBase.HTMLAttributes<HTMLNylasLoginElement>;
  'nylas-logo': LocalJSX.NylasLogo & JSXBase.HTMLAttributes<HTMLNylasLogoElement>;
  /**
   * The `nylas-min-booking-notice` component is a form input for the minimum period of notice (minutes) that a guest must
   * provide to book an event.
   */
  'nylas-min-booking-notice': LocalJSX.NylasMinBookingNotice & JSXBase.HTMLAttributes<HTMLNylasMinBookingNoticeElement>;
  /**
   * The `nylas-min-cancellation-notice` component is a form input for the minimum period of notice (minutes) that a guest must
   * provide to cancel a booked event.
   */
  'nylas-min-cancellation-notice': LocalJSX.NylasMinCancellationNotice & JSXBase.HTMLAttributes<HTMLNylasMinCancellationNoticeElement>;
  /**
   * The `nylas-notification` component is a UI component that displays notifications.
   */
  'nylas-notification': LocalJSX.NylasNotification & JSXBase.HTMLAttributes<HTMLNylasNotificationElement>;
  /**
   * The `nylas-organizer-confirmation-card` component is a UI component that displays the booked event card.
   */
  'nylas-organizer-confirmation-card': LocalJSX.NylasOrganizerConfirmationCard & JSXBase.HTMLAttributes<HTMLNylasOrganizerConfirmationCardElement>;
  /**
   * The `nylas-page-name` component is a UI component that allows users to add a custom page name which will appear in the top left corner of the date picker.
   */
  'nylas-page-name': LocalJSX.NylasPageName & JSXBase.HTMLAttributes<HTMLNylasPageNameElement>;
  /**
   * The `nylas-page-styling` component is a UI component that allows users to customize the styling of the scheduling page.
   * To use this component, pass a slot `custom-page-style-inputs` to the `nylas-scheduler-editor` component with the input
   * fields you want to display. The component will automatically update the appearance object when the input fields are changed.
   * Ensure that the input fields have the `name` attribute set to the key in the appearance object.
   * If you want to style the Nylas hosted scheduler page, you can use this component to customize the appearance of the page.
   * The fields that can be customized in the Nylas hosted scheduler page are:
   * - Primary color: (name: color)
   * - Company logo: (name: company_logo_url)
   * - Submit button label: (name: submit_button_label)
   * - Thank you message: (name: thank_you_message)
   * This component cannot be used as an independent component. It must be used within the `nylas-scheduler-editor` component.
   */
  'nylas-page-styling': LocalJSX.NylasPageStyling & JSXBase.HTMLAttributes<HTMLNylasPageStylingElement>;
  /**
   * The `nylas-participant-booking-calendars` component is a form input for selecting calendars to check availability for participants.
   */
  'nylas-participant-booking-calendars': LocalJSX.NylasParticipantBookingCalendars & JSXBase.HTMLAttributes<HTMLNylasParticipantBookingCalendarsElement>;
  /**
   * The `nylas-participants-custom-availability` component is a form input for setting custom availability for participants.
   */
  'nylas-participants-custom-availability': LocalJSX.NylasParticipantsCustomAvailability & JSXBase.HTMLAttributes<HTMLNylasParticipantsCustomAvailabilityElement>;
  /**
   * The Nylas Provider component.
   * This component is used to manage the Nylas Provider.
   * It is used to manage the Nylas Auth instance, the Nylas Connector instance,
   * and the Nylas Store instance.
   */
  'nylas-provider': LocalJSX.NylasProvider & JSXBase.HTMLAttributes<HTMLNylasProviderElement>;
  /**
   * The `nylas-reminder-emails` component is a UI component that allows users to set buffer time before and after an event.
   */
  'nylas-reminder-emails': LocalJSX.NylasReminderEmails & JSXBase.HTMLAttributes<HTMLNylasReminderEmailsElement>;
  /**
   * The `nylas-reminder-time` component is a form input for the reminder time before an event.
   */
  'nylas-reminder-time': LocalJSX.NylasReminderTime & JSXBase.HTMLAttributes<HTMLNylasReminderTimeElement>;
  /**
   * The `nylas-scheduler-editor` component is a form that allows users to configure the settings for the Nylas Scheduler.
   */
  'nylas-scheduler-editor': LocalJSX.NylasSchedulerEditor & JSXBase.HTMLAttributes<HTMLNylasSchedulerEditorElement>;
  /**
   * The `nylas-scheduling` component is used to display the Nylas Scheduling UI.
   */
  'nylas-scheduling': LocalJSX.NylasScheduling & JSXBase.HTMLAttributes<HTMLNylasSchedulingElement>;
  /**
   * The `nylas-scheduling-method` component is a UI component that displays the booking calendar picker.
   */
  'nylas-scheduling-method': LocalJSX.NylasSchedulingMethod & JSXBase.HTMLAttributes<HTMLNylasSchedulingMethodElement>;
  /**
   * The `nylas-selected-event-card` component is a UI component that displays the selected event card.
   */
  'nylas-selected-event-card': LocalJSX.NylasSelectedEventCard & JSXBase.HTMLAttributes<HTMLNylasSelectedEventCardElement>;
  /**
   * The `nylas-time-window-picker` component is a time picker that can be used to select a time.
   */
  'nylas-time-window-picker': LocalJSX.NylasTimeWindowPicker & JSXBase.HTMLAttributes<HTMLNylasTimeWindowPickerElement>;
  /**
   * The `nylas-timeslot-interval` component allows users to set their time slot interval preferences.
   * This component provides an option to set both `interval_minutes` and `round_to` in the configuration.
   */
  'nylas-timeslot-interval': LocalJSX.NylasTimeslotInterval & JSXBase.HTMLAttributes<HTMLNylasTimeslotIntervalElement>;
  /**
   * The `nylas-timeslot-picker` component is a UI component that allows users to select a timeslot from a list of available timeslots.
   */
  'nylas-timeslot-picker': LocalJSX.NylasTimeslotPicker & JSXBase.HTMLAttributes<HTMLNylasTimeslotPickerElement>;
  'paintbrush-fill-icon': LocalJSX.PaintbrushFillIcon & JSXBase.HTMLAttributes<HTMLPaintbrushFillIconElement>;
  'paintbrush-icon': LocalJSX.PaintbrushIcon & JSXBase.HTMLAttributes<HTMLPaintbrushIconElement>;
  'people-icon': LocalJSX.PeopleIcon & JSXBase.HTMLAttributes<HTMLPeopleIconElement>;
  'person-clipboard-icon': LocalJSX.PersonClipboardIcon & JSXBase.HTMLAttributes<HTMLPersonClipboardIconElement>;
  'person-icon': LocalJSX.PersonIcon & JSXBase.HTMLAttributes<HTMLPersonIconElement>;
  'play-icon': LocalJSX.PlayIcon & JSXBase.HTMLAttributes<HTMLPlayIconElement>;
  'plus-icon': LocalJSX.PlusIcon & JSXBase.HTMLAttributes<HTMLPlusIconElement>;
  /**
   * The `radio-button-group` component is a UI component that allows users to select a single option from a list of options.
   * This component is used in the scheduling form to input radio button type inputs.
   */
  'radio-button-group': LocalJSX.RadioButtonGroup & JSXBase.HTMLAttributes<HTMLRadioButtonGroupElement>;
  'refresh-icon': LocalJSX.RefreshIcon & JSXBase.HTMLAttributes<HTMLRefreshIconElement>;
  'reply-all-icon': LocalJSX.ReplyAllIcon & JSXBase.HTMLAttributes<HTMLReplyAllIconElement>;
  'reply-icon': LocalJSX.ReplyIcon & JSXBase.HTMLAttributes<HTMLReplyIconElement>;
  'search-icon': LocalJSX.SearchIcon & JSXBase.HTMLAttributes<HTMLSearchIconElement>;
  /**
   * The `select-dropdown` component is a dropdown that allows users to select an option from a list of options.
   * This component is used in the scheduling form to input dropdown type inputs.
   */
  'select-dropdown': LocalJSX.SelectDropdown & JSXBase.HTMLAttributes<HTMLSelectDropdownElement>;
  'sent-icon': LocalJSX.SentIcon & JSXBase.HTMLAttributes<HTMLSentIconElement>;
  'spam-icon': LocalJSX.SpamIcon & JSXBase.HTMLAttributes<HTMLSpamIconElement>;
  'star-icon': LocalJSX.StarIcon & JSXBase.HTMLAttributes<HTMLStarIconElement>;
  'stop-icon': LocalJSX.StopIcon & JSXBase.HTMLAttributes<HTMLStopIconElement>;
  /**
   * `textarea-component` allows users to enter multiline text.
   * It is ideal for larger inputs like comments or messages in a form.
   * This component is used in the scheduling form to input multiline text.
   */
  'textarea-component': LocalJSX.TextareaComponent & JSXBase.HTMLAttributes<HTMLTextareaComponentElement>;
  'time-period-selector': LocalJSX.TimePeriodSelector & JSXBase.HTMLAttributes<HTMLTimePeriodSelectorElement>;
  /**
   * The `toggle-switch` component is a UI component that allows users to toggle a switch.
   * This component is used in the scheduling form to input toggle switch type inputs.
   * Use it as a replacement for checkboxes when you want to present a switch in the UI.
   */
  'toggle-switch': LocalJSX.ToggleSwitch & JSXBase.HTMLAttributes<HTMLToggleSwitchElement>;
  /**
   * The `tooltip-component` component is a UI component that displays a tooltip.
   */
  'tooltip-component': LocalJSX.TooltipComponent & JSXBase.HTMLAttributes<HTMLTooltipComponentElement>;
  'translate-icon': LocalJSX.TranslateIcon & JSXBase.HTMLAttributes<HTMLTranslateIconElement>;
  'trash-fill-icon': LocalJSX.TrashFillIcon & JSXBase.HTMLAttributes<HTMLTrashFillIconElement>;
  'trash-icon': LocalJSX.TrashIcon & JSXBase.HTMLAttributes<HTMLTrashIconElement>;
  'underline-icon': LocalJSX.UnderlineIcon & JSXBase.HTMLAttributes<HTMLUnderlineIconElement>;
  'warning-icon': LocalJSX.WarningIcon & JSXBase.HTMLAttributes<HTMLWarningIconElement>;
  'zoom-icon': LocalJSX.ZoomIcon & JSXBase.HTMLAttributes<HTMLZoomIconElement>;
}

BaseNylasConnectorInterface

export interface BaseNylasConnectorInterface {
  resetStores(): void;
  init(): void;
}

NylasAuthConnectorInterface

export interface NylasAuthConnectorInterface extends BaseNylasConnectorInterface {
  nylasAuth: NylasAuthType;
  nylasAuthStore: NylasAuthStoreType;
  get authStore(): NylasAuthStoreType;
  get auth(): NylasAuthConnector;
  logout(): Promise<void>;
}

NylasSchedulerConnectorInterface

export interface NylasSchedulerConnectorInterface extends BaseNylasConnectorInterface {
  schedulerAPIURL: string;
  nylasSchedulerStore: NylasSchedulerStoreType;
  get schedulerStore(): NylasSchedulerStoreType;
  get scheduler(): NylaSchedulerAPIConnector;
}

NylasSchedulerConfigConnectorInterface

export interface NylasSchedulerConfigConnectorInterface extends BaseNylasConnectorInterface {
  nylasSchedulerConfigStore: NylasSchedulerConfigStoreType;
  get schedulerConfigStore(): NylasSchedulerConfigStoreType;
  get schedulerConfig(): NylasSchedulerConfigAPIConnector;
}

NylasConnectorInterface

export interface NylasConnectorInterface extends NylasAuthConnectorInterface, NylasSchedulerConnectorInterface {}

PublicMethods

export type PublicMethods<T> = {
  [K in keyof T]: T[K] extends Function ? (string extends K ? never : K) : never;
}[keyof T];

NylasConnectorPublicMethods

export type NylasConnectorPublicMethods = PublicMethods<NylasConnector>;

NylasSchedulerConfigConnectorOptions

type NylasSchedulerConfigConnectorOptions = {
  nylasSchedulerConfigStore: NylasSchedulerConfigStoreType;
  nylasApiRequest?: NylasApiRequest;
};

PublicMethods

export type PublicMethods<T> = {
  [K in keyof T]: T[K] extends Function ? (string extends K ? never : K) : never;
}[keyof T];

NylasSchedulerConfigConnectorPublicMethods

export type NylasSchedulerConfigConnectorPublicMethods = PublicMethods<NylasSchedulerConfigConnector>;

ErrorDetails

export interface ErrorDetails {
  title: string;
  message: string;
  category: ErrorCategory;
}

NylasSchedulerConnectorOptions

type NylasSchedulerConnectorOptions = {
  schedulerAPIURL: string;
  nylasSchedulerStore: NylasSchedulerStoreType;
  sessionId?: string;
  configId?: string;
  slug?: string;
  clientId?: string;
};

PublicMethods

export type PublicMethods<T> = {
  [K in keyof T]: T[K] extends Function ? (string extends K ? never : K) : never;
}[keyof T];

NylasSchedulerConnectorPublicMethods

export type NylasSchedulerConnectorPublicMethods = PublicMethods<NylasSchedulerConnector>;

NylasSchedulerConfigAPIConnectorOptions

type NylasSchedulerConfigAPIConnectorOptions = {
  nylasApiRequest?: NylasApiRequest;
  nylasSchedulerConfigStore: NylasSchedulerConfigStoreType;
};

NylasSchedulerAPIConnectorOptions

type NylasSchedulerAPIConnectorOptions = {
  schedulerAPIURL: string;
  schedulerStore: NylasSchedulerStoreType;
  sessionId?: string;
  configId?: string;
  slug?: string;
  clientId?: string;
};

RoutePath

export type RoutePath = string;

RouteParams

// RouteParams is a type that takes a RoutePath and returns an object with the route params as keys
// and the value of the route param as the value of the key
// Example:
//   RoutePath: '/:mailboxId/:messageId'
export type RouteParams<Path extends string> = Path extends `${infer _Start}:${infer Param}/${infer Rest}`
  ? { [key in Param | keyof RouteParams<Rest>]: string }
  : Path extends `${infer _Start}:${infer Param}`
    ? { [key in Param]: string }
    : {};

RouteListener

export type RouteListener<Path extends string> = (route: Path, path: string, routeParams: RouteParams<Path>) => Promise<void>;

RouterInterface

export interface RouterInterface {
  init(): void;
  addRouteChangeListener<Path extends RoutePath>(route: Path, listener: RouteListener<Path>): void;
  setRoute(route: string): void;
  navigate(route: string, shallow: boolean): void;
  getRoute(): string;
  getBasePath(): string;
  matchRoute(route: string, path: string): boolean;
}

NylasAuthSessionStoreState

export interface NylasAuthSessionStoreState {
  isAuthenticated: boolean;
  tokenInfo: IDToken | null;
  state: DataState;
}

NylasAuthSessionStoreType

export type NylasAuthSessionStoreType = ReturnType<typeof CreateNylasAuthSessionStore>;

NylasAuthStoreState

export interface NylasAuthStoreState {
  isAuthenticated: boolean;
  tokenInfo: TokenInfo | null;
  state: DataState;
}

NylasAuthStoreType

export type NylasAuthStoreType = ReturnType<typeof CreateNylasAuthStore>;

RecursivePartial

type RecursivePartial<T> = {
  [P in keyof T]?: T[P] extends (infer U)[] ? RecursivePartial<U>[] : T[P] extends object | undefined ? RecursivePartial<T[P]> : T[P];
};

NylasSchedulerConfigStoreState

export interface NylasSchedulerConfigStoreState {
  /**
   * The selected configuration.
   * This is the configuration that is currently selected, use it to populate default values for new configurations.
   */
  selectedConfiguration: RecursivePartial<Configuration>;
  /**
   * The list of configurations.
   * This is the list of configurations that the user has created.
   */
  configurations: Configuration[];
  /**
   * The list of calendars.
   * This is the list of calendars that the user has access to.
   */
  calendars: Calendar[];
  /**
   * The current user.
   * This is the user that is currently logged in.
   */
  currentUser: User | null;
  /**
   * The current action.
   * This is the current action that the user is performing.
   */
  action: 'create' | 'edit' | null;
  /**
   * The additional participants.
   */
  additionalParticipants: AdditionalParticipant[];
  /**
   * The next cursor for list configurations.
   */
  listConfigurationsNextCursor: string | null;
  /**
   * The conference providers.
   */
  conferenceProviders?: Record<'microsoft' | 'zoom' | 'google', string>;
  /**
   * The flag to determine if the slug is required
   */
  requiresSlug: boolean;
}

NylasSchedulerConfigStoreType

export type NylasSchedulerConfigStoreType = ReturnType<typeof CreateNylasSchedulerConfigStore>;

CreateNylasSchedulerConfigStoreReturnType

export type CreateNylasSchedulerConfigStoreReturnType = ObservableMap<NylasSchedulerConfigStoreState> & {
  /**
   * Reset the selected configuration to the default state.
   * This is used to reset the selected configuration to the default state instead of setting it to an empty object.
   */
  resetSelectedConfiguration: () => void;
};

AvailabilityTimeslot

export type AvailabilityTimeslot = {
  emails: string[];
  start_time: Date;
  end_time: Date;
};

LoadingState

export type LoadingState = {
  api: 'availability' | 'createBooking' | 'cancelBooking' | 'rescheduleBooking';
};

ConfigSettings

export type ConfigSettings = {
  configuration_id: string;
  scheduler: {
    available_days_in_future: number;
    min_cancellation_notice: number;
    min_booking_notice: number;
    rescheduling_url?: string;
    cancellation_url?: string;
    cancellation_policy?: string;
    hide_additional_guests?: boolean;
    hide_cancellation_options?: boolean;
    hide_rescheduling_options?: boolean;
    additional_fields?: Record<string, AdditionalFields>;
    confirmation_redirect_url?: string;
    organizer_confirmation_url?: string;
  };
  organizer: {
    name: string;
    email: string;
  };
  slug: string;
  appearance: Appearance;
  booking_type: string;
  name: string;
};

NylasSchedulerStoreState

export interface NylasSchedulerStoreState {
  selectedDate: Date | null;
  selectedLanguage: string;
  selectedTimezone: string;
  selectedTimeslot: Timeslot | null;
  availabilityOrderEmails: string[];
  showBookingForm: boolean;
  selectableDates: Date[] | null;
  eventDuration: number;
  availability: AvailabilityTimeslot[];
  state: DataState;
  eventInfo: NylasEvent | null;
  cancelledEventInfo: Partial<NylasEvent> | null;
  reschedulingEventInfo?: NylasEvent;
  confirmedEventInfo?: NylasEvent;
  bookingInfo?: NylasSchedulerBookingData;
  rescheduleBookingId?: string;
  cancelBookingId?: string;
  isLoading: boolean;
  nylasBranding?: boolean;
  configSettings?: ConfigSettings;
  organizerConfirmationBookingId?: string;
  rejectBookingId?: string;
  organizerConfirmationSalt?: string;
}

NylasSchedulerStoreType

export type NylasSchedulerStoreType = ReturnType<typeof CreateNylasSchedulerStore>;

NylasResponse

export interface NylasResponse<Data = any> {
  request_id: string;
  data?: Data;
  error?: {
    message: string;
    type: string;
  };
}

OpenHours

// Avaliability
export interface OpenHours {
  days: number[];
  exDates: string[];
  timezone: string;
  start: string;
  end: string;
}

MeetingBuffer

export interface MeetingBuffer {
  before: number;
  after: number;
}

UpdateConfiguration

// Scheduling
export interface UpdateConfiguration extends Omit<Configuration, 'id'> {}

ParticipantAvailability

export interface ParticipantAvailability {
  calendar_ids: string[];
  open_hours?: OpenHours[];
}

NylasSchedulerBookingParticipant

export type NylasSchedulerBookingParticipant = { name: string; email: string };

NylasSchedulerBookingData

export type NylasSchedulerBookingData = {
  primaryParticipant: NylasSchedulerBookingParticipant;
  startTime?: Date;
  endTime?: Date;
  timezone?: string;
  guests?: NylasSchedulerBookingParticipant[];
  additionalFields?: Record<
    string,
    {
      value: string;
      type: string;
    }
  >;
};

OpenHour

export type OpenHour = {
  days: number[]; // [1, 2, 3, 4, 5]
  start: string; // "09:00"
  end: string; // "17:00"
  timezone: string; // "America/Los_Angeles"
};

Timeslot

export type Timeslot = {
  start_time: Date;
  end_time: Date;
  emails?: string[];
};

ThemeConfig

export type ThemeConfig = Partial<{
  '--nylas-primary': string;
  '--nylas-info': string;
  '--nylas-success': string;
  '--nylas-warning': string;
  '--nylas-error': string;
  '--nylas-error-pressed': string;
  '--nylas-base-0': string;
  '--nylas-base-25': string;
  '--nylas-base-50': string;
  '--nylas-base-100': string;
  '--nylas-base-200': string;
  '--nylas-base-300': string;
  '--nylas-base-400': string;
  '--nylas-base-500': string;
  '--nylas-base-600': string;
  '--nylas-base-700': string;
  '--nylas-base-800': string;
  '--nylas-base-900': string;
  '--nylas-base-950': string;
  '--nylas-font-family': string;
  '--nylas-font-size': string;
  '--nylas-border-radius': string;
  '--nylas-border-radius-2x': string;
  '--nylas-border-radius-3x': string;
}>;

Notification

export type Notification = {
  id: string;
  type: NotificationType;
  title: string;
  code?: number;
  category: string;
  description?: string;
  ttl?: number | 'none';
};

BookingType

export type BookingType = 'booking' | 'organizer-confirmation' | 'custom-confirmation';

AvailabilityMethod

export type AvailabilityMethod = 'max-fairness' | 'max-availability' | 'collective';

ConferenceProvider

export type ConferenceProvider = 'GoogleMeetConferenceProvider' | 'MicrosoftTeamsConferenceProvider' | 'ZoomConferenceProvider' | 'OnlineMeetingProviderMicrosoftTeams';

ReminderMethod

export type ReminderMethod = 'email' | 'webhook';

Rules

export interface Rules {
  availability_method: AvailabilityMethod;
  buffer: MeetingBuffer;
  default_open_hours: OpenHours[];
  round_robin_group_id: string;
}

ConferenceDetail

export interface ConferenceDetail {
  meeting_code?: string; // zoom, GTM, microsoft teams
  password?: string; // zoom, webex
  url?: string; // zoom, webex, GTM, meet, microsoft teams
  pin?: string; // webex, meet
  phone?: string[]; // GTM, meet, microsoft teams
}

Conference

export interface Conference {
  provider?: ConferenceProvider;
  details?: ConferenceDetail;
  autocreate?: { [key: string]: any };
}

ParticipantBooking

export interface ParticipantBooking {
  calendar_id: string;
}

Participant

export interface Participant {
  email: string;
  name?: string;
  is_organizer?: boolean;
  availability?: ParticipantAvailability;
  booking?: ParticipantBooking;
}

EventReminder

export interface EventReminder {
  type: ReminderMethod;
  minutes_before_event: number;
  recipient?: string;
  email_subject?: string;
}

Availability

export interface Availability {
  duration_minutes: number;
  interval_minutes?: number;
  round_to?: number;
  availability_rules?: Rules;
}

EventBooking

export interface EventBooking {
  title: string;
  description?: string;
  location?: string;
  timezone?: string;
  booking_type: BookingType;
  conferencing?: Conference;
  hide_participants?: boolean;
  disable_emails?: boolean;
  reminders?: EventReminder[];
}

Appearance

export interface Appearance {
  color?: string;
  submit_button_label?: string;
  thank_you_message?: string;
  company_logo_url?: string;
}

Scheduler

export interface Scheduler {
  available_days_in_future: number;
  min_cancellation_notice: number;
  min_booking_notice: number;
  rescheduling_url?: string;
  cancellation_url?: string;
  organizer_confirmation_url?: string;
  cancellation_policy?: string;
  hide_additional_guests?: boolean;
  hide_cancellation_options?: boolean;
  hide_rescheduling_options?: boolean;
  additional_fields?: Record<string, AdditionalFields>;
  email_template?: EmailTemplate;
  confirmation_redirect_url?: string;
}

AdditionalFields

export interface AdditionalFields {
  type: string;
  required: boolean;
  order: number;
  options?: string[];
  label?: string;
  default?: string;
}

EmailTemplate

export interface EmailTemplate {
  logo: string;
  booking_confirmed: BookingConfirmed;
}

BookingConfirmed

export interface BookingConfirmed {
  title: string;
  body: string;
}

Configuration

export interface Configuration {
  id: string;
  version: string;
  requires_session_auth?: boolean;
  participants: Participant[];
  availability: Availability;
  event_booking: EventBooking;
  scheduler: Scheduler;
  slug: string;
  appearance: Appearance;
  name: string;
}

Creator

export interface Creator {
  name: string;
  email: string;
}

AdditionalParticipant

export interface AdditionalParticipant {
  name: string;
  email: string;
  calendars: {
    id: string;
    name: string;
    object?: 'calendar';
    is_primary?: boolean;
    is_owned_by_user?: boolean;
    read_only?: boolean;
    timezone?: string;
  }[];
}