import { EventEmitter } from '../../stencil-public-runtime';
import { BalOptionValue } from '../bal-select-option/bal-select-option.type';
export declare class Select {
  private inputElement;
  private inputFilterElement;
  private dropdownElement;
  private clearScrollToValue;
  element: HTMLElement;
  isDropdownOpen: boolean;
  labelToScrollTo: string;
  focusIndex: number;
  /**
   * If `true` multiple option can be selected
   */
  multiple: boolean;
  /**
   * If `true` the filtering of the options is done outside of the component.
   */
  noFilter: boolean;
  /**
   * The tabindex of the control.
   */
  balTabindex: number;
  /**
   * If `true` the component uses the whole width.
   */
  expanded: boolean;
  /**
   * Set this to `true` when the component is placed on a dark background.
   */
  inverted: boolean;
  /**
   * If `true` the component is diabled.
   */
  disabled: boolean;
  /**
   * If `true` the user can search by typing into the input field.
   */
  typeahead: boolean;
  /**
   * If `true` the component shows a loading spinner and sets the input to readonly.
   */
  loading: boolean;
  /**
   * Defines the placeholder of the input element.
   */
  placeholder: string;
  /**
   * Defines the placeholder of the input filter element.
   */
  filterPlaceholder: string;
  /**
   * Defines the height of the dropdown list.
   */
  scrollable: number;
  /**
   * Selected option value.
   */
  value: string[];
  /**
   * Emitted when a option got selected.
   */
  balChange: EventEmitter<string[]>;
  /**
   * Emitted when a keyboard input occurred.
   */
  balInput: EventEmitter<string>;
  /**
   * Emitted when the input loses focus.
   */
  balBlur: EventEmitter<FocusEvent>;
  /**
   * Emitted when the input has focus.
   */
  balFocus: EventEmitter<FocusEvent>;
  /**
   * Emitted when the input got clicked.
   */
  balClick: EventEmitter<MouseEvent>;
  /**
   * Emitted when the input has focus and key from the keyboard go hit.
   */
  balKeyPress: EventEmitter<KeyboardEvent>;
  /**
   * Emitted when the user cancels the input.
   */
  balCancel: EventEmitter<KeyboardEvent>;
  /**
   * Opens the dropdown
   */
  open(): Promise<void>;
  /**
   * Closes the dropdown
   */
  close(): Promise<void>;
  /**
   * Selects an option
   */
  select(option: BalOptionValue<any>): Promise<void>;
  /**
   * Sets the value to null and resets the value of the input.
   */
  clear(): Promise<void>;
  /**
   * Sets the focus on the input element
   */
  setFocus(): Promise<void>;
  /**
   * *Internal* - Used to update option changes
   */
  sync(): Promise<void>;
  keyDownHandler(event: KeyboardEvent): void;
  componentWillLoad(): void;
  valueWatcher(): void;
  private get childOptions();
  private get hasChildren();
  private onInputClick;
  private onDropdownChange;
  private onInput;
  private onKeyUp;
  private onKeyPress;
  get inputElementValue(): string;
  get inputFilterElementValue(): string;
  private updateOptionProps;
  private moveFocus;
  private compareForFilter;
  private startsWithForFilter;
  private navigateWithArrowKey;
  private clearFocus;
  private nextOptionIndex;
  private previousOptionIndex;
  private navigateOneOptionDown;
  private navigateOneOptionUp;
  private cancel;
  private selectFocused;
  private focusOptionByLabel;
  private scrollToLabel;
  private scrollTo;
  private unfocusAllOptions;
  private focusOptionElement;
  render(): any;
  renderControl(): any;
  renderInput(): any;
  renderFilter(): any;
}
