import type { Api, ImageContent, Model, TextContent } from "../types.js"; export declare const NON_VISION_IMAGE_PLACEHOLDER = "[image omitted: model does not support vision]"; export declare function partitionVisionContent(content: ReadonlyArray, supportsImages: boolean): { textBlocks: TextContent[]; imageBlocks: ImageContent[]; omittedImages: boolean; }; export declare function joinTextWithImagePlaceholder(text: string, omittedImages: boolean): string; /** * Evaluates whether an OpenAI-compatible Chat Completions model genuinely * supports multimodal image inputs on the wire. Defensive guards override * misconfigured provider descriptors or user model entries (e.g. text-only * DashScope Qwen SKUs, DeepSeek models) whose endpoints reject `image_url`. */ export declare function isOpenAICompletionsVisionSupported(model: Model<"openai-completions" | "openrouter">): boolean; /** * Whether the transport that will carry `model` sends image content on the wire. * * The `pi-native` transport forwards the original context (images included) to * the gateway, which resolves its own model server-side, so the Chat * Completions guard below never runs client-side and the declared input * applies. Otherwise the OpenAI Chat Completions path applies the text-only * guard, as does the OpenRouter chat fallback (`PI_OPENROUTER_RESPONSES=0`, * which dispatches `openrouter` models through `streamOpenAICompletions`); * every other API ships the modalities the model declares. Callers that report * or gate on the wire (for example the `omp models` table) read this * predicate; declared capability reads `model.input`. */ export declare function sendsImageInputOnWire(model: Model): boolean;