import type { ToolDefinition } from "./contracts.js";
import type { SecretInputService } from "../services/secret-input.js";
interface SshRunInput {
    host: string;
    username: string;
    command: string;
    port?: number;
    timeoutMs?: number;
    authMethod?: "password" | "key";
    strictHostKeyChecking?: boolean;
}
interface SshSessionStartInput {
    host: string;
    username: string;
    port?: number;
    authMethod?: "password" | "key";
    strictHostKeyChecking?: boolean;
    timeoutMs?: number;
}
interface SshSessionRunInput {
    sshSessionId: string;
    command: string;
    timeoutMs?: number;
}
interface SshSessionCloseInput {
    sshSessionId: string;
}
interface PtyProcess {
    onData(cb: (data: string) => void): void;
    onExit(cb: (event: {
        exitCode: number;
        signal?: number;
    }) => void): void;
    write(data: string): void;
    kill(signal?: string): void;
}
export type SshPtyFactory = (command: string, args: string[], options: {
    name: string;
    cols: number;
    rows: number;
    cwd: string;
    env: Record<string, string | undefined>;
}) => PtyProcess;
export declare function createSshRunTool(secretInput?: SecretInputService, ptyFactory?: SshPtyFactory): ToolDefinition<SshRunInput>;
export declare function createSshSessionStartTool(secretInput?: SecretInputService, ptyFactory?: SshPtyFactory): ToolDefinition<SshSessionStartInput>;
export declare function createSshSessionRunTool(): ToolDefinition<SshSessionRunInput>;
export declare function createSshSessionCloseTool(): ToolDefinition<SshSessionCloseInput>;
export {};
//# sourceMappingURL=ssh-tools.d.ts.map