import type { StreamFn } from "@mariozechner/pi-agent-core"; import { type Api, type Context, type Model } from "@mariozechner/pi-ai"; import OpenAI, { AzureOpenAI } from "openai"; import type { ChatCompletionChunk } from "openai/resources/chat/completions.js"; import type { FunctionTool, ResponseCreateParamsStreaming, ResponseInput } from "openai/resources/responses/responses.js"; import type { ModelCompatConfig } from "../config/types.models.js"; import { type OpenAIApiReasoningEffort, type OpenAIReasoningEffort } from "./openai-reasoning-effort.js"; type BaseStreamOptions = { temperature?: number; maxTokens?: number; signal?: AbortSignal; apiKey?: string; cacheRetention?: "none" | "short" | "long"; sessionId?: string; onPayload?: (payload: unknown, model: Model) => unknown; headers?: Record; }; type OpenAIResponsesOptions = BaseStreamOptions & { reasoning?: OpenAIReasoningEffort; reasoningEffort?: OpenAIReasoningEffort; reasoningSummary?: "auto" | "detailed" | "concise" | null; serviceTier?: ResponseCreateParamsStreaming["service_tier"]; }; type OpenAICompletionsOptions = BaseStreamOptions & { toolChoice?: "auto" | "none" | "required" | { type: "function"; function: { name: string; }; }; reasoning?: OpenAIReasoningEffort; reasoningEffort?: OpenAIReasoningEffort; }; type OpenAIModeCompatInput = Omit & { thinkingFormat?: string; }; type OpenAIModeModel = Omit, "compat"> & { compat?: OpenAIModeCompatInput | null; }; type MutableAssistantOutput = { role: "assistant"; content: Array>; api: Api; provider: string; model: string; usage: { input: number; output: number; cacheRead: number; cacheWrite: number; totalTokens: number; cost: { input: number; output: number; cacheRead: number; cacheWrite: number; total: number; }; }; stopReason: string; timestamp: number; responseId?: string; errorMessage?: string; }; export { sanitizeTransportPayloadText } from "./transport-stream-shared.js"; export declare function resolveAzureOpenAIApiVersion(env?: NodeJS.ProcessEnv): string; declare function buildOpenAIClientHeaders(model: Model, context: Context, optionHeaders?: Record, turnHeaders?: Record): Record; declare function buildOpenAISdkClientOptions(model: Model): { timeout?: number; }; declare function buildOpenAISdkRequestOptions(model: Model, signal?: AbortSignal): { signal?: AbortSignal; timeout?: number; } | undefined; declare function createOpenAIResponsesClient(model: Model, context: Context, apiKey: string, optionHeaders?: Record, turnHeaders?: Record): OpenAI; export declare function createOpenAIResponsesTransportStreamFn(): StreamFn; declare function sanitizeOpenAICodexResponsesParams>(model: Model, params: T): T; export declare function buildOpenAIResponsesParams(model: Model, context: Context, options: OpenAIResponsesOptions | undefined, metadata?: Record): OpenAIResponsesRequestParams; export declare function createAzureOpenAIResponsesTransportStreamFn(): StreamFn; declare function createAzureOpenAIClient(model: Model, context: Context, apiKey: string, optionHeaders?: Record, turnHeaders?: Record): AzureOpenAI; declare function createOpenAICompletionsClient(model: Model, context: Context, apiKey: string, optionHeaders?: Record): OpenAI; declare function buildOpenAICompletionsClientConfig(model: Model, context: Context, optionHeaders?: Record): { baseURL: string; defaultHeaders: Record; defaultQuery?: Record; }; export declare function createOpenAICompletionsTransportStreamFn(): StreamFn; declare function processOpenAICompletionsStream(responseStream: AsyncIterable, output: MutableAssistantOutput, model: Model, stream: { push(event: unknown): void; }): Promise; type OpenAIResponsesRequestParams = { model: string; input: ResponseInput; stream: true; instructions?: string; prompt_cache_key?: string; prompt_cache_retention?: "24h"; metadata?: Record; store?: boolean; max_output_tokens?: number; temperature?: number; service_tier?: ResponseCreateParamsStreaming["service_tier"]; tools?: FunctionTool[]; reasoning?: { effort: OpenAIApiReasoningEffort; } | { effort: OpenAIApiReasoningEffort; summary: NonNullable; }; include?: string[]; }; export declare function buildOpenAICompletionsParams(model: OpenAIModeModel, context: Context, options: OpenAICompletionsOptions | undefined): Record; export declare function parseTransportChunkUsage(rawUsage: NonNullable, model: Model): { input: number; output: number; cacheRead: number; cacheWrite: number; totalTokens: number; cost: { input: number; output: number; cacheRead: number; cacheWrite: number; total: number; }; }; export declare const __testing: { buildOpenAIClientHeaders: typeof buildOpenAIClientHeaders; buildOpenAISdkClientOptions: typeof buildOpenAISdkClientOptions; buildOpenAISdkRequestOptions: typeof buildOpenAISdkRequestOptions; createAzureOpenAIClient: typeof createAzureOpenAIClient; createOpenAICompletionsClient: typeof createOpenAICompletionsClient; createOpenAIResponsesClient: typeof createOpenAIResponsesClient; sanitizeOpenAICodexResponsesParams: typeof sanitizeOpenAICodexResponsesParams; buildOpenAICompletionsClientConfig: typeof buildOpenAICompletionsClientConfig; processOpenAICompletionsStream: typeof processOpenAICompletionsStream; };