/**
 * DO NOT EDIT
 *
 * This file was automatically generated by
 *   https://github.com/Polymer/tools/tree/master/packages/gen-typescript-declarations
 *
 * To modify these typings, edit the source file(s):
 *   src/vaadin-item-mixin.js
 */


// tslint:disable:variable-name Describing an API that's defined elsewhere.
// tslint:disable:no-any describes the API as best we are able today

export {ItemMixin};


/**
 * A mixin providing `focused`, `focus-ring`, `active`, `disabled` and `selected`.
 *
 * `focused`, `active` and `focus-ring` are set as only as attributes.
 */
declare function ItemMixin<T extends new (...args: any[]) => {}>(base: T): T & ItemMixinConstructor;

interface ItemMixinConstructor {
  new(...args: any[]): ItemMixin;
}

export {ItemMixinConstructor};

interface ItemMixin {
  value: string;

  /**
   * Used for mixin detection because `instanceof` does not work with mixins.
   * e.g. in VaadinListMixin it filters items by using the
   * `element._hasVaadinItemMixin` condition.
   */
  _hasVaadinItemMixin: boolean;

  /**
   * If true, the user cannot interact with this element.
   */
  disabled: boolean;

  /**
   * If true, the item is in selected state.
   */
  selected: boolean;
  ready(): void;
  disconnectedCallback(): void;
  _setFocused(focused: boolean): void;
  _setActive(active: boolean): void;
  _onKeydown(event: KeyboardEvent): void;
  _onKeyup(event: KeyboardEvent): void;
}
