import { EventEmitter } from "events";
import { ToolResult } from "../types/index.js";
export interface InteractiveSession {
    id: string;
    command: string;
    startTime: Date;
    isRunning: boolean;
}
export interface PTYOptions {
    cols?: number;
    rows?: number;
    cwd?: string;
    env?: Record<string, string>;
}
export declare class InteractiveBashTool extends EventEmitter {
    private sessions;
    private sessionCounter;
    private isPTYAvailable;
    constructor();
    isPTYSupported(): boolean;
    executeInteractive(command: string, options?: PTYOptions): Promise<{
        sessionId: string;
        output: string;
    }>;
    private isInteractiveCommand;
    private fallbackExecute;
    sendInput(sessionId: string, input: string): boolean;
    sendKey(sessionId: string, key: string): boolean;
    resize(sessionId: string, cols: number, rows: number): boolean;
    kill(sessionId: string): boolean;
    getSession(sessionId: string): InteractiveSession | null;
    getActiveSessions(): InteractiveSession[];
    executeWithToolResult(command: string, options?: PTYOptions): Promise<ToolResult>;
    private stripAnsi;
    formatHelp(): string;
    cleanup(): void;
    /**
     * Dispose the tool and clean up all resources
     */
    dispose(): void;
}
export declare function getInteractiveBash(): InteractiveBashTool;
