import { VegaSlimmer } from '../../../../vega-slimmer/vega-slimmer-core';
import { VegaTimePicker } from '../../vega-time-picker';
import { DatePickerModeType, DatePickerValueType } from '../../../vega-date-picker/types';
import { TimeRangeIndex } from '../../types';
import { NotifyObserverPayload } from '../../../../helpers/event-manager/slimmers/child-nodes-notify-observer-slimmer';
/** The `VegaTimePickerValueController` class is responsible for managing the value and behavior of a time picker component. */
export declare class VegaTimePickerValueController extends VegaSlimmer {
  value: VegaTimePicker['value'];
  mode: VegaTimePicker['mode'];
  timeFormat: VegaTimePicker['timeFormat'];
  selectedTimeValue: VegaTimePicker['selectedTimeValue'];
  increments: VegaTimePicker['increments'];
  changeEventEmitter: VegaTimePicker['changeEventEmitter'];
  singleInputRenderer: VegaTimePicker['singleInputRenderer'];
  rangeInputRenderer: VegaTimePicker['rangeInputRenderer'];
  dropdownSelectedItemsController: VegaTimePicker['dropdownSelectedItemsController'];
  host: VegaTimePicker['host'];
  /**
   * The function emits a change event if the new value is a valid time string or clears the time picker if the new value is not valid or empty.
   *
   * @param {string|string[]} newValue - The `newValue` parameter is a string representing the new value for the time picker.
   * @param {string|string[]} oldValue - The `oldValue` parameter is a string representing the old value for the time picker.
   */
  emitChangeEventOrClearTimePicker(newValue: DatePickerValueType<DatePickerModeType>, oldValue: DatePickerValueType<DatePickerModeType>): void;
  /**
   * The function updates a value if there are selected items.
   */
  updateValueIfSelectedItemsChange(): void;
  /**
   * The function resets the current value if there is a change in mode.
   */
  resetCurrentValueIfModeChange(): void;
  /**
   * The function checks if the mode is set to 'range' and if the value is not valid, it clears the range time picker.
   */
  checkTheDefaultValueForRangeMode(): void;
  /**
   * The function checks the value of an input element after it loses focus and performs certain actions based on the value.
   *
   * @param {NotifyObserverPayload<unknown>} input - input#host is vega-input component
   */
  checkValueAfterInputBlur(input: NotifyObserverPayload<unknown>): void;
  /**
   * The function sets the value of a variable.
   *
   * @param {string|string[]} value - The parameter "value" is of type string.
   */
  setValue(value: DatePickerValueType<DatePickerModeType>): void;
  /**
   * The function resets the value property to an empty string or an array depending on the mode property.
   */
  resetValue(): void;
  /**
   * The function updates the value based on the selected time items, taking into account the time
   * format (12-hour or 24-hour).
   */
  updateValueBySelectedItems(): void;
  /**
   * The function updates a value based on the range type. if change start value, check the end value is a time string, if not check, the start value will block by the value guard
   *
   * @param {string} value - A string value that needs to be updated based on the source code.
   * @param {TimeRangeIndex} rangeIndex - The rangeIndex parameter is of type TimeRangeIndex, which is a string that can have two possible values: 'start' or 'end'.
   */
  updateValueByRangeType(value: string, rangeIndex: TimeRangeIndex): void;
  /**
   * This method is used to clear the selected time value in a time picker component.
   */
  clearRangeTimePicker(): void;
  /**
   * This method is used to clear the selected time value in a time picker component.
   */
  private clearTimePicker;
  /**
   * The function `valueGuard` checks if the provided value is valid for the specified mode of a time picker component.
   *
   * @param {DatePickerValueType<DatePickerModeType>} value - The `value` parameter is of type `DatePickerValueType<DatePickerModeType>`. It
   * represents the value of the time picker, which can be a single time or a range of times depending on
   * the mode of the time picker.
   * @returns {boolean} a boolean value.
   */
  private valueGuard;
}
