import { SymbolRegistry } from '@agorapulse/ui-symbol';
import * as i0 from '@angular/core';
import { OnInit, EventEmitter } from '@angular/core';
import { ControlValueAccessor, Validator, FormGroup, FormControl, ValidationErrors } from '@angular/forms';

interface PhoneNumberInfo {
    countryCode: string;
    countryName: string;
    phoneNumberCode: string;
}
interface Phone {
    phoneNumber: string;
    phoneNumberCode: string;
}
declare class PhoneNumberInputComponent implements ControlValueAccessor, Validator, OnInit {
    private readonly destroyRef;
    set errorsDisplayForced(errorsDisplayForced: boolean);
    flagsBucketUrl: string;
    set phoneNumberInfos(phoneNumberInfos: PhoneNumberInfo[]);
    codeNumberInfos: PhoneNumberInfo[];
    countryCodeMappedPhoneNumberInfos: Record<string, PhoneNumberInfo>;
    name: string;
    placeholder: string;
    searchPlaceholder: string;
    set phoneNumber(phoneNumber: string);
    set phoneNumberCode(phoneNumberCode: string);
    set initialCountryCode(initialCountryCode: string);
    changePhoneNumber: EventEmitter<string>;
    changePhoneNumberCode: EventEmitter<string>;
    formGroup: FormGroup<{
        countryCode: FormControl<string | null>;
        phoneNumber: FormControl<string | null>;
    }>;
    onTouched: any;
    onChange: any;
    constructor(symbolRegistry: SymbolRegistry);
    ngOnInit(): void;
    registerOnChange(fn: any): void;
    registerOnTouched(fn: any): void;
    validate(): ValidationErrors | null;
    writeValue(phone: Phone | null): void;
    phoneNumberCodeSearchFn(term: string, item: PhoneNumberInfo): boolean;
    markAsTouched(): void;
    /**
     * Filter the phone number input to only allow numbers
     */
    filterChars(event: InputEvent): void;
    private findPhoneNumberInfoByCountryCode;
    static ɵfac: i0.ɵɵFactoryDeclaration<PhoneNumberInputComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<PhoneNumberInputComponent, "ap-phone-number-input", never, { "errorsDisplayForced": { "alias": "errorsDisplayForced"; "required": false; }; "flagsBucketUrl": { "alias": "flagsBucketUrl"; "required": true; }; "phoneNumberInfos": { "alias": "phoneNumberInfos"; "required": true; }; "name": { "alias": "name"; "required": true; }; "placeholder": { "alias": "placeholder"; "required": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": true; }; "phoneNumber": { "alias": "phoneNumber"; "required": false; }; "phoneNumberCode": { "alias": "phoneNumberCode"; "required": false; }; "initialCountryCode": { "alias": "initialCountryCode"; "required": false; }; }, { "changePhoneNumber": "changePhoneNumber"; "changePhoneNumberCode": "changePhoneNumberCode"; }, never, never, true, never>;
}

export { PhoneNumberInputComponent };
export type { Phone, PhoneNumberInfo };
