import * as i0 from '@angular/core';
import { OnInit, OnDestroy, EventEmitter } from '@angular/core';
import { ControlValueAccessor, FormControl } from '@angular/forms';

interface Country {
    code: string;
    name: string;
    flagUrl: string;
}
declare class CountrySelectorComponent implements OnInit, OnDestroy, ControlValueAccessor {
    initialCountryCode: string;
    includeFlags: boolean;
    onlyCountries: string[];
    excludeCountries: string[];
    placeholder: string;
    containerClass: string;
    inputClass: string;
    dropdownClass: string;
    flagClass: string;
    selectedFlagClass: string;
    itemClass: string;
    activeItemClass: string;
    countrySelected: EventEmitter<Country | null>;
    countries: Country[];
    filteredCountries: Country[];
    selectedCountry: Country | null;
    countrySearchControl: FormControl<string | null>;
    displayValue: string;
    showDropdown: boolean;
    highlightIndex: number;
    activeDescendant: string;
    private onChange;
    private onTouched;
    private destroy$;
    private blurTimeout;
    ngOnInit(): void;
    ngOnDestroy(): void;
    writeValue(country: Country | null): void;
    registerOnChange(fn: (value: Country | null) => void): void;
    registerOnTouched(fn: () => void): void;
    setDisabledState(isDisabled: boolean): void;
    private getFilteredCountries;
    private _filterCountries;
    selectCountry(country: Country | null): void;
    onFocus(): void;
    onBlur(): void;
    onKeyDown(event: KeyboardEvent): void;
    private setActiveDescendant;
    static ɵfac: i0.ɵɵFactoryDeclaration<CountrySelectorComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<CountrySelectorComponent, "cs-country-selector", never, { "initialCountryCode": { "alias": "initialCountryCode"; "required": false; }; "includeFlags": { "alias": "includeFlags"; "required": false; }; "onlyCountries": { "alias": "onlyCountries"; "required": false; }; "excludeCountries": { "alias": "excludeCountries"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "containerClass": { "alias": "containerClass"; "required": false; }; "inputClass": { "alias": "inputClass"; "required": false; }; "dropdownClass": { "alias": "dropdownClass"; "required": false; }; "flagClass": { "alias": "flagClass"; "required": false; }; "selectedFlagClass": { "alias": "selectedFlagClass"; "required": false; }; "itemClass": { "alias": "itemClass"; "required": false; }; "activeItemClass": { "alias": "activeItemClass"; "required": false; }; }, { "countrySelected": "countrySelected"; }, never, never, true, never>;
}

export { CountrySelectorComponent };
export type { Country };
