import { AfterViewInit, DoCheck, ElementRef, OnInit } from '@angular/core';
import { ControlContainer, ControlValueAccessor, FormControl } from '@angular/forms';
import { ThemePalette } from '@angular/material/core';
import { MatFormFieldAppearance } from '@angular/material/form-field';
import { CountryData, CountryISO, PhoneNumber } from './phone-number.model';
import * as i0 from "@angular/core";
/**
 * Phone number component
 */
export declare class PhoneNumberComponent implements OnInit, AfterViewInit, ControlValueAccessor, DoCheck {
    private readonly controlContainer?;
    /**
     * Phone number label
     */
    label?: string;
    /**
     * Phone number placeholder
     */
    placeholder?: string;
    /**
     * Material appearance for the input
     * Default value is fill
     */
    appearance: MatFormFieldAppearance;
    /**
     * Material theme palette for the input
     */
    color: ThemePalette;
    /**
     * Bind the dropdown with a formControl
     *
     * Alternative : formControlName
     */
    formControl?: FormControl<PhoneNumber>;
    /**
     * Bind the dropdown with a formControlName
     *
     * Alternative : formControl
     */
    formControlName?: string;
    /**
     * Country iso list available in dropdown (default: All countries)
     */
    countriesList?: CountryISO[];
    countriesData: CountryData[];
    countryIndicatorForm: FormControl<CountryData>;
    phoneNumberForm: FormControl<string>;
    indicator: ElementRef;
    selectIndicatorBorderDiv: Element;
    selectIndicatorBottomLine: Element;
    number: ElementRef;
    inputNumberBorderDiv: Element;
    inputNumberBottomLine: Element;
    /**
     * Css classes to focus
     */
    textFieldFocusedClass: string;
    lineRippleDeactivatingClass: string;
    lineRippleActiveClass: string;
    lineRippleInvalidClass: string;
    onChange: (_: PhoneNumber) => void;
    onTouch: () => void;
    constructor(controlContainer?: ControlContainer);
    /**
     * Get the parent control using input or control container
     */
    get parentControl(): FormControl<PhoneNumber> | undefined;
    ngOnInit(): void;
    ngAfterViewInit(): void;
    /**
     * Do check
     * Detect touched on the formControl
     *
     * @returns
     */
    ngDoCheck(): void;
    /**
     * Apply onFocus css on both mat-form-field when one is focus
     */
    onFocusEvent(): void;
    /**
     * Remove onFocus css on both mat-form-field when no one is focus
     */
    onFocusOutEvent(): void;
    /**
     * Retrieve list of countries by iso list
     * @param isoList CountryIso list
     */
    retrieveCountriesByIso(isoList: CountryISO[]): CountryData[];
    /**
     * If control has validators, apply invalid style on both forms when a value is missing
     */
    addValidatorStyle(): void;
    /**
     * Trigger the change detection on formcontrol with the phone number value
     */
    onPhoneNumberChange(): void;
    /**
     * When the user first interacts with the form control, the control is considered to have the status touched, which is useful for styling.
     * In order to report to the parent form that the control was touched, we need to use a callback registered using the registerOnToched method
     */
    registerOnTouched(fn: any): void;
    /**
     * When a form value changes due to user input, we need to report the value back to the parent form.
     * This is done by calling a callback, that was initially registered with the control using the registerOnChange method
     */
    registerOnChange(fn: any): void;
    /**
     * This method is called by the Forms module to write a value into a form control
     */
    writeValue(value: PhoneNumber): void;
    /**
     * Form controls can be enabled and disabled using the Forms API.
     * This state can be transmitted to the form control via the setDisabledState method
     */
    setDisabledState(disabled: boolean): void;
    /**
     * Find country data by indicator
     * @param indicator
     * @returns
     */
    private findCountryData;
    /**
     * Return a string containing only numeric values from the
     * phone.number form field.
     */
    get phoneNumberDigits(): string | undefined;
    /**
     * Formats the phone number digits
     */
    formatNumber(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<PhoneNumberComponent, [{ optional: true; }]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<PhoneNumberComponent, "mic-phone-number", never, { "label": { "alias": "label"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "appearance": { "alias": "appearance"; "required": false; }; "color": { "alias": "color"; "required": false; }; "formControl": { "alias": "formControl"; "required": false; }; "formControlName": { "alias": "formControlName"; "required": false; }; "countriesList": { "alias": "countriesList"; "required": false; }; }, {}, never, never, false, never>;
}
