/**
 * 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-number-field.js
 */


// tslint:disable:variable-name Describing an API that's defined elsewhere.

import {TextFieldElement} from './vaadin-text-field.js';

import {DomModule} from '@polymer/polymer/lib/elements/dom-module.js';

import {html} from '@polymer/polymer/lib/utils/html-tag.js';

/**
 * `<vaadin-number-field>` is a Web Component for number field control in forms.
 *
 * ```html
 * <vaadin-number-field label="Number">
 * </vaadin-number-field>
 * ```
 */
declare class NumberFieldElement extends TextFieldElement {

  /**
   * Set to true to display value increase/decrease controls.
   * @attr {boolean} has-controls
   */
  hasControls: boolean;

  /**
   * The minimum value of the field.
   */
  min: number|null|undefined;

  /**
   * The maximum value of the field.
   */
  max: number|null|undefined;

  /**
   * Specifies the allowed number intervals of the field.
   */
  step: number;
  ready(): void;
  _createConstraintsObserver(): void;

  /**
   * Native [type=number] inputs don't update their value
   * when you are entering input that the browser is unable to parse
   * e.g. "--5", hence we have to override this method from `InputMixin`
   * so that, when value is empty, it would additionally check
   * for bad input based on the native `validity.badInput` property.
   */
  _setHasInputValue(event: InputEvent|null): void;
  _valueChanged(newVal: unknown|null, oldVal: unknown|null): void;
  checkValidity(): boolean;
  _onKeyDown(e: KeyboardEvent): void;
  _stepChanged(newVal: number, oldVal: number|undefined): void;
}

declare global {

  interface HTMLElementTagNameMap {
    "vaadin-number-field": NumberFieldElement;
  }
}

export {NumberFieldElement};
