/**
 * Per-tool contract for `sandbox_llm` — multimodal file analysis dispatched
 * through host-tool RPC. Pure contract; the adapter performs the IO.
 */
import { type HostToolRequest, type ToolContract, type ToolLlmOptionsBase } from '../../../contracts/host-tool.js';
export declare const SANDBOX_LLM_KIND: "sandboxLlm";
export type SandboxLlmKind = typeof SANDBOX_LLM_KIND;
export declare const SANDBOX_LLM_GEMINI_MODEL: "gemini-3-flash-preview";
export declare const SANDBOX_LLM_HAIKU_MODEL: "claude-haiku-4-5-20251001";
export declare const SANDBOX_LLM_MAX_FILE_PATHS = 20;
export declare const SANDBOX_LLM_OUTPUT_TOKENS = 32768;
export declare const SANDBOX_LLM_TIMEOUT_SECONDS = 300;
export declare const SANDBOX_LLM_PDF_PAGE_LIMIT = 100;
export declare const SANDBOX_LLM_PDF_SIZE_LIMIT_MB = 10;
export declare const SANDBOX_UPLOADS_PATH = "/workspace";
export declare const SANDBOX_LLM_IMAGE_EXTENSIONS: {
    readonly '.png': "image/png";
    readonly '.jpg': "image/jpeg";
    readonly '.jpeg': "image/jpeg";
    readonly '.gif': "image/gif";
    readonly '.webp': "image/webp";
};
export declare const SANDBOX_LLM_TEXT_EXTENSIONS: ReadonlySet<string>;
export interface SandboxLlmParams {
    readonly description: string;
    readonly query: string;
    readonly file_paths?: readonly string[];
    readonly model?: string;
    readonly output_filename?: string;
}
export interface SandboxLlmDetails {
    /** Successful analysis body returned to the agent/UI. */
    readonly body?: string;
    /** Renderer flips to error styling when true. */
    readonly error?: boolean;
    /** Sandbox path the analysis was saved to (success path). */
    readonly save_path?: string;
    /** Resolved model id actually invoked. */
    readonly model?: string;
}
export type SandboxLlmRequest = HostToolRequest & {
    readonly kind: SandboxLlmKind;
    readonly params: SandboxLlmParams;
};
export declare const SANDBOX_LLM_SYSTEM_PROMPT = "You are a document extraction assistant.\n\nExtraction rules:\n- Preserve data exactly: extracted numbers, formulas, formatting, and text must match the source precisely\n- For structured data extractions such as tables\n    - The delimiter used must be unambiguous and not included in the data itself. Use pipes `|` by default.\n    - Make sure to handle empty values appropriately (e.g., \"| |\"). Skipping empty values will cause errors when programmatic extraction is done\n\nReferencing:\n- Ensure that extracted data is cited. For example, [Page X, Table \"Name\"] or [Page X, Section \"Name\"] before a dump of data blocks.\n- IMPORTANT: Always cite using page numbers from the source document (on the bottom right of the page)";
/** Listing one-liner used by `get_tool_info`. */
export declare const SANDBOX_LLM_TOOL_SUMMARY = "Analyze sandbox files (images, PDFs, text) using a vision LLM.";
export declare const SANDBOX_LLM_TOOL_DESCRIPTION: string;
export declare const SANDBOX_LLM_DESCRIPTION_DESCRIPTION = "Brief human-readable description of what this analysis will do (e.g., 'Extracting sales data from Q4 report')";
export declare const SANDBOX_LLM_FILE_PATHS_DESCRIPTION = "List of file paths in sandbox (e.g., ['/workspace/chart.png']). Omit if the query already contains all needed information.";
export declare const SANDBOX_LLM_QUERY_DESCRIPTION = "The question/instruction for the LLM about the content. Can also be a file path ending in .txt (e.g., '/uploads/report/query.txt') \u2014 the file contents will be used as the query. Useful for batch/parallel calls to programmatically write .txt query files with variables.";
export declare const SANDBOX_LLM_MODEL_DESCRIPTION: string;
export declare const SANDBOX_LLM_OUTPUT_FILENAME_DESCRIPTION = "Optional output filename (e.g., 'analysis.md'). If empty, auto-generates a unique filename.";
export declare const sandboxLlmContract: ToolContract<SandboxLlmParams, SandboxLlmDetails, ToolLlmOptionsBase>;
//# sourceMappingURL=contract.d.ts.map