import { EventEmitter } from '../../stencil-public-runtime';
import { TimeFormat } from '../../types/general';
import { FormFieldValidationRule } from '../../helpers/validator/rules/form-field-validation-rule';
import { GlobalSlimmers } from '../../vega-slimmer/vega-slimmer-core';
import { FormFieldControllerSlimmer } from '../../helpers/slimmers/form-field-controller-slimmer';
import { VegaTimePickerLabelRenderer } from './slimmers/renderers/vega-time-picker-label-renderer';
import { VegaTimePickerSingleInputRenderer } from './slimmers/renderers/vega-time-picker-single-input-renderer';
import { TimePickerDropdownSource, TimePickerModeType, TimePickerValueType, TimeValue } from './types';
import { VegaTimePickerSingleDropdownRenderer } from './slimmers/renderers/vega-time-picker-single-dropdown-renderer';
import { VegaTimePickerValueController } from './slimmers/controllers/vega-time-picker-value-controller';
import { VegaTimePickerSingleDropdownController } from './slimmers/controllers/vega-time-picker-single-dropdown-controller';
import { VegaTimePickerDropdownSelectedItemsController } from './slimmers/controllers/vega-time-picker-dropdown-selected-items-controller';
import { VegaTimePickerKeyboardController } from './slimmers/controllers/vega-time-picker-keyboard-controller';
import { VegaTimePickerRangeInputRenderer } from './slimmers/renderers/vega-time-picker-range-input-renderer';
import { VegaTimePickerRangeDropdownRenderer } from './slimmers/renderers/vega-time-picker-range-dropdown-renderer';
import { VegaTimePickerRangeClearButtonRenderer } from './slimmers/renderers/vega-time-picker-range-clear-button-renderer';
import { VegaTimePickerInputMaskController } from './slimmers/controllers/vega-time-picker-input-mask-controller';
import { VegaTimePickerRangeDropdownController } from './slimmers/controllers/vega-time-picker-range-dropdown-controller';
import { ChildNodesEventPreventSlimmer } from '../../helpers/event-manager/slimmers/child-nodes-event-prevent-slimmer';
import { EventEmitSlimmerBase } from '../../helpers/event-manager/slimmers/event-emit-slimmer';
import { VegaComponentUsageRuntimeMetricsSlimmer } from '../../helpers/slimmers/component-usage-runtime-metrics';
import { TranslationSlimmer } from '../../helpers/slimmers/translation';
/**
 * @vegaVersion 1.12.0
 */
export declare class VegaTimePicker {
  protected readonly globalSlimmers: GlobalSlimmers;
  protected translationSlimmer: TranslationSlimmer<HTMLVegaTimePickerElement>;
  protected readonly labelRenderer: VegaTimePickerLabelRenderer;
  protected readonly singleInputRenderer: VegaTimePickerSingleInputRenderer;
  protected readonly singleDropdownRenderer: VegaTimePickerSingleDropdownRenderer;
  protected readonly valueController: VegaTimePickerValueController;
  protected readonly singleDropdownController: VegaTimePickerSingleDropdownController;
  protected readonly dropdownSelectedItemsController: VegaTimePickerDropdownSelectedItemsController;
  protected readonly keyboardController: VegaTimePickerKeyboardController;
  protected readonly formFieldController: FormFieldControllerSlimmer<string[] | string>;
  protected readonly rangeInputRenderer: VegaTimePickerRangeInputRenderer;
  protected readonly rangeClearButtonRenderer: VegaTimePickerRangeClearButtonRenderer;
  protected readonly rangeDropdownRenderer: VegaTimePickerRangeDropdownRenderer;
  protected readonly startDropdownController: VegaTimePickerRangeDropdownController;
  protected readonly endDropdownController: VegaTimePickerRangeDropdownController;
  protected readonly inputMaskController: VegaTimePickerInputMaskController;
  protected inputEventPrevent: ChildNodesEventPreventSlimmer;
  protected changeEventEmitter: EventEmitSlimmerBase;
  protected vegaComponentUsageRuntimeMetricsSlimmer: VegaComponentUsageRuntimeMetricsSlimmer<HTMLVegaTimePickerElement>;
  private isMobileDevice;
  private isTabletDevice;
  private inputContainerRef;
  host: HTMLVegaTimePickerElement;
  /** dropdown source */
  dropdownSource: TimePickerDropdownSource;
  isDropdownShow: boolean;
  /**
   * The below method is e2e-test covered in
   * @see{module:vega-time-picker-keyboard-control-e2e}
   */
  watchIsDropdownShow(newValue: boolean): Promise<void>;
  selectedTimeValue: TimeValue;
  watchSelectedTimeValue(): void;
  /**
   * Specifies the label or title for the time picker.
   *
   * It provides descriptive text that helps identify the
   *    purpose or content expected in the time picker.
   *
   * @vegaVersion 1.12.0
   */
  label: string;
  /**
   * Specifies the mode for selecting time in the time picker.
   *
   *  - `single` indicates the ability to select a single time.
   *  - `range` indicates the ability to select a time range.
   *
   * @vegaVersion 1.48.0
   */
  mode: TimePickerModeType;
  /** Update timePicker settings property of mode is changed */
  watchMode(): void;
  /**
   * Specifies whether selecting a time in the time picker
   *    is required for passing form validation.
   *
   * @vegaVersion 1.12.0
   */
  required: boolean;
  /**
   * Specifies placeholder strings that provide a temporary hint
   *    or example inside the time input field.
   *
   * @vegaVersion 1.12.0
   */
  placeholder: string | string[];
  /**
   * Determines the interval between each selectable minute value
   *    in the time picker.
   *
   * @vegaVersion 1.12.0
   */
  increments: number;
  watchIncrements(): void;
  /**
   * Specifies the format in which the time is displayed
   *    in the time picker.
   *  - `24-hour` displays time as "HH:mm".
   *  - `12-hour` displays time as "hh:mm a".
   *
   * @vegaVersion 1.12.0
   */
  timeFormat: TimeFormat;
  watchTimeFormat(): void;
  /**
   * Specifies the initial value or selected time
   *    for the time picker.
   * - In `single` mode, the value is a string:
   *  - `24-hour` format: "HH:mm".
   *  - `12-hour` format: "hh:mm a".
   * - In `range` mode, the value is an array of two strings:
   *  - `24-hour` format: ["HH:mm", "HH:mm"].
   *  - `12-hour` format: ["hh:mm a", "hh:mm a"]
   *
   * @vegaVersion 1.12.0
   */
  value: TimePickerValueType<TimePickerModeType>;
  watchValue(newValue: TimePickerValueType<TimePickerModeType>, oldValue: TimePickerValueType<TimePickerModeType>): void;
  /**
   * Determines the size or dimensions of the time picker component.
   *
   * @vegaVersion 1.12.0
   */
  size: 'default' | 'small';
  /**
   * Determines whether the time picker component is disabled.
   *
   * @vegaVersion 1.12.0
   */
  disabled: boolean;
  watchDisabled(): void;
  /**
   * Specifies whether the time picker field is set to read-only.
   *
   * When set to `true`, prevents manual keyboard text entry in the input field on
   *    all platforms. On touch devices, this typically suppresses the virtual keyboard.
   *    This does not lock the component value; users can still select/update time via
   *    the dropdown UI (and programmatic updates still work).
   *
   * @default false
   * @vegaVersion 2.79.0
   */
  readOnly: boolean;
  /**
   * Controls whether a clear (✕) icon button is displayed inside the time
   * picker input when the field has a non-empty value.
   *
   * When `true`, clicking the clear icon resets the time picker value to an
   * empty value (or `['', '']` in `range` mode) and emits a `vegaChange`
   * event. Set to `false` to hide the clear icon (e.g., for time pickers
   * where clearing is not desired).
   *
   * The clear icon is also hidden when the component is `disabled`.
   *
   * When the component is `readOnly`, the clear icon remains visible by
   * design: read-only only suppresses manual keyboard text entry, while
   * users can still update the value via the dropdown UI, so clearing the
   * selected value is still a valid interaction.
   *
   * @default true
   * @vegaVersion __VEGA_VERSION__
   */
  showClearIcon: boolean;
  /**
   * Specifies the validation status of the time picker component.
   *
   * @vegaVersion 1.12.0
   */
  isValid: boolean | null;
  /**
   * Determines whether automatic validation should be implemented
   *    for the time picker during user input.
   *
   * @vegaVersion 1.12.0
   */
  autoValidation: boolean;
  /**
   * Specifies custom validation rules for the
   *    time picker input field.
   *
   * @vegaVersion 1.12.0
   */
  validationRules: FormFieldValidationRule<unknown>[];
  watchValidationRules(): void;
  /**
   * Specifies the selector of the container element relative to which
   *    the popup of the time picker will be positioned.
   *
   * If not provided, the popup will be appended to
   *    the body by default. Adjust this property
   *    when facing scrolling positioning problems.
   *
   * @VegaWarning The value of this property should be an element that is
   * 		the parent of this component or an ancestor of the parent element.
   * 		Using any other element may lead to unexpected behavior.
   * @vegaVersion 1.12.0
   */
  positionRelativeTo: string;
  /**
   * An event emitter notifying changes in the value of the time picker.
   *
   * @vegaVersion 1.12.0
   */
  vegaChange: EventEmitter<string | string[]>;
  /**
   * An event emitter notifying changes in the value of the time picker.
   *
   * @eventSemantics namespace:native
   * @vegaVersion 2.0.0
   */
  change: EventEmitter<string | string[]>;
  componentWillLoad(): void;
  componentDidLoad(): void;
  componentDidRender(): void;
  render(): VegaTimePicker;
  private getTimePickerClass;
}
