import { VegaSlimmer } from '../../../../../vega-slimmer/vega-slimmer-core';
import { VegaCalendar } from '../../../vega-calendar';
import { CalendarDate, CalendarPeriod } from '../../../../../helpers/calendar';
import { VegaCalendarViewModeType } from '../../../types';
/** This TypeScript class `VegaCalendarCurrentPeriodController` updates the current period based on the view mode in a calendar component. */
export declare class VegaCalendarCurrentPeriodController extends VegaSlimmer {
  protected currentPeriod: VegaCalendar['currentPeriod'];
  protected changeEventEmitter: VegaCalendar['changeEventEmitter'];
  protected viewMode: VegaCalendar['viewMode'];
  protected showWeekends: VegaCalendar['showWeekends'];
  protected timezone: VegaCalendar['timezone'];
  /**
   * set new current period
   *
   * @param {CalendarPeriod} newPeriod new value
   */
  setCurrentPeriod(newPeriod: CalendarPeriod): void;
  /**
   * set new current period by the view mode and the current date
   *
   * @param {VegaCalendarViewModeType} viewMode view mode value
   * @param {CalendarDate} date current date
   */
  updateCalendarPeriod(viewMode: VegaCalendarViewModeType, date: CalendarDate): void;
  /**
   * default current period is month period, re-create period if the default view mode is not month
   * set default calendar view
   */
  protected initialCurrentPeriod(): void;
  /**
   * emit period change event
   *
   * @param {CalendarPeriod} newValue the new calendar period
   * @param {CalendarPeriod} oldValue the prev calendar period
   */
  protected emitChangeEvent(newValue: CalendarPeriod, oldValue: CalendarPeriod): void;
  /**
   * update the current period when view mode change
   *
   * @param {VegaCalendarViewModeType} viewMode new view mode value
   */
  protected updateCurrentPeriodByViewMode(viewMode: VegaCalendarViewModeType): void;
  /**
   * The calendar period should update when the property showWeekends change
   */
  protected updateCurrentPeriodAfterHideWeekEndsChange(): void;
  /**
   * The function `getStartDateAndEndDate` returns an array of `VegaCalendarDateType` objects based on the `startDate` and `endDate` properties of the `currentPeriod` object.
   *
   * @returns {VegaCalendarChangeEventType['currentPeriod']} An array of objects containing the date, month, and year properties of the currentPeriod's
   * start date and end date.
   */
  private getCurrentPeriodSummary;
}
