/** @component input */
import { DoCheck, ElementRef, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';
import { AutofillMonitor } from '@angular/cdk/text-field';
import { Platform } from '@angular/cdk/platform';
import { InputContainerService } from '../input-container/input-container.service';
import { InputService } from './input.service';
import { Subject } from 'rxjs';
import { ControlValueAccessor, FormGroupDirective, NgControl, NgForm } from '@angular/forms';
export declare class InputDirective implements ControlValueAccessor, DoCheck, InputContainerService<any>, OnChanges, OnDestroy, OnInit {
    protected _elementRef: ElementRef<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>;
    protected _platform: Platform;
    private _autofillMonitor;
    private inputService;
    ngControl: NgControl;
    private _destroyed;
    private _inputValueAccessor;
    private _ngControl;
    private _parentForm;
    private _parentFormGroup;
    private _readonly;
    protected _disabled: boolean;
    protected _id: string;
    protected _previousNativeValue: any;
    protected _required: boolean;
    protected _type: string;
    protected _uid: string;
    readonly stateChanges: Subject<void>;
    autofilled: boolean;
    _ariaDescribedby: string;
    _inputAfter: boolean;
    _inputBefore: boolean;
    focused: boolean;
    errorState: boolean;
    status: string;
    /** @prop Optional css class string | ''  */
    class: string;
    /*** @prop Unique HTML ID used for tying label to HTML input | 'md-in-<uniqueId>' */
    id: string;
    disabled: boolean;
    /*** @prop Placeholder text to display when Input is empty | '' */
    placeholder: string;
    /*** @prop Determines if Input can be edited | false */
    readonly: boolean;
    /*** @prop Determines if Input is required | false */
    required: boolean;
    /** @prop Input shape property | '' */
    shape: string;
    type: string;
    /*** @prop Input value | '' */
    value: string;
    protected _neverEmptyInputTypes: string[];
    readonly _class: string;
    constructor(_elementRef: ElementRef<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>, _platform: Platform, _autofillMonitor: AutofillMonitor, inputService: InputService, ngControl: NgControl, _parentForm: NgForm, _parentFormGroup: FormGroupDirective);
    ngDoCheck(): void;
    ngOnChanges(changes: SimpleChanges): void;
    ngOnInit(): void;
    ngOnDestroy(): void;
    protected _isNeverEmpty(): boolean;
    /** Checks whether the input is invalid based on the native validation. */
    protected _isBadInput(): boolean;
    protected _isTextarea(): boolean;
    protected _validateType(): void;
    readonly empty: boolean;
    /** Callback for the cases where the focused state of the input changes. */
    handleFocusChange(isFocused: boolean): void;
    handleInput(): void;
    onChange: any;
    onTouch: any;
    registerOnChange(fn: any): void;
    registerOnTouched(fn: any): void;
    setDescribedByIds(ids: string[]): void;
    setDisabledState?(isDisabled: boolean): void;
    updateErrorState(): void;
    writeValue(value: any): void;
    private _dirtyCheckNativeValue;
}
