import { EventEmitter, InjectionToken, Injector, OnInit } from '@angular/core';
import { ControlValueAccessor, NgControl, NgForm } from '@angular/forms';
import { FormDisabledDirective } from '../form-disabled.directive';
import { Icon, IconColor } from '../../icon/icon.component';
import IMask from 'imask';
import { Observable } from 'rxjs';
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';
declare type InputType = 'text' | 'password' | 'email' | 'tel' | 'number' | 'date' | 'iban' | 'amount';
export declare const INPUT_STRATEGY: InjectionToken<InputStrategy>;
export interface InputStrategy {
    type?: string;
    mask?: IMask.AnyMaskedOptions;
    placeholder?: string;
    parse?(outsideValue: any): any;
    format?(insideValue: any): any;
}
export declare class InputComponent implements ControlValueAccessor, OnInit {
    private injector;
    private strategy;
    private form;
    private formDisabled;
    label: string;
    name: string;
    type: InputType;
    autocomplete: AutocompleteValue;
    approved: boolean;
    icon: Icon;
    iconColor: IconColor;
    error: string;
    mask: IMask.AnyMaskedOptions;
    placeholder: string;
    value: any;
    size: 'small' | 'large';
    focused: EventEmitter<boolean>;
    onfocus: Observable<void>;
    onblur: Observable<void>;
    private model;
    required: boolean;
    set setRequired(value: boolean);
    disabled: boolean;
    set setDisabled(value: boolean);
    autofocus: boolean;
    set setAutofocus(value: boolean);
    private onChange;
    private onTouched;
    isPasswordVisible: boolean;
    control: NgControl;
    constructor(injector: Injector, strategy: InputStrategy, form: NgForm, formDisabled: FormDisabledDirective);
    ngOnInit(): void;
    get invalid(): boolean;
    get isFilled(): boolean;
    get viewDisabled(): boolean;
    get viewType(): string;
    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;
    focusin(): void;
    focusout(): void;
}
export {};
