import { ElementRef, EventEmitter, PipeTransform, Renderer2, OnInit, AfterViewChecked } from '@angular/core';
import { ControlValueAccessor } from '@angular/forms';
import { MaskParsingService, MaskOptions } from './mask-parsing.service';
import { IBaseEventArgs, PlatformUtil } from '../../core/utils';
import * as i0 from "@angular/core";
export declare class IgxMaskDirective implements OnInit, AfterViewChecked, ControlValueAccessor {
    protected elementRef: ElementRef<HTMLInputElement>;
    protected maskParser: MaskParsingService;
    protected renderer: Renderer2;
    protected platform: PlatformUtil;
    /**
     * Sets the input mask.
     * ```html
     * <input [igxMask] = "'00/00/0000'">
     * ```
     */
    get mask(): string;
    set mask(val: string);
    /**
     * Sets the character representing a fillable spot in the input mask.
     * Default value is "'_'".
     * ```html
     * <input [promptChar] = "'/'">
     * ```
     */
    promptChar: string;
    /**
     * Specifies if the bound value includes the formatting symbols.
     * ```html
     * <input [includeLiterals] = "true">
     * ```
     */
    includeLiterals: boolean;
    /**
     * Specifies a pipe to be used on blur.
     * ```html
     * <input [displayValuePipe] = "displayFormatPipe">
     * ```
     */
    displayValuePipe: PipeTransform;
    /**
     * Specifies a pipe to be used on focus.
     * ```html
     * <input [focusedValuePipe] = "inputFormatPipe">
     * ```
     */
    focusedValuePipe: PipeTransform;
    /**
     * Emits an event each time the value changes.
     * Provides `rawValue: string` and `formattedValue: string` as event arguments.
     * ```html
     * <input (valueChanged) = "valueChanged(rawValue: string, formattedValue: string)">
     * ```
     */
    valueChanged: EventEmitter<IMaskEventArgs>;
    /** @hidden */
    get nativeElement(): HTMLInputElement;
    /** @hidden @internal; */
    protected get inputValue(): string;
    /** @hidden @internal */
    protected set inputValue(val: string);
    /** @hidden */
    protected get maskOptions(): MaskOptions;
    /** @hidden */
    protected get selectionStart(): number;
    /** @hidden */
    protected get selectionEnd(): number;
    /** @hidden */
    protected get start(): number;
    /** @hidden */
    protected get end(): number;
    protected _composing: boolean;
    protected _compositionStartIndex: number;
    protected _focused: boolean;
    private _compositionValue;
    private _end;
    private _start;
    private _key;
    private _mask;
    private _oldText;
    private _dataValue;
    private _droppedData;
    private _hasDropAction;
    private readonly defaultMask;
    protected _onTouchedCallback: () => void;
    protected _onChangeCallback: (_: any) => void;
    constructor(elementRef: ElementRef<HTMLInputElement>, maskParser: MaskParsingService, renderer: Renderer2, platform: PlatformUtil);
    /** @hidden */
    onKeyDown(event: KeyboardEvent): void;
    /** @hidden @internal */
    onCompositionStart(): void;
    /** @hidden @internal */
    onCompositionEnd(): void;
    /** @hidden @internal */
    onInputChanged(event: any): void;
    /** @hidden */
    onPaste(): void;
    /** @hidden */
    onFocus(): void;
    /** @hidden */
    onBlur(value: string): void;
    /** @hidden */
    onDragEnter(): void;
    /** @hidden */
    onDragLeave(): void;
    /** @hidden */
    onDrop(event: DragEvent): void;
    /** @hidden */
    ngOnInit(): void;
    /**
     * TODO: Remove after date/time picker integration refactor
     *
     * @hidden
     */
    ngAfterViewChecked(): void;
    /** @hidden */
    writeValue(value: string): void;
    /** @hidden */
    registerOnChange(fn: (_: any) => void): void;
    /** @hidden */
    registerOnTouched(fn: () => void): void;
    /** @hidden */
    protected showMask(value: string): void;
    /** @hidden */
    protected setSelectionRange(start: number, end?: number): void;
    /** @hidden */
    protected afterInput(): void;
    /** @hidden */
    protected setPlaceholder(value: string): void;
    private updateInputValue;
    private updateInput;
    private showDisplayValue;
    static ɵfac: i0.ɵɵFactoryDeclaration<IgxMaskDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<IgxMaskDirective, "[igxMask]", ["igxMask"], { "mask": { "alias": "igxMask"; "required": false; }; "promptChar": { "alias": "promptChar"; "required": false; }; "includeLiterals": { "alias": "includeLiterals"; "required": false; }; "displayValuePipe": { "alias": "displayValuePipe"; "required": false; }; "focusedValuePipe": { "alias": "focusedValuePipe"; "required": false; }; }, { "valueChanged": "valueChanged"; }, never, never, true, never>;
    static ngAcceptInputType_includeLiterals: unknown;
}
/**
 * The IgxMaskModule provides the {@link IgxMaskDirective} inside your application.
 */
export interface IMaskEventArgs extends IBaseEventArgs {
    rawValue: string;
    formattedValue: string;
}
