import { type CountryCode } from 'libphonenumber-js';
import * as i0 from "@angular/core";
/**
 * Result of phone number parsing.
 */
export interface ParseResult {
    /** E.164 formatted phone number (e.g., +14155550123) or null if invalid */
    e164: string | null;
    /** National format phone number or null if invalid */
    national: string | null;
    /** Whether the phone number is valid */
    isValid: boolean;
}
/**
 * Enhanced parse result with invalid country code detection.
 */
export interface ParseWithInvalidResult extends ParseResult {
    /** Whether the input appears to be an invalid international number */
    isInvalidInternational: boolean;
}
/**
 * Service for parsing and validating phone numbers using libphonenumber-js.
 * Provides caching for improved performance and enhanced validation features.
 *
 * @example
 * ```typescript
 * constructor(private telService: NgxsmkTelInputService) {}
 *
 * validatePhone(input: string, country: CountryCode) {
 *   const result = this.telService.parse(input, country);
 *   return result.isValid;
 * }
 * ```
 */
export declare class NgxsmkTelInputService {
    private parseCache;
    private parseWithInvalidCache;
    private validationCache;
    private readonly CACHE_SIZE_LIMIT;
    /**
     * Parses a phone number string and returns formatted results.
     * Results are cached for performance.
     *
     * @param input - The phone number string to parse (can include formatting)
     * @param iso2 - ISO 3166-1 alpha-2 country code (e.g., 'US', 'GB')
     * @returns ParseResult with E.164 format, national format, and validity status
     *
     * @example
     * ```typescript
     * const result = service.parse('202-555-1234', 'US');
     * // result.e164 = '+12025551234'
     * // result.national = '(202) 555-1234'
     * // result.isValid = true
     * ```
     */
    parse(input: string, iso2: CountryCode): ParseResult;
    /**
     * Validates whether a phone number string is valid for the given country.
     * Results are cached for performance.
     *
     * @param input - The phone number string to validate
     * @param iso2 - ISO 3166-1 alpha-2 country code
     * @returns true if the phone number is valid, false otherwise
     *
     * @example
     * ```typescript
     * const isValid = service.isValid('202-555-1234', 'US'); // true
     * const isInvalid = service.isValid('123', 'US'); // false
     * ```
     */
    isValid(input: string, iso2: CountryCode): boolean;
    /**
     * Sets a value in the cache, implementing LRU eviction when cache is full.
     * @param cache - The cache Map to update
     * @param key - The cache key
     * @param value - The value to cache
     */
    private setCacheValue;
    /**
     * Clears all caches. Useful for memory management or testing.
     */
    clearCache(): void;
    /**
     * Checks if the input appears to be an international number with an invalid country code.
     * This helps detect cases like "1123456789" where "11" is not a valid country code.
     *
     * @param input - The phone number string to check
     * @returns true if the input appears to be an invalid international number
     * @private
     */
    private isInvalidInternationalNumber;
    /**
     * Enhanced parse method that detects invalid international numbers.
     * This is useful for providing better error messages to users.
     * Results are cached for performance.
     *
     * @param input - The phone number string to parse
     * @param iso2 - ISO 3166-1 alpha-2 country code
     * @returns ParseWithInvalidResult with additional invalid country code detection
     *
     * @example
     * ```typescript
     * const result = service.parseWithInvalidDetection('1123456789', 'US');
     * // result.isInvalidInternational = true (because "11" is not a valid country code)
     * // result.isValid = false
     * ```
     */
    parseWithInvalidDetection(input: string, iso2: CountryCode): ParseWithInvalidResult;
    static ɵfac: i0.ɵɵFactoryDeclaration<NgxsmkTelInputService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<NgxsmkTelInputService>;
}
//# sourceMappingURL=ngxsmk-tel-input.service.d.ts.map