import { IPhoneNumber, IPhoneNumberInfo, IPhoneNumberUtil, NumberFormat } from '../types'; /** * PhoneNumberHandler class for parsing, formatting, and retrieving information about phone numbers. */ export declare class PhoneNumberHandler { /** * Instance of PhoneNumberUtil for phone number operations. * @private */ private phoneUtil; /** * Parsed phone number object. * @private */ private parsedPhoneNumber; /** * Creates an instance of PhoneNumberHandler. * @param {string} phoneNumber - The phone number string to parse. * @param {string} regionCode - The region code (e.g., 'US', 'GB') for parsing the phone number. * @param {string} mode - The parsing mode: 'parse' or 'parseAndKeepRawInput'. Defaults to 'parseAndKeepRawInput'. (optional) */ constructor(phoneNumber: string, regionCode: string, mode?: string); /** * @return {IPhoneNumber} a phone number proto buffer filled with the parsed number. * * Ideal for executing all functions available by `i18n.phonenumbers.PhoneNumber`. */ getParsedPhoneNumber: () => IPhoneNumber | null; /** * @return {PhoneNumberUtil} a phone number proto buffer filled with the parsed number. * * The method that offers the main utilities to work with phone numbers, such as formatting, parsing and validating. * Ideal for executing all functions available by `i18n.phonenumbers.PhoneNumberUtil`. */ getPhoneNumberUtil: () => IPhoneNumberUtil; /** * Parses a string and returns it as a phone number in proto buffer format. The * method is quite lenient and looks for a number in the input text (raw input) * and does not check whether the string is definitely only a phone number. To * do this, it ignores punctuation and white-space, as well as any text before * the number (e.g. a leading "Tel: ") and trims the non-number bits. It will * accept a number in any format (E164, national, international etc), assuming * it can be interpreted with the defaultRegion supplied. It also attempts to * convert any alpha characters into digits if it thinks this is a vanity number * of the type "1800 MICROSOFT". * * @param {?string} numberToParse number that we are attempting to parse. This * can contain formatting such as +, ( and -, as well as a phone number * extension. It can also be provided in RFC3966 format. * @param {?string} defaultRegion region that we are expecting the number to be * from. This is only used if the number being parsed is not written in * international format. The country_code for the number in this case would * be stored as that of the default region supplied. If the number is * guaranteed to start with a '+' followed by the country calling code, then * 'ZZ' or null can be supplied. * @return {IPhoneNumber} a phone number proto buffer filled * with the parsed number. */ private parse; /** * Parses a string and returns it in proto buffer format. This method differs * from {@link #parse} in that it always populates the raw_input field of the * protocol buffer with numberToParse as well as the country_code_source field. * * @param {string} numberToParse number that we are attempting to parse. This * can contain formatting such as +, ( and -, as well as a phone number * extension. * @param {?string} defaultRegion region that we are expecting the number to be * from. This is only used if the number being parsed is not written in * international format. The country calling code for the number in this * case would be stored as that of the default region supplied. * @return {IPhoneNumber} a phone number proto buffer filled * with the parsed number. */ private parseAndKeepRawInput; /** * Formats the parsed phone number according to the specified format. * @param {NumberFormat} numberFormat - The desired format (PhoneNumberFormat.E164, PhoneNumberFormat.INTERNATIONAL, PhoneNumberFormat.NATIONAL, PhoneNumberFormat.RFC3966). * @returns {string | null} The formatted phone number, or null if an error occurs. */ format(numberFormat: NumberFormat | number): string; /** * Formats a phone number using the original phone number format that the number * is parsed from. The original format is embedded in the country_code_source * field of the PhoneNumber object passed in. If such information is missing, * the number will be formatted into the NATIONAL format by default. When the * number contains a leading zero and this is unexpected for this country, or * we don't have a formatting pattern for the number, the method returns the * raw input when it is available. * * Note this method guarantees no digit will be inserted, removed or modified as * a result of formatting. * * @param {string} regionCallingFrom the region whose IDD needs to be prefixed * if the original number has one. * @return {string} the formatted phone number in its original number format. */ formatInOriginalFormat(regionCallingFrom: string): string; /** * Formats a phone number for out-of-country dialing purposes. If no * regionCallingFrom is supplied, we format the number in its INTERNATIONAL * format. If the country calling code is the same as that of the region where * the number is from, then NATIONAL formatting will be applied. * *
If the number itself has a country calling code of zero or an otherwise * invalid country calling code, then we return the number with no formatting * applied. * *
Note this function takes care of the case for calling inside of NANPA and * between Russia and Kazakhstan (who share the same country calling code). In * those cases, no international prefix is used. For regions which have multiple * international prefixes, the number in its INTERNATIONAL format will be * returned instead. * * @param {string} regionCallingFrom the region where the call is being placed. * @return {string} the formatted phone number. */ formatOutOfCountryCallingNumber(regionCallingFrom: string): string; /** * Gets information about a phone number. * @returns {IPhoneNumberInfo} An object containing phone number information. * @property {number} countryCode The phone's country code. * @property {string} countryCodeSource The phone's extension when compared to i18n.phonenumbers.CountryCodeSource. * @property {string} extension The phone's extension. * @property {boolean} italianLeadingZero The phone's italian leading zero. * @property {number} nationalNumber The phone's national number. * @property {string} numberType The result from getNumberType() when compared to i18n.phonenumbers.PhoneNumberType. * @property {boolean} possible The result from isPossibleNumber(). * @property {string} rawInput The phone's raw input. * @property {string | undefined} regionCode The result from getRegionCodeForNumber(). * @property {boolean} valid The result from isValidNumber(). * @property {boolean} validForRegion The result from isValidNumberForRegion(). */ getPhoneNumberInfo(): IPhoneNumberInfo; /** * Gets the type of the parsed phone number as a string. * @private * @returns {string} The phone number type (e.g., 'MOBILE', 'FIXED_LINE', 'UNKNOWN'). */ private getNumberType; /** * Gets the type of ountry code source the parsed phone number as a string. * @private * @returns {string} The country code source type (e.g., 'FROM_DEFAULT_COUNTRY', 'FROM_NUMBER_WITHOUT_PLUS_SIGN', 'UNSPECIFIED'). */ private getCountryCodeSource; }