import type { CdpClient } from './cdp-client.js';
import type { QueuedMediaHints } from './queued-media-hints.js';
import type { CommandPayload, CommandResult, SelectorConfig } from './types.js';
export declare class CommandExecutor {
    private queuedMediaHints?;
    private selectors;
    private client;
    private activeComposerId;
    private activeChatTitle;
    constructor(selectors: SelectorConfig, queuedMediaHints?: QueuedMediaHints | undefined);
    setClient(client: CdpClient | null): void;
    /** From bridge state — skip redundant sidebar focus when chat already open. */
    setActiveChat(activeComposerId?: string, activeChatTitle?: string): void;
    private shouldSkipFocus;
    private ensureAgentFocused;
    execute(cmd: CommandPayload): Promise<CommandResult>;
    private parseImagePaths;
    private sendMessage;
    private focusAgent;
    /** Прокрутка к низу ленты — там смонтированы последние user/assistant узлы. */
    scrollChatToBottom(): Promise<void>;
    private switchTab;
    private clickSelector;
    private clickByLabel;
    private approveAll;
    private stopAgent;
    private readComposerDraftImages;
    private clearComposerAttachments;
    /** Empty Cursor composer (DOM + keyboard). */
    private clearComposerInput;
    /** Replace composer text (after unqueue / restore). */
    private setComposerInputText;
    /** Put saved Cursor draft back after send from Connect (avoids merging with phone text). */
    private restoreComposerDraft;
    private focusComposerInput;
    private readComposerDraft;
    private newChat;
}
