export interface SSHConnectionTarget {
    name: string;
    host: string;
    username?: string;
    port?: number;
    keyPath?: string;
    compat?: boolean;
}
export type SSHHostOs = "windows" | "linux" | "macos" | "unknown";
export type SSHHostShell = "cmd" | "powershell" | "bash" | "zsh" | "sh" | "unknown";
export type SshPlatform = typeof process.platform;
export declare function supportsSshControlMaster(platform?: SshPlatform): boolean;
export interface SSHHostInfo {
    version: number;
    os: SSHHostOs;
    shell: SSHHostShell;
    compatShell?: "bash" | "sh";
    compatEnabled: boolean;
}
interface SSHArgsOptions {
    platform?: SshPlatform;
}
export declare function getHostInfo(hostName: string): Promise<SSHHostInfo | undefined>;
export declare function getHostInfoForHost(host: SSHConnectionTarget): Promise<SSHHostInfo | undefined>;
/**
 * Synchronous, probe-free host info lookup for startup paths.
 *
 * Checks the in-memory cache, then falls back to a synchronous read of the
 * persisted host-info cache file. Never opens a connection or probes the
 * remote host — callers get `undefined` when nothing is cached yet.
 */
export declare function getCachedHostInfoSync(host: SSHConnectionTarget): SSHHostInfo | undefined;
export declare function ensureHostInfo(host: SSHConnectionTarget): Promise<SSHHostInfo>;
export declare function buildRemoteCommand(host: SSHConnectionTarget, command: string, options?: SSHArgsOptions): Promise<string[]>;
export declare function ensureConnection(host: SSHConnectionTarget): Promise<void>;
export declare function invalidateHostMetadata(hostNames: Iterable<string>): Promise<void>;
export declare function closeConnection(hostName: string): Promise<void>;
export declare function closeAllConnections(): Promise<void>;
export declare function getControlPathTemplate(): string;
export declare function getControlDir(): string;
export {};
