import { EventEmitter } from '../../stencil-public-runtime';
import { InputChangeEventDetail } from './types';
import { AutocompleteTypes, Color, StyleEventDetail, TextFieldTypes } from './types';
export declare class Input {
  private didBlurAfterEdit;
  private inheritedAttributes;
  private inputId;
  private nativeInput;
  private clearTextInput;
  private clearTextOnEnter;
  private emitStyle;
  private focusChanged;
  private getValue;
  private hasValue;
  private onBlur;
  private onFocus;
  private onInput;
  private onInvalid;
  private onKeydown;
  private shouldClearOnEdit;
  labelEl: HTMLAbdsLabelElement;
  onLabelClick(): void;
  host: HTMLAbdsInputElement;
  /**
   * If the value of the type attribute is `"file"`, then this attribute will indicate
   * the types of files that the server accepts, otherwise it will be ignored. The value
   * must be a comma-separated list of unique content type specifiers.
   */
  accept: string;
  /**
   * Indicates whether and how the text value should be automatically capitalized as it is entered/edited by the user.
   * Available options: `"off"`, `"none"`, `"on"`, `"sentences"`, `"words"`, `"characters"`.
   */
  autocapitalize: string;
  /** Indicates whether value of control can be automatically completed by browser. */
  autocomplete: AutocompleteTypes;
  /** Whether auto correction should be enabled when user is entering/editing text value. */
  autocorrect: 'on' | 'off';
  /** Allows specifying form control should have input focus on page load. */
  autofocus: boolean;
  /**
   * If `true`, a clear icon will appear in the input when there is a value.
   * Clicking it clears the input.
   */
  clearInput: boolean;
  /**
   * If `true`, the value will be cleared after focus upon edit. Defaults to `true`
   * when `type` is `"password"`, `false` for all other types.
   */
  clearOnEdit: boolean;
  /**
   * The color to use from your application's color palette. Default options are:
   * `"danger"`, `"dark"`, `"light"`, `"primary"`, `"secondary"`, `"success"`, and `"warning"`
   *
   * For more information on colors, see [theming](/docs/theming/basics).
   */
  color: Color;
  /**
   * Set the amount of time, in milliseconds, to wait to trigger the `abdsChange` event
   * after each keystroke. This also impacts form bindings such as `ngModel` or `v-model`.
   */
  debounce: number;
  /** If `true`, the user cannot interact with the input. */
  disabled: boolean;
  /**
   * A hint to the browser for which enter key to display.
   * Possible values: `"enter"`, `"done"`, `"go"`, `"next"`,
   * `"previous"`, `"search"`, and `"send"`.
   */
  enterkeyhint: 'enter' | 'done' | 'go' | 'next' | 'previous' | 'search' | 'send';
  /**
   * This is required for a WebKit bug which requires us to
   * blur and focus an input to properly focus the input in
   * an item with delegatesFocus. It will no longer be needed
   * with iOS 14.
   *
   * @internal
   */
  fireFocusEvents: boolean;
  /**
   * Browser hint for which keyboard to display. Possible values:
   * `"none"`, `"text"`, `"tel"`, `"url"`, `"email"`, `"numeric"`, `"decimal"`, and `"search"`.
   */
  inputmode: 'none' | 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search';
  /** The maximum value, which must not be less than its minimum (min attribute) value. */
  max: string;
  /**
   * If type attribute value is `text`, `email`, `search`, `password`, `tel`, or `url`,
   * this attribute specifies the maximum number of characters the user can enter.
   */
  maxlength: number;
  /** The minimum value, which must not be greater than its maximum (max attribute) value. */
  min: string;
  /**
   * If type attribute value is `text`, `email`, `search`, `password`, `tel`, or `url`,
   * this attribute specifies the minimum number of characters the user can enter.
   */
  minlength: number;
  /**
   * If `true`, the user can enter more than one value. This attribute applies when
   * the type attribute is set to `"email"` or `"file"`, otherwise it is ignored.
   */
  multiple: boolean;
  /** The name of the control, which is submitted with the form data. */
  name: string;
  /**
   * A regular expression that the value is checked against. The pattern must match
   * the entire value, not just some subset. Use the title attribute to describe the
   * pattern to help the user. This attribute applies when the value of the type
   * attribute is `"text"`, `"search"`, `"tel"`, `"url"`, `"email"`, `"date"`, or `
   * "password"`, otherwise it is ignored. When the type attribute is `"date"`,
   * `pattern` will only be used in browsers that do not support the `"date"` input
   * type natively. See https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/date
   * for more information.
   */
  pattern: string;
  /** Instructional text that shows before the input has a value. */
  placeholder: string | null;
  /** If `true`, the user cannot modify the value. */
  readonly: boolean;
  /** If `true`, the user must fill in a value before submitting a form. */
  required: boolean;
  /**
   * Initial control size. This value is in pixels unless the value
   * attribute "type" is `"text"` or `"password"`, in which case it is an
   * integer number of characters. This attribute applies only when attribute
   * "type" is set to `"text"`, `"search"`, `"tel"`, `"url"`, `"email"`, or
   * `"password"`, otherwise it is ignored.
   */
  size: number;
  /** If `true`, the element will have its spelling and grammar checked. */
  spellcheck: boolean;
  /**
   * Works with the min and max attributes to limit the increments at which a value can be set.
   * Possible values are: `"any"` or a positive floating point number.
   */
  step: string;
  /** Control type. */
  type: TextFieldTypes;
  /** Tooltip text to display. */
  tooltip: string;
  /** Input value. */
  value: string | number | null;
  /**
   * Emitted when the value has changed.
   */
  abdsChange: EventEmitter<InputChangeEventDetail>;
  /**
   * Emitted when the input loses focus.
   */
  abdsBlur: EventEmitter<FocusEvent>;
  /**
   * Emitted when the input has focus.
   */
  abdsFocus: EventEmitter<FocusEvent>;
  /**
   * Emitted when a keyboard input occurred.
   */
  abdsInput: EventEmitter<KeyboardEvent>;
  /** Emitted on invalid input. */
  abdsInvalid: EventEmitter;
  /**
   * Emitted when the styles change.
   * @internal
   */
  abdsStyle: EventEmitter<StyleEventDetail>;
  protected debounceChanged(): void;
  protected disabledChanged(): void;
  /**
   * Update the item classes when the placeholder changes
   */
  protected placeholderChanged(): void;
  /**
   * Update the native input element when the value changes
   */
  protected valueChanged(): void;
  hasFocus: boolean;
  /**
   * Returns the native `<input>` element used under the hood.
   */
  getInputElement(): Promise<HTMLInputElement>;
  /**
   * Sets blur on the native `input` in `abds-input`. Use this method instead of the global
   * `input.blur()`.
   * @internal
   */
  setBlur(): Promise<void>;
  /**
   * Sets focus on the native `input` in `abds-input`. Use this method instead of the global
   * `input.focus()`.
   */
  setFocus(): Promise<void>;
  connectedCallback(): void;
  componentWillLoad(): void;
  disconnectedCallback(): void;
  render(): any;
}
