import type { LLMRequest, Message, ToolSchema } from "../types.ts"; import type OpenAI from "openai"; export interface ParamConverters { /** Custom message converter (e.g., toOpenAIMessages for OpenCode). */ convertMessages?: (messages: Message[]) => unknown; /** Custom tool converter (e.g., inputSchema → parameters rename). */ convertTools?: (tools: ToolSchema[]) => unknown; } /** Shared complete() params for OpenAI-compatible providers, called by * ChatCompletionsProvider. OpenAI/OpenRouter/Groq use buildCompleteParams * for complete(); Groq also passes the full params to stream(). OpenCode * passes custom converters. */ export type CompleteParamsBuilder = (request: LLMRequest, model: string, converters?: ParamConverters) => Record; export declare function buildCompleteParams(request: LLMRequest, model: string, converters?: ParamConverters): Record; /** Shared stream() params — a subset of complete params (no tools, penalties, or stop). */ export declare function buildStreamParams(request: LLMRequest, model: string, converters?: Pick): Record; /** * Params for the OpenCode Go subscription proxy. Same as complete params * minus the sampling extras (top_p, frequency_penalty, presence_penalty, * stop) — the Go tier's upstream providers reject those with a 400 * "Upstream request failed" even when the SDK would send them harmlessly * elsewhere. */ export declare function buildGoCompleteParams(request: LLMRequest, model: string, converters?: ParamConverters): Record; /** Shared embed() logic for OpenAI-compatible providers. */ export declare function embedWith(client: OpenAI, model: string, text: string, providerName: string): Promise; //# sourceMappingURL=openai-params.d.ts.map