import type { IDomainConfig, IPortProxySettings } from './classes.pp.interfaces.js';
/**
 * Manages domain configurations and target selection
 */
export declare class DomainConfigManager {
    private settings;
    private domainTargetIndices;
    constructor(settings: IPortProxySettings);
    /**
     * Updates the domain configurations
     */
    updateDomainConfigs(newDomainConfigs: IDomainConfig[]): void;
    /**
     * Get all domain configurations
     */
    getDomainConfigs(): IDomainConfig[];
    /**
     * Find domain config matching a server name
     */
    findDomainConfig(serverName: string): IDomainConfig | undefined;
    /**
     * Find domain config for a specific port
     */
    findDomainConfigForPort(port: number): IDomainConfig | undefined;
    /**
     * Check if a port is within any of the given ranges
     */
    isPortInRanges(port: number, ranges: Array<{
        from: number;
        to: number;
    }>): boolean;
    /**
     * Get target IP with round-robin support
     */
    getTargetIP(domainConfig: IDomainConfig): string;
    /**
     * Checks if a domain should use NetworkProxy
     */
    shouldUseNetworkProxy(domainConfig: IDomainConfig): boolean;
    /**
     * Gets the NetworkProxy port for a domain
     */
    getNetworkProxyPort(domainConfig: IDomainConfig): number | undefined;
    /**
     * Get effective allowed and blocked IPs for a domain
     */
    getEffectiveIPRules(domainConfig: IDomainConfig): {
        allowedIPs: string[];
        blockedIPs: string[];
    };
    /**
     * Get connection timeout for a domain
     */
    getConnectionTimeout(domainConfig?: IDomainConfig): number;
}
