/**
 * Take screenshot tool -- captures spreadsheet ranges as images and analyzes
 * them with a vision LLM (Gemini Flash) via the Shortcut LLM proxy.
 *
 * Flow:
 * 1. AgentController calls take_screenshot with one or more sheet:range pairs and a query
 * 2. Tool requests screenshots from the client via a pluggable operations interface
 * 3. Screenshots come back as base64 PNGs
 * 4. Tool calls the vision LLM via the proxy with the images + query
 * 5. Returns text analysis to the agent (no raw images in context)
 *
 * The operations interface (TakeScreenshotOperations) is pluggable:
 * - TUI mode: captures via @mog-sdk/node wb.captureScreenshot() (headless render)
 * - Server mode: delegates to the connected client via ScreenshotBroker
 * - Fallback: returns empty (no screenshots) when neither is available
 */
import type { ToolDefinition } from '../../core/core-types.js';
import { type ShortcutLlmProxyClient } from '../providers/shortcut-llm-proxy-client.js';
export interface ScreenshotRange {
    sheet: string;
    cell_range: string;
}
export interface Screenshot {
    sheet: string;
    cell_range: string;
    /** Base64-encoded PNG data. Null/undefined means capture failed for this range. */
    data: string | null;
}
export interface TokenUsage {
    input_tokens?: number;
    output_tokens?: number;
    total_tokens?: number;
}
export interface TakeScreenshotOperations {
    /**
     * Captures screenshots of the requested ranges.
     * Implementation varies by mode (TUI headless render, server client delegation, or stub).
     */
    captureScreenshots(ranges: ScreenshotRange[], signal?: AbortSignal): Promise<Screenshot[]>;
    /**
     * Calls the vision LLM via the proxy.
     */
    analyzeWithVisionLLM(screenshots: Screenshot[], query: string, model: string, shortcutLlmProxy: ShortcutLlmProxyClient, signal?: AbortSignal): Promise<{
        text: string;
        usage?: TokenUsage;
    }>;
}
declare const schema: import("@sinclair/typebox").TObject<{
    ranges: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
        sheet: import("@sinclair/typebox").TString;
        cell_range: import("@sinclair/typebox").TString;
    }>>;
    query: import("@sinclair/typebox").TString;
    model: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
}>;
export declare const defaultOperations: TakeScreenshotOperations;
export declare function createTakeScreenshotTool(operations?: TakeScreenshotOperations): ToolDefinition<typeof schema>;
export {};
//# sourceMappingURL=take-screenshot.d.ts.map