import { CalendarEvent } from '../../../../../helpers/calendar/calendar-event';
import { Nullable } from '../../../../../types/general';
/** This code snippet is defining an abstract class named `VegaCalendarBaseEventLayoutCell`. Here's a breakdown of what it does: */
export declare abstract class VegaCalendarBaseEventLayoutCell {
  protected abstract slots: Nullable<CalendarEvent>[];
  /**
   * This function retrieves a calendar event based on the slot index provided.
   *
   * @param {number} index - The `index` parameter is a number that represents the position of a slot in an array.
   * @returns {Nullable<CalendarEvent>} The `getEventBySlotIndex` method is returning a `CalendarEvent` object from the `slots` array at the specified `index`.
   */
  getEventBySlotIndex(index: number): Nullable<CalendarEvent>;
  /**
   * The function `getEventStartIndex` returns the index of a given `CalendarEvent` object within an array of `CalendarEvent` objects.
   *
   * @param {CalendarEvent} eventItem - CalendarEvent
   * @returns {number} The function `getEventStartIndex` returns the index of the `eventItem` within the `slots` array.
   */
  getEventStartIndex(eventItem: CalendarEvent): number;
  /**
   * This TypeScript function calculates the end index of a calendar event within a specified range of slots.
   *
   * @param {CalendarEvent} eventItem - CalendarEvent - the event item for which we want to find the end index in the calendar.
   * @returns {number} The `getEventEndIndex` function returns the index of the end of the calendar event in the `VegaCalendarLongEventLayoutRow.defaultSlots` array.
   */
  getEventEndIndex(eventItem: CalendarEvent): number;
  /**
   * Update the slots by the input param
   *
   * @param {unknown} input the input should be a calendar event object or other object contains calendar event
   */
  abstract updateSlots(input: unknown): void;
  /**
   * Check the slots has overlap event
   *
   * @param {unknown} input the input should be a calendar event object or other object contains calendar event
   * @returns {boolean} true or false
   */
  abstract hasOverlapEvent(input: unknown): boolean;
}
