import { VegaSlimmer } from '../../../../vega-slimmer/vega-slimmer-core';
import { VegaInputPhoneNumber } from '../../vega-input-phone-number';
import { VegaCountryCode } from '../../../../types/flag.type';
import { VegaCountryNameType } from '../../types';
export declare class CountrySelectRenderer extends VegaSlimmer {
  static readonly allCountries: VegaCountryNameType;
  protected host: VegaInputPhoneNumber['host'];
  protected size: VegaInputPhoneNumber['size'];
  protected disabled: VegaInputPhoneNumber['disabled'];
  protected countryCode: VegaInputPhoneNumber['countryCode'];
  protected allowedCountryCodes: VegaInputPhoneNumber['allowedCountryCodes'];
  protected countrySelectController: VegaInputPhoneNumber['countrySelectController'];
  protected countryChangeEventEmitter: VegaInputPhoneNumber['countryChangeEventEmitter'];
  protected valueController: VegaInputPhoneNumber['valueController'];
  protected phoneNumberInputValue: VegaInputPhoneNumber['phoneNumberInputValue'];
  protected value: VegaInputPhoneNumber['value'];
  private inputSelectRef;
  private valueUpdatedByCountryCodeChange;
  /**
   * The function `watchCountryCode` emits an event with the calling code, country code, and name of the
   * selected country.
   *
   * @param {VegaCountryCode} newCountryCode - The `newCountryCode` parameter in the `watchCountryCode` function is
   * of type `VegaCountryCode`. It is used to specify the country for which the function will perform
   * some actions, such as emitting an event with information about the country like calling code, name,
   * and the country code itself.
   */
  watchCountryCode(newCountryCode: VegaCountryCode): void;
  /**
   * set valueUpdatedByCountryCodeChange
   *
   * @param {boolean} valueUpdatedByCountryCodeChange state of valueUpdatedByCountryCodeChange
   */
  setValueUpdatedByCountryCodeChange(valueUpdatedByCountryCodeChange: boolean): void;
  /**
   * get valueUpdatedByCountryCodeChange
   */
  getValueUpdatedByCountryCodeChange(): boolean;
  /**
   * The `openSelectDropdown` function is an arrow function that is defined within the
   * `CountrySelectRenderer` class. It is responsible for triggering the `doOpen` method on the
   * `inputSelectRef` element, which is a reference to the HTMLVegaInputSelectElement.
   */
  openSelectDropdown: () => void;
  /**
   * The `render()` method in the `VegaInputPhoneNumberCountryCodeRenderer` class is responsible for
   * rendering the JSX structure of the component. Here's a breakdown of what it is doing:
   */
  render(): HTMLElement;
  private renderDropdownPrefixIconWithFlagIcon;
  /**
   * This `renderDropdownItem` function is responsible for rendering a dropdown item for a specific country in
   * the `VegaInputPhoneNumberCountryCodeRenderer` component.
   */
  private renderDropdownItem;
  /**
   *The `handleCountrySelectChange` method in the `CountrySelectRenderer` class is a private function
   *that is responsible for handling the change event when a country is selected in the input select
   *element of the component. Here's a breakdown of what it is doing:
   */
  private handleCountrySelectChange;
  /**
   * The function `getCountrySelectOptions` returns an array of country options based on custom and
   * search filters.
   *
   * @returns {VegaCountryType[]} An array of `VegaCountryType` objects that have passed through the `customCountriesFilter` and
   * `countrySearchFilter` filters.
   */
  private getCountrySelectOptions;
  /**
   * The function constructCountryArray takes a list of country names and returns an array of country
   * objects with calling codes, country codes, and names.
   *
   * @param {VegaCountryNameType} countries - The `countries` parameter is of type
   * `VegaCountryNameType`, which is an object containing country names with their corresponding country
   * codes.
   * @returns {VegaCountryType[]} An array of objects of type `VegaCountryType` is being returned. Each object in the array
   * contains the properties `callingCode`, `countryCode`, and `name`. The values for these properties
   * are obtained by mapping over the keys of the `countryNames` object and calling the
   * `getCountryCallingCode` function with the country code as an argument.
   */
  private constructCountryArray;
  /**
   * The `private customCountriesFilter` function is a custom filter function used to filter out
   * countries based on the `countries` property of the `CountrySelectController` class.
   *
   * @param {VegaCountryType} countryType - the country to be filtered
   * @returns {boolean} the boolean return value
   */
  private customCountriesFilter;
  private estimateMaxWidthOfCountries;
}
