import { ElementRef, AfterContentInit, EventEmitter, OnDestroy, OnChanges, SimpleChanges, Renderer2, OnInit } from '@angular/core';
import { NgControl } from '@angular/forms';
import { Subscription } from 'rxjs';
import * as i0 from "@angular/core";
import * as i1 from "@angular/common";
export declare class EuiMaxLengthDirective implements OnInit, AfterContentInit, OnDestroy, OnChanges {
    private el;
    private renderer;
    private control;
    maxLength: number;
    isShowMaxlength: boolean;
    maxLengthReached: EventEmitter<boolean>;
    valueChangesSubscription: Subscription;
    private maxLengthSpan;
    private wrapper;
    private lengthCalcFn;
    constructor(el: ElementRef, renderer: Renderer2, control: NgControl);
    ngOnInit(): void;
    ngOnDestroy(): void;
    ngOnChanges(changes: SimpleChanges): void;
    ngAfterContentInit(): void;
    onChange(event: Event): void;
    onInput(event: KeyboardEvent): void;
    onPaste(event: ClipboardEvent): void;
    setLengthCalcFactory(fn: (input: string) => number): void;
    /**
     * calculates the maxLength of an input element. Calculation is made
     * against the value of the Model or Input Element.
     * @param value Optional the value to calculate max length against (override the Model one)
     * @private
     */
    private calculateMaxLength;
    private _refreshValue;
    /**
     * creates the maxLength box by adding it to DOM and attaching correct Classes
     * for Wrapper and Span (actual box holding max length)
     * @private
     */
    private createMaxLengthBox;
    /**
     * destroys the maxLength box from DOM
     * @private
     */
    private destroyMaxLengthBox;
    /**
     * returns the value based on whether control is present and control's updateOn
     * strategy. Check more https://angular.io/api/forms/AbstractControl#updateOn
     * @private
     */
    private getValue;
    static ɵfac: i0.ɵɵFactoryDef<EuiMaxLengthDirective, [null, null, { optional: true; self: true; }]>;
    static ɵdir: i0.ɵɵDirectiveDefWithMeta<EuiMaxLengthDirective, "    input[euiMaxlength],    textarea[euiMaxlength],    [ngModel][euiMaxlength],    [formControlName][euiMaxlength]", never, { "maxLength": "euiMaxlength"; "isShowMaxlength": "isShowMaxlength"; }, { "maxLengthReached": "maxLengthReached"; }, never>;
}
export declare class EuiMaxLengthDirectiveModule {
    static ɵmod: i0.ɵɵNgModuleDefWithMeta<EuiMaxLengthDirectiveModule, [typeof EuiMaxLengthDirective], [typeof i1.CommonModule], [typeof EuiMaxLengthDirective]>;
    static ɵinj: i0.ɵɵInjectorDef<EuiMaxLengthDirectiveModule>;
}
