import type { ProviderId, ToolResult } from "../types.js"; export interface ImageToolRunOptions { signal?: AbortSignal | undefined; onOutput?: ((chunk: string, stream: "stdout" | "stderr") => void) | undefined; /** Active route — decides vision support and the per-image size budget. */ llmProvider?: ProviderId | undefined; llmModel?: string | undefined; } export declare function imageOcr(args: Record, options?: ImageToolRunOptions): Promise; /** * Put real image bytes in front of a vision-capable model. * * The agent could previously only reach an image through `image.ocr`, so a * model that had just captured a screenshot to verify its own work had no way * to actually look at it — it got a Tesseract transcript of whatever text * happened to be legible, which is useless for "does this render correctly" * and actively misleading for photos, 3D scenes and charts. * * Tool results are text-only on every provider wire, so this tool returns the * prepared bytes on {@link ToolResult.images} and the agent replays them as a * follow-up user turn — the same path a user attachment takes, which every * multimodal adapter (OpenAI, Anthropic, Gemini, Ollama) already serializes. */ export declare function imageView(args: Record, options?: ImageToolRunOptions): Promise;