import type { ChatCompletion } from "openai/resources/chat/completions"; import type { AdapterResponse, CruxFinishReason, NativeAssistantTurn, NativeResponseMetadata } from "@use-crux/core/adapter"; /** Normalize an OpenAI chat completion into Crux's canonical adapter response. */ export declare function openAIResponse(result: ChatCompletion): AdapterResponse; /** Read response metadata that is not owned by OpenAI transcript conversion. */ export declare function openAIResponseMeta(result: ChatCompletion): NativeResponseMetadata; /** OpenAI chat/stream usage shape shared by non-streaming and streaming completion. */ export interface OpenAIUsageShape { readonly prompt_tokens: number; readonly completion_tokens: number; readonly total_tokens: number; readonly prompt_tokens_details?: { readonly cached_tokens?: number; } | null; readonly completion_tokens_details?: { readonly reasoning_tokens?: number; } | null; } /** Normalize OpenAI usage counts into the canonical token-usage shape. */ export declare function openAIUsage(usage: OpenAIUsageShape | undefined): NativeResponseMetadata["usage"]; /** * Normalize an OpenAI `finish_reason` and optional refusal into the * provider-neutral finish reason. */ export declare function mapOpenAIFinishReason(finishReason: string | null | undefined, refusal?: unknown): CruxFinishReason | undefined; /** Prefer OpenAI parsed structured output over transcript text when present. */ export declare function openAIResponseText(result: ChatCompletion, assistant: NativeAssistantTurn): string;