import { VegaSlimmer } from '../../../../vega-slimmer/vega-slimmer-core';
import { VegaDatePicker } from '../../vega-date-picker';
import { DatePickerModeType, DatePickerValueType } from '../../types';
/** The date picker value controller slimmer */
export declare class VegaDatePickerValueController extends VegaSlimmer {
  value: VegaDatePicker['value'];
  mode: VegaDatePicker['mode'];
  format: VegaDatePicker['format'];
  changeEventEmitter: VegaDatePicker['changeEventEmitter'];
  host: VegaDatePicker['host'];
  isCalendarShow: VegaDatePicker['isCalendarShow'];
  vegaDatePickerCalendarRenderer: VegaDatePicker['vegaDatePickerCalendarRenderer'];
  calendarOpenStateController: VegaDatePicker['calendarOpenStateController'];
  /** Set default value if value is not set when component will load */
  componentWillLoad(): void;
  /**
   * Update value when property of value changed.
   *
   * @param {DatePickerValueType<DatePickerModeType>} newValue - The new value of date picker.
   * @param {DatePickerValueType<DatePickerModeType>} oldValue - The old value of date picker.
   */
  watchValue(newValue: DatePickerValueType<DatePickerModeType>, oldValue: DatePickerValueType<DatePickerModeType>): void;
  /** Update datePicker settings property of mode is changed */
  watchMode(): void;
  /**
   * The function `getValue` returns the value of a DatePicker component, with type checking based on the specified DatePickerModeType.
   *
   * @typedef T generic type
   * @returns {DatePickerValueType<T>} The method is returning the value of type `DatePickerValueType<T>`.
   */
  getValue<T extends DatePickerModeType>(): DatePickerValueType<T>;
  /**
   * The function sets the value of a date picker if it passes a type guard check.
   *
   * @param {DatePickerValueType} value - The `value` parameter is of type `DatePickerValueType<T>`. This means that it can
   * accept a value of any type `T` that extends `DatePickerModeType`.
   */
  setValue<T extends DatePickerModeType>(value: DatePickerValueType<T>): void;
  /**
   * The function sets default values based on the mode specified.
   */
  private setDefaultValueByMode;
  /**
   * The function `valueGuard` checks if the provided value is valid for the specified mode of a date picker component.
   *
   * @param {DatePickerValueType<DatePickerModeType>} value - The `value` parameter is of type `DatePickerValueType<DatePickerModeType>`. It
   * represents the value of the date picker, which can be a single date or a range of dates depending on
   * the mode of the date picker.
   * @returns {boolean} a boolean value.
   */
  private valueGuard;
}
