import { EventEmitter } from '../../stencil-public-runtime';
import { GlobalSlimmers } from '../../vega-slimmer/vega-slimmer-core';
import { VegaCalendarRenderer } from './slimmers/common/renderers/vega-calendar-renderer';
import { VegaCalendarSwitchPanelRenderer } from './slimmers/common/renderers/vega-calendar-switch-panel';
import { VegaCalendarViewRenderer } from './slimmers/common/renderers/vega-calendar-view-renderer';
import { VegaCalendarMonthViewRenderer } from './slimmers/month-view/renderers/vega-calendar-month-view-renderer';
import { VegaCalendarViewWithTimeRenderer } from './slimmers/day-view/renderers/vega-calendar-view-with-time-renderer';
import { VegaCalendarTimeLineRenderer } from './slimmers/day-view/renderers/vega-calendar-time-line-renderer';
import { VegaCalendarChangeEventType, VegaCalendarEventClickInfo, VegaCalendarDateClickInfo, VegaCalendarRawEvent, VegaCalendarViewModeType, DropdownPropsForCalendar, DisabledDate, CalendarEventActionsCallback, VegaCalendarEventEditInfo } from './types';
import { EventEmitSlimmerBase } from '../../helpers/event-manager/slimmers/event-emit-slimmer';
import { CalendarDate, CalendarPeriod, CalendarView } from '../../helpers/calendar';
import { VegaCalendarViewController } from './slimmers/common/controllers/vega-calendar-view-controller';
import { VegaCalendarCurrentPeriodController } from './slimmers/common/controllers/vega-calendar-current-period-controller';
import { ChildNodesEventPreventSlimmer } from '../../helpers/event-manager/slimmers/child-nodes-event-prevent-slimmer';
import { VegaCalendarMonthEventRenderer } from './slimmers/month-view/renderers/vega-calendar-month-event-renderer';
import { VegaCalendarEventController } from './slimmers/common/controllers/vega-calendar-event-controller';
import { VegaCalendarEventResponsiveController } from './slimmers/common/controllers/vega-calendar-event-responsive-controller';
import { VegaCalendarFullDayEventRenderer } from './slimmers/day-view/renderers/full-day-event/vega-calendar-full-day-event-renderer';
import { CalendarEvent } from '../../helpers/calendar/calendar-event';
import { VegaCalendarEventItemRenderer } from './slimmers/common/renderers/vega-calendar-event-item-renderer';
import { VegaCalendarDayViewEventLayoutRenderer } from './slimmers/day-view/renderers/timed-event/vega-calendar-day-event-layout-renderer';
import { VegaCalendarTimedEventRenderer } from './slimmers/day-view/renderers/timed-event/vega-calendar-timed-event-renderer';
import { VegaComponentUsageRuntimeMetricsSlimmer } from '../../helpers/slimmers/component-usage-runtime-metrics';
import { VegaCalendarFullDayEventLayoutRenderer } from './slimmers/common/renderers/vega-calendar-full-day-event-layout-renderer';
import { TimeFormat } from '../../types/general';
import { SubStateNotifySlimmerBase } from '../../helpers/slimmers/sub-state/sub-state-notify-slimmer-base';
import { VegaCalendarFullDayEventMoreButtonRenderer } from './slimmers/day-view/renderers/full-day-event/vega-calendar-full-day-event-more-button-renderer';
import { TranslationSlimmer } from '../../helpers/slimmers/translation';
import { VegaCalendarTimeMarkerRenderer } from './slimmers/day-view/renderers/vega-calendar-time-marker-renderer';
import { VegaCalendarPostOperationDateController } from './slimmers/common/controllers/vega-calendar-post-operation-date-controller';
import { VegaCalendarEventPreviewPopoverRenderer } from './slimmers/common/renderers/vega-calendar-event-preview-popover-renderer';
import { VegaCalendarEventPreviewPopoverController } from './slimmers/common/controllers/vega-calendar-event-preivew-popover-controller';
import { VegaCalendarDayViewFocusSlimmer } from './slimmers/common/controllers/vega-calendar-day-view-focus-slimmer';
import { EventPreviewActionsController } from './slimmers/common/controllers/vega-calendar-event-preview-actions-controller';
import { VegaCalendarKeyboardController } from './slimmers/common/controllers/vega-calendar-keyboard-controller';
/**
 * @vegaVersion 2.14.0
 */
export declare class VegaCalendar {
  protected readonly globalSlimmer: GlobalSlimmers;
  protected translationSlimmer: TranslationSlimmer<HTMLVegaCalendarElement>;
  protected vegaComponentUsageRuntimeMetricsSlimmer: VegaComponentUsageRuntimeMetricsSlimmer<HTMLVegaCalendarElement>;
  protected renderer: VegaCalendarRenderer;
  protected switchPanelRenderer: VegaCalendarSwitchPanelRenderer;
  protected dayViewFocusSlimmer: VegaCalendarDayViewFocusSlimmer;
  protected viewRenderer: VegaCalendarViewRenderer;
  protected monthViewRenderer: VegaCalendarMonthViewRenderer;
  protected viewWithTimeRenderer: VegaCalendarViewWithTimeRenderer;
  protected timeLineRenderer: VegaCalendarTimeLineRenderer;
  protected timeMarkerRenderer: VegaCalendarTimeMarkerRenderer;
  protected monthEventRenderer: VegaCalendarMonthEventRenderer;
  protected currentPeriodController: VegaCalendarCurrentPeriodController;
  protected keyboardController: VegaCalendarKeyboardController;
  protected calendarViewController: VegaCalendarViewController;
  protected postOperationDateController: VegaCalendarPostOperationDateController;
  protected dayViewFullDayEventRenderer: VegaCalendarFullDayEventRenderer;
  protected eventPreviewPopoverController: VegaCalendarEventPreviewPopoverController;
  protected dayViewFullDayEventMoreButtonRenderer: VegaCalendarFullDayEventMoreButtonRenderer;
  protected dayViewTimedEventRenderer: VegaCalendarTimedEventRenderer;
  protected eventItemRenderer: VegaCalendarEventItemRenderer;
  protected dayViewEventLayoutRenderer: VegaCalendarDayViewEventLayoutRenderer;
  protected fullDayEventLayoutRenderer: VegaCalendarFullDayEventLayoutRenderer;
  protected eventPreviewPopoverRenderer: VegaCalendarEventPreviewPopoverRenderer;
  protected calendarEventController: VegaCalendarEventController;
  protected eventPreviewActionsController: EventPreviewActionsController;
  protected eventResponsiveController: VegaCalendarEventResponsiveController;
  protected changeEventEmitter: EventEmitSlimmerBase;
  protected eventClickEmitter: EventEmitSlimmerBase;
  protected dateDblClickEmitter: EventEmitSlimmerBase;
  protected moreActionClickEmitter: EventEmitSlimmerBase;
  protected dateClickEmitter: EventEmitSlimmerBase;
  protected eventEditEmitter: EventEmitSlimmerBase;
  protected changeEventPrevent: ChildNodesEventPreventSlimmer;
  protected readonly timeFormatNotifySlimmer: SubStateNotifySlimmerBase;
  protected readonly showEventColorBarNotifySlimmer: SubStateNotifySlimmerBase;
  host: HTMLVegaCalendarElement;
  calendarView: CalendarView;
  currentPeriod: CalendarPeriod;
  /**
   * This postOperationDate will record the time after the operation, which will affect the calculation of day/week/month, making the generated interval accurate
   *
   * @type {CalendarDate}
   */
  postOperationDate: CalendarDate;
  showAllEventsInDayOrWeekView: boolean;
  /**
   * Tracks changes to the current period state.
   *
   * @param {CalendarPeriod} newValue Specifies the new calendar period.
   * @param {CalendarPeriod} oldValue Specifies the old calendar period.
   */
  watchCurrentPeriodChange(newValue: CalendarPeriod, oldValue: CalendarPeriod): void;
  calendarEvents: CalendarEvent[];
  /**
   * Specifies the current view mode of the calendar.
   *
   * @vegaVersion 2.14.0
   */
  viewMode: VegaCalendarViewModeType;
  /**
   * Watch the view mode change
   *
   * @param {VegaCalendarViewModeType} newValue the new value of view mode
   */
  watchViewModeChange(newValue: VegaCalendarViewModeType): void;
  /**
   * Specifies the events of the calendar.
   *
   * @vegaVersion 2.14.0
   */
  events: VegaCalendarRawEvent[];
  /**
   * Watch the calendar events change
   *
   * @param {VegaCalendarRawEvent[]} newValue
   */
  watchEventsChange(newValue: VegaCalendarRawEvent[]): void;
  /**
   * Specifies the time format of the calendar.
   *
   * @vegaVersion 2.14.0
   */
  timeFormat: TimeFormat;
  /**
   * Specifies a predicate function that determines whether a given date in the calendar should be disabled (non-interactive).
   *
   * The function is called for each date cell before rendering.
   *
   * Return `true` to disable the cell, or false to keep it selectable.
   * Default behavior: always returns `false` (no cells are disabled).
   *
   * @param date - The `Date` object for the cell being evaluated.
   * @returns `true` if the cell should be disabled; otherwise `false`.
   * @vegaVersion 2.56.0
   */
  isDateDisabled: DisabledDate;
  /**
   * Watches changes in the calendar's time format.
   *
   * @param {TimeFormat} newValue
   */
  watchTimeFormat(newValue: TimeFormat): void;
  /**
   * Defines the configuration options for the more action button's dropdown menu.
   *
   * @vegaVersion 2.20.0
   */
  moreActionDropdownProps: DropdownPropsForCalendar;
  /**
   * Controls the visibility of the calendar's event color bar.
   *
   * @vegaVersion 2.21.0
   */
  showEventColorBar: boolean;
  /**
   * Controls whether the switch view is displayed.
   *
   * @vegaVersion 2.58.0
   */
  showSwitchView: boolean;
  /**
   * Controls whether clicking on a calendar date triggers the `vegaDateClick` event. When enabled, it disables the `vegaDateDblClick` event to prevent conflicts.
   *
   * @vegaVersion 2.61.0
   */
  enableDateClick: boolean;
  /**
   * Monitors changes in the visibility of the calendar's event color bar.
   *
   * @param {boolean} newValue
   */
  watchShowEventColorBar(newValue: boolean): void;
  /**
   * Controls the visibility of the weekend columns in the calendar.
   *
   * @vegaVersion 2.28.0
   */
  showWeekends: boolean;
  /**
   * Controls the visibility of the event preview popover while click event.
   *
   * @vegaVersion 2.59.0
   */
  enabledEventPreview: boolean;
  /**
   * Monitors changes in the visibility of the weekend columns in the calendar.
   */
  watchShowWeekendsChange(): void;
  /**
   * Specifies the IANA time zone or Etc/GMT±n format.
   *  It accepts values such as "America/New_York" or "Etc/GMT+12".
   *  If not set, the component defaults to the system's time zone.
   *  For a complete list of IANA time zones, see Time Zone DB(https://timezonedb.com/time-zones).
   *
   * @vegaVersion 2.65.0
   */
  timezone: string;
  /**
   * Controls whether the calendar is editable, allowing users to interact with events and dates.
   * When set to `false`, all interactive features such as clicking on events or dates will be disabled, making the calendar view-only.
   *
   * @vegaVersion __VEGA_VERSION__
   */
  eventEditable: boolean;
  /**
   * A callback function that determines the visibility of action buttons in the event preview popover for each calendar event.
   * It receives the raw event data and the associated date, and should return an object indicating which action buttons should be visible in the popover.
   * This allows for dynamic customization of the event preview based on the specific event being clicked.
   *
   * @vegaVersion __VEGA_VERSION__
   */
  getEventPreviewActions: CalendarEventActionsCallback;
  /**
   * Monitors changes in the timezone prop for the calendar.
   */
  watchTimezoneChange(): void;
  /**
   * An event emitter notifying the component view content change after a switch panel click.
   *
   * @vegaVersion 2.14.0
   */
  vegaChange: EventEmitter<VegaCalendarChangeEventType>;
  /**
   * An event emitter notifying the component view content change after a switch panel click.
   *
   * @eventSemantics namespace:native
   * @vegaVersion 2.14.0
   */
  change: EventEmitter<VegaCalendarChangeEventType>;
  /**
   * An event emitter notifying that a component event item is clicked.
   *
   * @vegaVersion 2.14.0
   */
  vegaEventClick: EventEmitter<VegaCalendarEventClickInfo>;
  /**
   * An event emitter notifying that a component event item is clicked.
   *
   * @eventSemantics namespace:native
   * @vegaVersion 2.14.0
   */
  eventClick: EventEmitter<VegaCalendarEventClickInfo>;
  /**
   * An event emitter notifying that a calendar event edit action is triggered from the event preview popover.
   *
   * @vegaVersion __VEGA_VERSION__
   */
  vegaEventEdit: EventEmitter<VegaCalendarEventEditInfo>;
  /**
   * An event emitter notifying that a calendar event edit action is triggered from the event preview popover.
   *
   * @eventSemantics namespace:native
   * @vegaVersion __VEGA_VERSION__
   */
  eventEdit: EventEmitter<VegaCalendarEventEditInfo>;
  /**
   * An event emitter notifying that a calendar date item has been double-clicked. The event will not be triggered if `enableDataClick` is set to true to prevent conflicts.
   *
   * @vegaVersion 2.17.0
   */
  vegaDateDblClick: EventEmitter<VegaCalendarDateClickInfo>;
  /**
   * An event emitter notifying that a calendar date item has been double-clicked. The event will not be triggered if `enableDataClick` is true to prevent conflicts.
   *
   * @eventSemantics namespace:native
   * @vegaVersion 2.17.0
   */
  dateDblClick: EventEmitter<VegaCalendarDateClickInfo>;
  /**
   * An event emitter notifying that a calendar date item has been clicked. The event will not be triggered if `enableDataClick` is false.
   *
   * @vegaVersion 2.61.0
   */
  vegaDateClick: EventEmitter<VegaCalendarDateClickInfo>;
  /**
   * An event emitter notifying that a calendar date item has been clicked. The event will not be triggered if `enableDataClick` is false.
   *
   * @eventSemantics namespace:native
   * @vegaVersion 2.61.0
   */
  dateClick: EventEmitter<VegaCalendarDateClickInfo>;
  /**
   * An event emitter notifying that a calendar more action menu item has been clicked.
   *
   * @vegaVersion 2.20.0
   */
  vegaMoreActionClick: EventEmitter<string>;
  /**
   * An event emitter notifying that a calendar more action menu item has been clicked.
   *
   * @eventSemantics namespace:native
   * @vegaVersion 2.20.0
   */
  moreActionClick: EventEmitter<string>;
  render(): VegaCalendar;
  /**
   * Get initial post operation date considering timezone
   */
  private getInitialPostOperationDate;
}
