import { ChangeDetectorRef, InjectionToken, OnInit } from '@angular/core';
import { ControlValueAccessor, NgForm } from '@angular/forms';
import IMask from 'imask';
import { ControlComponent } from '../control/control.component';
import { AutocompleteValue } from '../autocomplete';
import * as i0 from "@angular/core";
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?: InputType;
    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 changeDetectorRef;
    private strategy;
    private form;
    private control;
    name: string;
    autocomplete: AutocompleteValue;
    flexible: boolean;
    set setFlexible(value: boolean);
    value: any;
    required: boolean;
    set setRequired(value: boolean);
    disabled: boolean;
    set setDisabled(value: boolean);
    autofocus: boolean;
    set setAutofocus(value: boolean);
    private _type;
    private _mask;
    private _placeholder;
    private _inputmode;
    private _prefix;
    private onChange;
    private onTouched;
    private _pattern;
    constructor(changeDetectorRef: ChangeDetectorRef, strategy: InputStrategy, form: NgForm, control: ControlComponent);
    ngOnInit(): void;
    get label(): any;
    get isFilled(): boolean;
    set type(value: "number" | "password" | "text" | "date" | "amount" | "email" | "tel" | "iban");
    get type(): "number" | "password" | "text" | "date" | "amount" | "email" | "tel" | "iban";
    set pattern(value: string);
    get pattern(): string;
    set prefix(value: string);
    get prefix(): string;
    set inputmode(value: InputMode);
    get inputmode(): InputMode;
    set mask(value: IMask.AnyMaskedOptions);
    get mask(): IMask.AnyMaskedOptions;
    set placeholder(value: string);
    get placeholder(): string;
    registerOnChange(fn: any): void;
    registerOnTouched(fn: () => {}): void;
    writeValue(outsideValue: any): void;
    setDisabledState(isDisabled: boolean): void;
    updateValue(insideValue: any): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<InputComponent, [null, { optional: true; }, { optional: true; }, { optional: true; }]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<InputComponent, "ui-input", never, { "name": "name"; "autocomplete": "autocomplete"; "setFlexible": "flexible"; "setRequired": "required"; "setDisabled": "disabled"; "setAutofocus": "autofocus"; "type": "type"; "pattern": "pattern"; "prefix": "prefix"; "inputmode": "inputmode"; "mask": "mask"; "placeholder": "placeholder"; }, {}, never, never, false>;
}
