import { VegaSlimmer } from '../../../../vega-slimmer/vega-slimmer-core';
import { VegaInputPhoneNumber } from '../../vega-input-phone-number';
import { Nullable } from '../../../../types/general';
import { VegaCountryCode } from '../../../../types/flag.type';
/**
 * The `VegaInputPhoneNumberValueController` class in TypeScript manages input phone number values and
 * country codes, providing methods to watch, set, and retrieve calling code prefixes.
 */
export declare class VegaInputPhoneNumberValueController extends VegaSlimmer {
  protected host: VegaInputPhoneNumber['host'];
  protected value: VegaInputPhoneNumber['value'];
  protected countryCode: VegaInputPhoneNumber['countryCode'];
  protected countrySelectController: VegaInputPhoneNumber['countrySelectController'];
  protected changeEventEmitter: VegaInputPhoneNumber['changeEventEmitter'];
  protected phoneNumberInputValue: VegaInputPhoneNumber['phoneNumberInputValue'];
  protected emptyValueEnabled: VegaInputPhoneNumber['emptyValueEnabled'];
  protected countrySelectRenderer: VegaInputPhoneNumber['countrySelectRenderer'];
  /**
   * componentWillLoad
   */
  componentWillLoad(): void;
  /**
   * watch emptyValueEnabled change
   */
  watchEmptyValueEnabled(): void;
  /**
   * The `watchValue` function updates a value and emits change events based on certain conditions.
   *
   * @param {string} newValue - The `newValue` parameter represents the new value that is being watched
   * for changes.
   * @param {string} oldValue - The `oldValue` parameter in the `watchValue` function represents the
   * previous value before the update. It is used to compare with the new value (`newValue`) to determine
   * if there has been a change in the value.
   */
  watchValue(newValue: string, oldValue: string): void;
  /**
   * set value of vega-input-phone-number
   *
   * @param {string} value new value
   */
  setValue(value: string): void;
  /**
   * The function `getCallingCodePrefix` returns the calling code prefix for a given country code.
   *
   * @param {VegaCountryCode} countryCode - VegaCountryCode
   * @returns {string} The `getCallingCodePrefix` function returns a string that includes the country calling code
   * prefix for the specified `VegaCountryCode`.
   */
  getCallingCodePrefix(countryCode: VegaCountryCode): string;
  /**
   * The `updateValue` function in TypeScript parses and formats a phone number input, handles errors,
   * and updates the value accordingly.
   *
   * @param {Nullable<string>} value - The `updateValue` function takes a `value` parameter of type string. This
   * function is responsible for updating the phone number value based on the input provided.
   */
  updateValue(value: Nullable<string>): void;
  /**
   * Format value to nation number
   *
   * @param {string} value - value will be formatted
   * @returns {string} formatted national number.Example: (302) 333-4444
   */
  formatNationalNumber: (value: string) => string;
  /**
   * Should set value of phone number to empty string
   *
   * @param {string} inputValue - The value of phone number input
   * @returns {boolean} -
   */
  shouldSetEmptyValue(inputValue: string): boolean;
  /**
   * The function removes the calling code prefix from a given value based on the specified country code.
   *
   * @param {string} value - The `value` parameter is a string that represents a phone number with a
   * calling code prefix.
   * @param {VegaCountryCode} countryCode - VegaCountryCode
   * @returns {string} The `removeCallingCodePrefix` function is returning a substring of the `value` string
   * starting from the length of the calling code prefix for the specified `country`.
   */
  private removeCallingCodePrefix;
  /**
   * Set value
   *
   * @param {string} inputValue - The value of phone number input.
   * @param {Function} formatValue - Format value callback
   */
  private trySetValue;
}
