import { EventEmitter } from '../../stencil-public-runtime';
import { FormFieldValidationRule } from '../../helpers/validator/rules/form-field-validation-rule';
import { DropdownSourceItem } from '../vega-dropdown/types';
import { VegaComboBoxSize, VegaDropdownPropsForComboBox } from './types';
import { GlobalSlimmers } from '../../vega-slimmer/vega-slimmer-core';
import { FormFieldControllerSlimmer } from '../../helpers/slimmers/form-field-controller-slimmer';
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 { VegaComboBoxDropdownRenderer } from './slimmers/renderers/vega-combo-box-dropdown-renderer';
import { VegaComboBoxValueController } from './slimmers/controllers/vega-combo-box-value-controller';
import { VegaComboBoxRenderer } from './slimmers/renderers/vega-combo-box-renderer';
import { VegaComboBoxKeyboardController } from './slimmers/controllers/vega-combo-box-keyboard-controller';
import { VegaComboBoxItemsSlotController } from './slimmers/controllers/vega-combo-box-items-slot-controller';
import { VegaComboBoxSourceController } from './slimmers/controllers/vega-combo-box-source-controller';
/**
 * @vegaVersion 1.11.0
 */
export declare class VegaComboBox {
  protected readonly globalSlimmers: GlobalSlimmers;
  protected itemsSlotController: VegaComboBoxItemsSlotController;
  protected keyboardController: VegaComboBoxKeyboardController;
  protected valueController: VegaComboBoxValueController;
  protected sourceController: VegaComboBoxSourceController;
  protected renderer: VegaComboBoxRenderer;
  protected dropdownRenderer: VegaComboBoxDropdownRenderer;
  protected readonly formFieldController: FormFieldControllerSlimmer<string[]>;
  protected changeEventEmit: EventEmitSlimmerBase;
  protected createEventEmit: EventEmitSlimmerBase;
  protected searchEventEmit: EventEmitSlimmerBase;
  protected dropdownEventPrevent: ChildNodesEventPreventSlimmer;
  protected vegaComponentUsageRuntimeMetricsSlimmer: VegaComponentUsageRuntimeMetricsSlimmer<HTMLVegaComboBoxElement>;
  host: HTMLVegaComboBoxElement;
  /**
   * Specifies the label or title for the combo box.
   *
   * It provides descriptive text that helps identify the
   *    purpose or content expected in the combo box.
   *
   * @vegaVersion 1.11.0
   */
  label: string;
  /**
   * Specifies whether a value must be entered for the
   *    combo box to pass form validation.
   *
   * @vegaVersion 1.11.0
   */
  required: boolean;
  /**
   * Specifies the source data used to populate the
   *    dropdown menu associated with the combo box.
   *
   * @vegaVersion 1.11.0
   */
  source: DropdownSourceItem[];
  watchSource(): void;
  /**
   * Sets the initial or preset values of the combo box.
   *
   * It should be an array of strings representing the selected values.
   *
   * @vegaVersion 1.11.0
   */
  value: string[];
  watchValue(): void;
  /**
   * Specifies the validation status of the combo box component.
   *
   * @vegaVersion 1.11.0
   */
  isValid: boolean;
  /**
   * Determines whether automatic validation should be implemented
   *    when a value is edited in the combo box.
   *
   * @vegaVersion 1.11.0
   */
  autoValidation: boolean;
  /**
   * Specifies custom validation rules for the combo box.
   *
   * @vegaVersion 1.11.0
   */
  validationRules: FormFieldValidationRule<unknown>[];
  watchValidationRules(): void;
  /**
   * Specifies whether the combo box element is disabled.
   *
   * @vegaVersion 1.11.0
   */
  disabled: boolean;
  /**
   * Sets a placeholder string that provides a temporary hint
   *    or example inside the combo box input field.
   *
   * It indicates the expected format or pattern of the input.
   *
   * @vegaVersion 1.11.0
   */
  placeholder: string;
  /**
   * Provides a supplementary prompt message that is displayed
   *    alongside the combo box input field.
   *
   * @vegaVersion 1.11.0
   */
  hint: string;
  /**
   * Specifies the size of the combo box.
   *
   * @vegaVersion 1.11.0
   */
  size: VegaComboBoxSize;
  /**
   * Specifies partial properties of the `vega-dropdown` component
   *    that are used to configure the dropdown menu
   *    associated with the combo box.
   *
   * @vegaVersion 1.11.0
   */
  vegaDropdownProps: VegaDropdownPropsForComboBox;
  /**
   * Determines whether to display the associated dropdown menu and
   *    filter its options based on the text entered into the combo box.
   *
   * Setting this property to `false` enables custom text input handling
   *    by listening for the `vegaSearch` event.
   *
   * @vegaVersion 1.24.0
   */
  useDefaultFilter: boolean;
  /**
   * An event emitter notifying changes in the items of the combo box value,
   *    whether triggered programmatically or through user interaction.
   *
   * @vegaVersion 1.11.0
   */
  vegaChange: EventEmitter<string[]>;
  /**
   * An event emitter notifying changes in the items of the combo box value,
   *    whether triggered programmatically or through user interaction.
   *
   * @eventSemantics namespace:native
   * @vegaVersion 2.0.0
   */
  change: EventEmitter<string[]>;
  /**
   * An event emitter notifying when the user has chosen to add a new value
   *    to the source and value of the combo box.
   *
   * The event's `detail` property contains the new value.
   *
   * The combo box _does not_ automatically add the new value to its `source` and `value`.
   *
   * @vegaVersion 1.14.0
   */
  vegaCreate: EventEmitter<string>;
  /**
   * An event emitter notifying when the user has chosen to add a new value
   *    to the source and value of the combo box.
   *
   * The event's `detail` property contains the new value.
   *
   * The combo box _does not_ automatically add the new value to its `source` and `value`.
   * @eventSemantics namespace:native
   * @vegaVersion 2.0.0
   */
  create: EventEmitter<string>;
  /**
   * An event emitter notifying the user's search action in the combo box,
   *    but only if the `useDefaultFilter` property is set to `false`.
   *
   * @vegaVersion 1.24.0
   */
  vegaSearch: EventEmitter<string>;
  /**
   * An event emitter notifying the user's search action in the combo box,
   *    but only if the `useDefaultFilter` property is set to `false`.
   * @eventSemantics namespace:native
   * @vegaVersion 2.0.0
   */
  search: EventEmitter<string>;
  /**
   * Invoke this method to close the dropdown menu associated with the combo box.
   *
   * @vegaVersion 1.11.0
   */
  close(): Promise<void>;
  /**
   * Invoke this method to open the dropdown menu associated with the combo box.
   *
   * @vegaVersion 1.11.0
   */
  open(): Promise<void>;
  render(): VegaComboBox;
}
