/**
 * Per-tool contract for `take_screenshot`. Adapter captures range PNGs via the
 * platform host, stashes them in the main-thread screenshot-cache keyed by
 * tool_call_id (the renderer reads from there — image bytes do NOT travel in
 * `details`), then sends them + query to a vision LLM. Approval is never required.
 */
import { type HostToolRequest, type ToolContract, type ToolLlmOptionsBase } from '../../../contracts/host-tool.js';
export declare const TAKE_SCREENSHOT_KIND: "takeScreenshot";
export type TakeScreenshotKind = typeof TAKE_SCREENSHOT_KIND;
export declare const TAKE_SCREENSHOT_GEMINI_MODEL: "gemini-3-flash-preview";
export declare const TAKE_SCREENSHOT_HAIKU_MODEL: "claude-haiku-4-5-20251001";
export declare const TAKE_SCREENSHOT_MIN_RANGES = 1;
export declare const TAKE_SCREENSHOT_MAX_RANGES = 10;
export declare const TAKE_SCREENSHOT_OUTPUT_TOKENS = 16384;
export declare const TAKE_SCREENSHOT_TIMEOUT_SECONDS = 120;
export interface ScreenshotRange {
    readonly sheet: string;
    readonly cell_range: string;
}
export interface TakeScreenshotParams {
    readonly ranges: readonly ScreenshotRange[];
    readonly query: string;
    readonly model?: string;
}
/**
 * Metadata only — image bytes never flow here (would blow structured-clone /
 * postMessage budgets); they live in the main-thread screenshot-cache.
 */
export interface TakeScreenshotDetails {
    readonly ranges?: readonly ScreenshotRange[];
    readonly model?: string;
    readonly screenshot_count?: number;
    /** Successful analysis body returned to the agent/UI. */
    readonly body?: string;
    /** True when analysis errored — renderer flips to error styling. */
    readonly error?: boolean;
}
export type TakeScreenshotRequest = HostToolRequest & {
    readonly kind: TakeScreenshotKind;
    readonly params: TakeScreenshotParams;
};
export declare const TAKE_SCREENSHOT_SYSTEM_PROMPT = "You are given one or more screenshots of spreadsheet ranges. Analyze them according to the query.\n\nStrengths \u2014 you are good at:\n- Column widths, row heights, and general layout/spacing\n- Overall appearance: fonts, text size, bold/italic, alignment\n- Identifying colors (background fills, text colors, borders) by approximate name\n- Reading cell values and text content in small-to-medium ranges\n\nLimitations \u2014 be honest about:\n- Precise cell coordinates can be inaccurate for large ranges\n- You can identify colors visually but CANNOT determine exact hex codes or RGB values \u2014 recommend programmatic methods for precise color extraction\n\nScreenshot capture caveats \u2014 the screenshots may have artifacts:\n- The image is cropped and is not the same as the purported range, say so explicitly.\n- Frozen panes (pinned header rows/columns) may appear in the screenshot even if they are outside the requested range. Look for a freeze line (thin gray/blue divider) and note if frozen headers are present.\n- If the screenshot looks wrong (blank, garbled, or clearly not matching the requested range), flag it \u2014 do not treat it as ground truth.\n\nRules:\n- Be clear and concise \u2014 your output is consumed by an agent, not a human. Minimize tokens.\n- Answer the query directly. Do not repeat the query or add preamble.\n- If the screenshot appears incomplete, cropped, or contain artifacts, you MUST let the main agent know\n- If multiple screenshots are provided, reference them by sheet name and range\n- Report exactly what you see \u2014 do not infer data that is not visible\n- Format into markdown objects like tables or lists only when they add clarity, not by default";
export declare const TAKE_SCREENSHOT_TOOL_DESCRIPTION = "Take screenshots of spreadsheet ranges and analyze them with a vision LLM.\nUse this to understand and verify non-data spreadsheet elements that are otherwise difficult to access or understand via code execution.\nFor example: complex formatting, chart rendering, pivots, sparklines, understand layout, or see what the user sees.\nDo not use this for reading cell values or data, and never as a replacement for code execution.\nDo not take screenshots bigger than 40 rows x 10 columns per range.";
export declare const TAKE_SCREENSHOT_RANGES_DESCRIPTION = "List of sheet:range pairs to capture.";
export declare const TAKE_SCREENSHOT_SHEET_DESCRIPTION = "Sheet name to capture.";
export declare const TAKE_SCREENSHOT_CELL_RANGE_DESCRIPTION = "Range to capture, e.g. \"A1:G10\".";
export declare const TAKE_SCREENSHOT_QUERY_DESCRIPTION = "What to analyze about the screenshots.";
export declare const TAKE_SCREENSHOT_MODEL_DESCRIPTION: string;
export declare const takeScreenshotContract: ToolContract<TakeScreenshotParams, TakeScreenshotDetails, ToolLlmOptionsBase>;
//# sourceMappingURL=contract.d.ts.map