import { ChangeDetectorRef, EventEmitter, InjectionToken, Injector, OnInit } from '@angular/core';
import { ControlValueAccessor, NgControl, NgForm, NgModelGroup } from '@angular/forms';
import { FormDisabledDirective } from '../form-disabled.directive';
import { Icon, IconColor } from '../../icon/icon.component';
import IMask from 'imask';
import { Observable, ReplaySubject } from 'rxjs';
import { FocusOrigin } from '@angular/cdk/a11y';
export declare type AutocompleteValue = string | 'on' | 'off' | 'password-current' | 'password-new' | 'cc-name' | 'cc-number' | 'cc-csc' | 'cc-exp' | 'cc-exp-month' | 'cc-exp-year' | 'cc-type' | 'name' | 'given-name' | 'additional-name' | 'family-name' | 'email' | 'tel' | 'street-address' | 'locality' | 'region' | 'postal-code' | 'country' | 'address-line1' | 'address-line2' | 'address-level1' | 'address-level2';
export declare const inputTypes: readonly ["text", "password", "email", "tel", "number", "date", "iban", "amount"];
export declare type InputType = typeof inputTypes[number];
export declare type InputMode = 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search';
export declare const INPUT_STRATEGY: InjectionToken<InputStrategy>;
export interface InputStrategy {
    type?: string;
    mask?: IMask.AnyMaskedOptions;
    placeholder?: string;
    prefix?: string;
    inputMode?: InputMode;
    parse?(outsideValue: any): any;
    format?(insideValue: any): any;
}
export declare class InputComponent implements ControlValueAccessor, OnInit {
    private injector;
    private changeDetectorRef;
    private strategy;
    modelGroup: NgModelGroup;
    private form;
    private formDisabled;
    label: string;
    name: string;
    type: InputType;
    autocomplete: AutocompleteValue;
    approved: boolean;
    icon: Icon;
    iconColor: IconColor;
    mask: IMask.AnyMaskedOptions;
    placeholder: string;
    value: any;
    inputmode: InputMode;
    groupValidation: boolean;
    focusSubject: ReplaySubject<boolean>;
    focused: Observable<boolean>;
    onfocus: Observable<void>;
    onblur: Observable<void>;
    keydown: EventEmitter<KeyboardEvent>;
    private _focused;
    private model;
    private input;
    required: boolean;
    set setRequired(value: boolean);
    disabled: boolean;
    set setDisabled(value: boolean);
    autofocus: boolean;
    set setAutofocus(value: boolean);
    private onChange;
    private onTouched;
    private _pattern;
    isPasswordVisible: boolean;
    control: NgControl;
    constructor(injector: Injector, changeDetectorRef: ChangeDetectorRef, strategy: InputStrategy, modelGroup: NgModelGroup, form: NgForm, formDisabled: FormDisabledDirective);
    ngOnInit(): void;
    get invalid(): boolean;
    get isFocused(): boolean;
    get isFilled(): boolean;
    get viewDisabled(): boolean;
    get viewType(): string;
    set pattern(value: string);
    get pattern(): string;
    get prefix(): string;
    get viewInputMode(): InputMode;
    get viewMask(): IMask.AnyMaskedOptions;
    get viewPlaceholder(): string;
    get hasPasswordToggle(): boolean;
    passwordToggle(): void;
    registerOnChange(fn: any): void;
    registerOnTouched(fn: () => {}): void;
    writeValue(outsideValue: any): void;
    setDisabledState(isDisabled: boolean): void;
    updateValue(insideValue: any): void;
    focus(origin: FocusOrigin): void;
    clear(): void;
    onKeydown(event: KeyboardEvent): void;
}
