import type { ChatMessage, ProviderId, ReasoningArtifactReplayObserver, ReasoningArtifactReplayTarget, ReasoningPreference, ToolChoice, ToolDefinition } from "../../types.js"; import type { RequestPlanV1 } from "../request-plan.js"; import { ReasoningControlContext, ReasoningStyle } from "./reasoning-payload.js"; export declare function toOpenAiMessages(messages: ChatMessage[], supportsVision?: boolean, replay?: { target: ReasoningArtifactReplayTarget; observe?: ReasoningArtifactReplayObserver | undefined; forceScope?: boolean | undefined; portableToolHistory?: ReadonlySet | undefined; }): Array>; export declare function isOpenAiReasoningModel(model: string): boolean; export interface ChatCompletionsBodyOptions { model: string; providerId?: ProviderId | undefined; messages: ChatMessage[]; maxTokens?: number | undefined; temperature?: number | undefined; stream: boolean; includeStreamUsage?: boolean | undefined; reasoning?: ReasoningPreference | undefined; reasoningStyle?: ReasoningStyle | undefined; supportsVision?: boolean | undefined; tools?: ToolDefinition[] | undefined; toolChoice?: ToolChoice | undefined; parallelToolCalls?: boolean | undefined; replayTarget?: ReasoningArtifactReplayTarget | undefined; reasoningArtifactReplayObserver?: ReasoningArtifactReplayObserver | undefined; forceReasoningReplay?: boolean | undefined; portableToolHistory?: ReadonlySet | undefined; control?: ReasoningControlContext | undefined; outputTokenLimit?: number | undefined; cacheFields?: Record | undefined; resolvedSampling?: { readonly temperature?: number | undefined; readonly topP?: number | undefined; } | undefined; } export declare function buildChatBody(options: ChatCompletionsBodyOptions): string; export declare function chatCompletionsBodyFromPlan(plan: RequestPlanV1, extras?: { reasoningStyle?: ReasoningStyle | undefined; includeStreamUsage?: boolean | undefined; reasoningArtifactReplayObserver?: ReasoningArtifactReplayObserver | undefined; forceReasoningReplay?: boolean | undefined; }): string;