import * as plugins from '../plugins.js';
import type { IConnectionRecord, IPortProxySettings } from './classes.pp.interfaces.js';
import { SecurityManager } from './classes.pp.securitymanager.js';
import { TimeoutManager } from './classes.pp.timeoutmanager.js';
/**
 * Manages connection lifecycle, tracking, and cleanup
 */
export declare class ConnectionManager {
    private settings;
    private securityManager;
    private timeoutManager;
    private connectionRecords;
    private terminationStats;
    constructor(settings: IPortProxySettings, securityManager: SecurityManager, timeoutManager: TimeoutManager);
    /**
     * Generate a unique connection ID
     */
    generateConnectionId(): string;
    /**
     * Create and track a new connection
     */
    createConnection(socket: plugins.net.Socket): IConnectionRecord;
    /**
     * Track an existing connection
     */
    trackConnection(connectionId: string, record: IConnectionRecord): void;
    /**
     * Get a connection by ID
     */
    getConnection(connectionId: string): IConnectionRecord | undefined;
    /**
     * Get all active connections
     */
    getConnections(): Map<string, IConnectionRecord>;
    /**
     * Get count of active connections
     */
    getConnectionCount(): number;
    /**
     * Initiates cleanup once for a connection
     */
    initiateCleanupOnce(record: IConnectionRecord, reason?: string): void;
    /**
     * Clean up a connection record
     */
    cleanupConnection(record: IConnectionRecord, reason?: string): void;
    /**
     * Helper method to clean up a socket
     */
    private cleanupSocket;
    /**
     * Creates a generic error handler for incoming or outgoing sockets
     */
    handleError(side: 'incoming' | 'outgoing', record: IConnectionRecord): (err: Error) => void;
    /**
     * Creates a generic close handler for incoming or outgoing sockets
     */
    handleClose(side: 'incoming' | 'outgoing', record: IConnectionRecord): () => void;
    /**
     * Increment termination statistics
     */
    incrementTerminationStat(side: 'incoming' | 'outgoing', reason: string): void;
    /**
     * Get termination statistics
     */
    getTerminationStats(): {
        incoming: Record<string, number>;
        outgoing: Record<string, number>;
    };
    /**
     * Check for stalled/inactive connections
     */
    performInactivityCheck(): void;
    /**
     * Clear all connections (for shutdown)
     */
    clearConnections(): void;
}
