import { TmuxWindowConfig, AgentSession } from '../types/orchestration';
export interface TmuxWindow {
    sessionName: string;
    windowIndex: number;
    windowName: string;
    active: boolean;
    paneCount?: number;
}
export interface TmuxSession {
    name: string;
    windows: TmuxWindow[];
    attached: boolean;
    created?: Date;
}
export declare class TmuxManager {
    private maxLinesCapture;
    private safetyMode;
    /**
     * Check if tmux is installed and available
     */
    checkTmuxAvailable(): Promise<boolean>;
    /**
     * Get all tmux sessions
     */
    getSessions(): Promise<TmuxSession[]>;
    /**
     * Get windows for a specific session
     */
    getSessionWindows(sessionName: string): Promise<TmuxWindow[]>;
    /**
     * Create a new tmux session
     */
    createSession(sessionName: string, workingDirectory?: string): Promise<void>;
    /**
     * Create a new window in a session
     */
    createWindow(config: TmuxWindowConfig): Promise<void>;
    /**
     * Rename a window
     */
    renameWindow(sessionName: string, windowIndex: number, newName: string): Promise<void>;
    /**
     * Send keys to a window
     */
    sendKeys(sessionName: string, windowIndex: number, keys: string): Promise<void>;
    /**
     * Send a command to a window (adds Enter automatically)
     */
    sendCommand(sessionName: string, windowIndex: number, command: string): Promise<void>;
    /**
     * Send a message to a Claude agent window
     * Uses proper timing to ensure Claude receives the message
     */
    sendClaudeMessage(sessionName: string, windowIndex: number, message: string): Promise<void>;
    /**
     * Capture window content
     */
    captureWindowContent(sessionName: string, windowIndex: number, lines?: number): Promise<string>;
    /**
     * Get window information
     */
    getWindowInfo(sessionName: string, windowIndex: number): Promise<any>;
    /**
     * Check if a session exists
     */
    sessionExists(sessionName: string): Promise<boolean>;
    /**
     * Kill a window
     */
    killWindow(sessionName: string, windowIndex: number): Promise<void>;
    /**
     * Kill a session
     */
    killSession(sessionName: string): Promise<void>;
    /**
     * Find windows by name pattern
     */
    findWindowsByName(pattern: string): Promise<Array<{
        session: string;
        window: number;
        name: string;
    }>>;
    /**
     * Create a monitoring snapshot for all sessions
     */
    createMonitoringSnapshot(): Promise<string>;
    /**
     * Wait for a window to contain specific text
     */
    waitForText(sessionName: string, windowIndex: number, text: string, timeout?: number): Promise<boolean>;
    /**
     * Get the last window index for a session
     */
    private getLastWindowIndex;
    /**
     * Move a window to a new index
     */
    private moveWindow;
    /**
     * Execute a shell command and return the result
     */
    executeShellCommand(command: string, cwd?: string): Promise<{
        stdout: string;
        stderr: string;
    }>;
    /**
     * Convert AgentSession to TmuxWindowConfig
     */
    agentSessionToWindowConfig(session: AgentSession, workingDirectory: string): TmuxWindowConfig;
}
//# sourceMappingURL=tmuxManager.d.ts.map