import { FocusMonitor } from '@angular/cdk/a11y';
import { ChangeDetectorRef, DoCheck, ElementRef, EventEmitter, OnDestroy, OnInit } from '@angular/core';
import { FormGroupDirective, NgControl, NgForm } from '@angular/forms';
import { ErrorStateMatcher } from '@angular/material/core';
import { MatMenu } from '@angular/material/menu';
import { CountryCode as CC, E164Number, NationalNumber, PhoneNumber } from 'libphonenumber-js';
import { Subject } from 'rxjs';
import { CountryCode } from './country-code';
import { Country } from './country.model';
import { PhoneNumberFormat } from './mat-tel-format.model';
import * as i0 from "@angular/core";
declare class matTelInputBase {
    _defaultErrorStateMatcher: ErrorStateMatcher;
    _parentForm: NgForm;
    _parentFormGroup: FormGroupDirective;
    ngControl: NgControl;
    constructor(_defaultErrorStateMatcher: ErrorStateMatcher, _parentForm: NgForm, _parentFormGroup: FormGroupDirective, ngControl: NgControl);
}
export declare class MatTelInput extends matTelInputBase implements OnInit, DoCheck, OnDestroy {
    private _changeDetectorRef;
    private countryCodeData;
    private _focusMonitor;
    private _elementRef;
    static nextId: number;
    matMenu: MatMenu;
    menuSearchInput?: ElementRef<HTMLInputElement>;
    focusable: ElementRef;
    id: string;
    get shouldLabelFloat(): boolean;
    autocomplete: 'off' | 'tel';
    cssClass?: string;
    errorStateMatcher: ErrorStateMatcher;
    placeholder: string;
    maxLength: string | number;
    name?: string;
    onlyCountries: string[];
    preferredCountries: string[];
    searchPlaceholder: string;
    enablePlaceholder: boolean;
    enableSearch: boolean;
    resetOnChange: boolean;
    set format(value: PhoneNumberFormat);
    get format(): PhoneNumberFormat;
    private _required;
    set required(value: boolean);
    get required(): boolean;
    private _disabled;
    set disabled(value: boolean);
    get disabled(): boolean;
    get empty(): boolean;
    countryChanged: EventEmitter<Country>;
    stateChanges: Subject<void>;
    focused: boolean;
    describedBy: string;
    phoneNumber?: E164Number | NationalNumber;
    allCountries: Country[];
    preferredCountriesInDropDown: Country[];
    selectedCountry: Country;
    numberInstance?: PhoneNumber;
    value?: any;
    searchCriteria?: string;
    private _previousFormattedNumber?;
    private _format;
    onTouched: () => void;
    propagateChange: (_: any) => void;
    private errorState?;
    constructor(_changeDetectorRef: ChangeDetectorRef, countryCodeData: CountryCode, _focusMonitor: FocusMonitor, _elementRef: ElementRef<HTMLElement>, _ngControl: NgControl, _parentForm: NgForm, _parentFormGroup: FormGroupDirective, _defaultErrorStateMatcher: ErrorStateMatcher);
    ngOnInit(): void;
    updateErrorState(): void;
    private _setDefaultCountry;
    ngDoCheck(): void;
    ngOnDestroy(): void;
    onPhoneNumberChange(): void;
    private _setCountry;
    onCountrySelect(country: Country, el: HTMLInputElement): void;
    getCountry(code: CC): Country;
    onInputKeyPress(event: any): void;
    protected fetchCountryData(): void;
    private _getPhoneNumberPlaceHolder;
    registerOnChange(fn: any): void;
    registerOnTouched(fn: any): void;
    setDisabledState(isDisabled: boolean): void;
    writeValue(value: any): void;
    setDescribedByIds(ids: string[]): void;
    onContainerClick(event: MouseEvent): void;
    reset(): void;
    private formattedPhoneNumber;
    private formatAsYouTypeIfEnabled;
    static ɵfac: i0.ɵɵFactoryDeclaration<MatTelInput, [null, null, null, null, { optional: true; self: true; }, { optional: true; }, { optional: true; }, null]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<MatTelInput, "mat-tel-input", never, { "autocomplete": { "alias": "autocomplete"; "required": false; }; "cssClass": { "alias": "cssClass"; "required": false; }; "errorStateMatcher": { "alias": "errorStateMatcher"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "maxLength": { "alias": "maxLength"; "required": false; }; "name": { "alias": "name"; "required": false; }; "onlyCountries": { "alias": "onlyCountries"; "required": false; }; "preferredCountries": { "alias": "preferredCountries"; "required": false; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; }; "enablePlaceholder": { "alias": "enablePlaceholder"; "required": false; }; "enableSearch": { "alias": "enableSearch"; "required": false; }; "resetOnChange": { "alias": "resetOnChange"; "required": false; }; "format": { "alias": "format"; "required": false; }; "required": { "alias": "required"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, { "countryChanged": "countryChanged"; }, never, never, true, never>;
    static ngAcceptInputType_enablePlaceholder: unknown;
    static ngAcceptInputType_enableSearch: unknown;
    static ngAcceptInputType_resetOnChange: unknown;
    static ngAcceptInputType_required: unknown;
    static ngAcceptInputType_disabled: unknown;
}
export {};
