import type { Logger } from '../utils/logger.js';
export interface SSHTunnelConfig {
    host: string;
    port: number;
    username: string;
    authMethod: 'key' | 'password';
    privateKeyPath?: string | undefined;
    privateKeyPassphrase?: string | undefined;
    password?: string | undefined;
    regularPort: number;
    primaryPort: number;
}
export declare class LudusSSHTunnelManager {
    private sshConfig;
    private logger;
    private sshConnection?;
    private regularTunnelServer?;
    private primaryTunnelServer?;
    private instanceId;
    constructor(sshConfig: SSHTunnelConfig, logger: Logger);
    connect(): Promise<void>;
    disconnect(): Promise<void>;
    /**
     * Check if tunnels are healthy and responding
     */
    checkTunnelHealth(): Promise<{
        regularHealthy: boolean;
        primaryHealthy: boolean;
    }>;
    /**
     * Attempt to reconnect tunnels if they're not healthy
     */
    ensureTunnelsHealthy(): Promise<void>;
    /**
     * Reconnect SSH tunnels
     */
    private reconnectTunnels;
    private ensureLockDir;
    private acquireLock;
    private releaseLock;
    private readLockFile;
    private writeLockFile;
    private isProcessRunning;
    private isTunnelPortOpen;
    private startTunnels;
    private waitForTunnels;
    private addReference;
    private removeReference;
    private readReferences;
    private writeReferences;
}
//# sourceMappingURL=sshTunnelManager.d.ts.map