import { VegaSlimmer } from '../../../../../vega-slimmer/vega-slimmer-core';
import { CalendarEvent } from '../../../../../helpers/calendar/calendar-event';
import { VegaCalendarRawEvent } from '../../../types';
import { VegaCalendar } from '../../../vega-calendar';
import { CalendarDate } from '../../../../../helpers/calendar';
/** The `VegaCalendarEventController` class in TypeScript manages calendar events, initializes event layouts, retrieves events for the current date, and checks if a date falls within the range of a calendar event. */
export declare class VegaCalendarEventController extends VegaSlimmer {
  protected host: VegaCalendar['host'];
  protected calendarEvents: VegaCalendar['calendarEvents'];
  protected currentPeriod: VegaCalendar['currentPeriod'];
  protected events: VegaCalendar['events'];
  protected timezone: VegaCalendar['timezone'];
  private repeatEventMap;
  /**
   * The function `getCurrentDateEvent` returns an array of calendar events for the current date, including both normal events and group events.
   *
   * @param {CalendarDate} date - The `date` parameter in the `getCurrentDateEvent` function is of type `CalendarDate`, which is used to represent a specific date with properties for year, month, and date.
   * @returns {CalendarEvent[]} The `getCurrentDateEvent` function returns an array of `CalendarEvent` objects. It
   * first retrieves all group events and normal events for the specified date, then filters out the
   * events that are specific to the current day. Finally, it concatenates the current day events with
   * the group events and returns the combined array.
   */
  getCurrentDateEvents(date: CalendarDate): CalendarEvent[];
  /**
   * initial calendar events when component props events change
   *
   * @param {VegaCalendarRawEvent[]} newEvents new event options array
   */
  protected updateAfterEventChange(newEvents: VegaCalendarRawEvent[]): void;
  /**
   * initial calendar events in first time
   */
  protected updateWhenComponentWillLoad(): void;
  /**
   * Handle timezone changes by updating all calendar events
   *
   */
  protected updateAfterTimezoneChange(): void;
  /**
   * initial calendar events
   *
   * @param {VegaCalendarRawEvent[]} newEvents new event options array
   */
  private initCalendarEvents;
  /**
   * We need generate new calendar event from the full-day repeat calendar event, so we can render those event as normal full-day event
   *
   * @returns {CalendarEvent[]} The `handleRepeatEvents` method returns an array of `CalendarEvent` objects.
   */
  private createRepeatEvents;
  /**
   * This function generates a calendar event based on a repeat series and stores it in a map to avoid duplicate creation.
   *
   * @param {CalendarEvent} calendarEvent - The `calendarEvent` parameter represents a single event on
   * a calendar. It contains information such as the event's start date, end date, and other details.
   * @param {CalendarDate} series - The repeat start date
   * @returns {CalendarEvent} The function `generateCalendarEventByRepeatSeries` returns a `CalendarEvent` object. If
   * the event key already exists in the `repeatEventMap`, it returns the corresponding `CalendarEvent`
   * object from the map. Otherwise, it creates a new `CalendarEvent` object based on the input
   * `calendarEvent` and `series` parameters, adds it to the `repeatEventMap`, and then
   */
  private generateCalendarEventByRepeatSeries;
}
