import { ElementRef, EventEmitter, OnInit, TemplateRef, ViewContainerRef } from '@angular/core';
import { ControlValueAccessor, UntypedFormControl } from '@angular/forms';
import { CountryPhoneData } from './models/country-phone-data';
import { Ordination } from './models/ordination';
import { PhoneSelectionData } from './models/phone-selection-data';
import * as i0 from "@angular/core";
/**
 * @description Componente seletor de país e número de telefone com máscara dinâmica.
 * Exibe uma lista de países com seus códigos DDI e aplica automaticamente a máscara
 * de formatação do número conforme o país selecionado. Implementa {@link ControlValueAccessor}
 * para integração com formulários Angular.
 *
 * @example
 * ```html
 * <s-country-phone-picker
 *   formControlName="telefone"
 *   [countries]="['BR', 'US', 'AR']"
 *   (selected)="onPaisSelecionado($event)" />
 * ```
 *
 * @category Inputs
 */
export declare class CountryPhonePickerComponent implements OnInit, ControlValueAccessor {
    private readonly _countryPhonePickerService;
    private readonly _translate;
    private readonly _eRef;
    private readonly platformId;
    /**
     * @description Lista de códigos de país (ISO 3166-1 alpha-2) exibidos no seletor.
     * Quando vazia, todos os países disponíveis são listados.
     *
     * @default []
     */
    countries: string[];
    /**
     * @description Critério de ordenação dos países na lista.
     * Aceita os valores do enum `Ordination` (ex.: por nome, por DDI, sem ordenação).
     *
     * @default Ordination.NO
     */
    ordination: Ordination;
    /**
     * @description Emitido quando o usuário seleciona um país no dropdown.
     * Emite um objeto {@link CountryPhoneData} com dados do país escolhido.
     */
    selected: EventEmitter<CountryPhoneData>;
    /**
     * @description Emitido quando o campo de número de telefone perde o foco.
     * Emite o objeto {@link PhoneSelectionData} com país e número atuais, ou `null`.
     */
    focusLost: EventEmitter<PhoneSelectionData | null>;
    phoneInput: ElementRef | null;
    private readonly filterInput;
    isFocused: boolean;
    mask: string | null;
    selectedItem: CountryPhoneData | null;
    currentItemIndex: number;
    filteredCountriesList: CountryPhoneData[];
    phone: UntypedFormControl;
    filter: UntypedFormControl;
    dropTop: number;
    dropLeft: number;
    private _value;
    private _onChange?;
    private _onTouched?;
    private _countriesList;
    private _open;
    private _offsetTop;
    private _portalHost;
    dropdownTemplate: TemplateRef<any> | null;
    viewContainerRef: ViewContainerRef | null;
    dropElement: ElementRef | null;
    dropdownContainer: ElementRef | null;
    get value(): PhoneSelectionData | null;
    set value(value: PhoneSelectionData);
    get open(): boolean;
    set open(open: boolean);
    onClickout(event: MouseEvent): void;
    onKeydown(event: KeyboardEvent): void;
    writeValue(value: PhoneSelectionData): void;
    registerOnChange(onChange: (value: PhoneSelectionData) => void): void;
    registerOnTouched(onTouched: (value: PhoneSelectionData) => void): void;
    ngOnInit(): void;
    onSelectItem(country: CountryPhoneData): void;
    onCleanFilter(): void;
    onPhoneInputFocus(): void;
    onBlur(value: PhoneSelectionData | null): void;
    getMask(): string | null;
    getPlaceholder(): string | null;
    private _getSelectedCountryDefault;
    private readonly _filterCountries;
    private _moveToUp;
    private static readonly SCROLL_OFFSET_THRESHOLD;
    private static readonly SCROLL_AMOUNT_PER_ITEM;
    private _moveToDown;
    private _applyMask;
    private _createDropdownPortal;
    static ɵfac: i0.ɵɵFactoryDeclaration<CountryPhonePickerComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<CountryPhonePickerComponent, "s-country-phone-picker", never, { "countries": { "alias": "countries"; "required": false; }; "ordination": { "alias": "ordination"; "required": false; }; }, { "selected": "selected"; "focusLost": "focusLost"; }, never, never, false, never>;
}
