import { EventEmitter } from '../../stencil-public-runtime';
import { TextFieldType } from '../../types/InputType';
import { InputModeType } from '../../types/InputMode';
import { AutocompleteType } from '../../types/Autocomplete';
export declare class TeliaTextInput {
  /** Test id set for web component host */
  dataTestid: string;
  /** ID of the form this component belongs to. Should only be set If the component is not wrapped inside its form element. */
  htmlForm: string;
  /** Type of input as a string */
  type: TextFieldType;
  /** Label of input */
  label: string;
  /** Value of input */
  value: string;
  /** Placeholder text */
  placeholder?: string;
  /** Name of the form control when submitted */
  name: string;
  /** Additional description */
  additional?: string;
  /** Additional description id */
  additionalId: string;
  /** Input element id */
  inputId: string;
  /** Error description id */
  errorId: string;
  /** Disabled state */
  disabled: boolean;
  /** The minimum number of characters long the input can be and still be considered valid */
  minlength?: number;
  /** The maximum number of characters the input should accept */
  maxlength?: number;
  /** Readonly state */
  readonly: boolean;
  /** Input mode for defining specific virtual keyboard  */
  inputmode?: InputModeType;
  /** The id attribute of the datalist */
  list?: string;
  /** Hint for form autofill feature  */
  autocomplete?: AutocompleteType;
  /** Field needs to be filled, so it can be submitted  */
  required: boolean;
  /** Error message for required  */
  requiredErrorMessage?: string;
  /** Error message for email type input validation */
  emailErrorMessage?: string;
  /** Error message for minlength  */
  minlengthErrorMessage?: string;
  /** Show valid icon when value passes all validations. Use sparingly. */
  showValidIcon: boolean;
  /** Valid text pattern  */
  pattern?: string;
  /** Error message for pattern mismatch  */
  patternErrorMessage?: string;
  /** General error message, which overrides other error messages and is shown at initial render */
  errorMessage?: string;
  /** Tracking id is used to identify and count Component usage */
  private dataTrackingId;
  /** [DEPRECATED: 2022-02-18]: Use `input` event instead.
   *  Custom event for native input onChange event
   **/
  valueChange: EventEmitter;
  /**
   * Input has been blurred at least once.
   */
  touched: boolean;
  /**
   * Input has received data at least once.
   */
  dirty: boolean;
  /**
   * Real time value of input
   */
  inputValue: string;
  /**
   * Error message
   */
  errorMessageState: string;
  private inputElement;
  /**
   * Sets focus on input
   */
  focusInput(): Promise<void>;
  componentWillLoad(): void;
  componentWillUpdate(): void;
  componentDidRender(): void;
  /**
   * Watch if value attributes changes after initial load.
   * Needed for prefilling functionality to work with input validations.
   * @param value value attribute
   */
  componentValueChanged(value: string): void;
  private updateInputValue;
  /**
   * Check if input value state is valid with given pattern. This is
   * imitating native input validation.
   */
  private isValuePatternValid;
  private isValueLessThanMinlength;
  /**
   * Check if validation failed due to type mismatch.
   * Type mismatch is set to true when email, url, ... field type built-in validation triggers
   */
  private isValueTypeInvalid;
  /**
   * Update error message and keep native input error message in sync.
   */
  private updateErrorMessage;
  /**
   * Check if input value is empty, so required should be triggered.
   */
  private isValueMissing;
  private updateErrorState;
  /**
   * This method is used to determine
   * if a 'valid icon' can be shown to the user.
   * Given the complexity of the validation logic
   * in this component, using this method
   * to determine 'validity' in a general sense
   * should be carefully considered and tested.
   */
  private isValid;
  render(): any;
}
