/**
 * Conversation → provider wire-body mappers.
 *
 * Pure functions that translate the provider-neutral {@link Conversation} into
 * each provider's native request shape. Output is always plain, JSON-able data
 * typed as `Record<string, unknown>` (or arrays thereof) so it can be handed
 * straight to `JSON.stringify` inside a connector. No network, no mutation.
 *
 * Wire shapes are re-derived from the providers' public HTTP documentation:
 *   - OpenAI Chat Completions  (`/v1/chat/completions`)
 *   - OpenAI Responses          (`/v1/responses`)
 *   - Anthropic Messages        (`/v1/messages`)
 *   - Google Generative AI      (`generateContent` `contents`)
 */
import type { Conversation, ModelCard, StreamOptions, ToolChoice, ToolDescriptor } from "../contract";
/** A single JSON-able wire object. */
type WireObject = Record<string, unknown>;
/**
 * Translate a conversation into the OpenAI Chat Completions `messages` array.
 *
 * Rules:
 *   - A `system` preamble becomes a leading `{ role: "system" }` message.
 *   - User turns merge text + images into either a bare string (text-only) or
 *     the multimodal `content` parts array.
 *   - Assistant turns carry text in `content` and tool calls in `tool_calls`.
 *   - Tool turns expand into one `{ role: "tool", tool_call_id }` per result.
 */
export declare function toOpenAIChatMessages(c: Conversation): WireObject[];
/** Translate tool descriptors into OpenAI's `tools` array. */
export declare function toOpenAITools(tools: readonly ToolDescriptor[] | undefined): WireObject[] | undefined;
/** Translate the neutral tool-choice into OpenAI's `tool_choice` value. */
export declare function toOpenAIToolChoice(choice: ToolChoice | undefined): string | undefined;
/**
 * Build the full Anthropic `/v1/messages` request body for `model`.
 *
 * The system preamble is hoisted to the top-level `system` field. Thinking,
 * temperature, top-p, tool choice, and the output ceiling are applied from
 * {@link StreamOptions}.
 */
export declare function toAnthropicRequest(c: Conversation, model: ModelCard, opts: StreamOptions): WireObject;
/**
 * Translate a conversation into Google's `contents` array.
 *
 * Google uses `role: "user" | "model"`, carries tool calls as `functionCall`
 * parts and tool results as `functionResponse` parts, and represents the
 * system preamble separately (caller passes it via `systemInstruction`; it is
 * not part of `contents`).
 */
export declare function toGoogleContents(c: Conversation): WireObject[];
/** Optional `systemInstruction` object for Google requests. */
export declare function toGoogleSystemInstruction(c: Conversation): WireObject | undefined;
/** Translate tool descriptors into Google's `tools` declaration. */
export declare function toGoogleTools(tools: readonly ToolDescriptor[] | undefined): WireObject[] | undefined;
/**
 * Translate a conversation into the OpenAI Responses `input` array.
 *
 * The Responses API uses a flat list of typed items: `message` items carry
 * `input_text` / `output_text` / `input_image` content parts, while tool calls
 * and their outputs are top-level `function_call` / `function_call_output`
 * items rather than nested message fields.
 */
export declare function toResponsesInput(c: Conversation): WireObject[];
/** Translate tool descriptors into the OpenAI Responses `tools` array. */
export declare function toResponsesTools(tools: readonly ToolDescriptor[] | undefined): WireObject[] | undefined;
export {};
