import type { LlmAdapter, AdapterRequest, AdapterResponse, AdapterStreamChunk } from '@mast-ai/core'; /** Token-usage statistics reported by the OpenAI Chat Completions API. */ export interface UsageMetadata { promptTokens?: number; completionTokens?: number; totalTokens?: number; } /** Reasoning-effort level for o-series and gpt-5 models. */ export type ReasoningEffort = 'minimal' | 'low' | 'medium' | 'high'; /** Per-request defaults applied to every call made by an {@link OpenAIChatCompletionsAdapter}. */ export interface OpenAIChatCompletionsAdapterDefaults { /** * Forwarded as `reasoning_effort` on every request. Reasoning models honour * this; non-reasoning models reject the field, so set it only when the * configured `modelName` is a reasoning model. */ reasoningEffort?: ReasoningEffort; } /** * {@link LlmAdapter} implementation backed by the OpenAI Chat Completions API. * * Supports tool calling, structured output via JSON Schema, and streaming. * Reasoning models (o-series, gpt-5, ...) work out of the box: pass * `reasoning_effort` through `ModelConfig` and any reasoning content the model * exposes via `delta.reasoning_content` (used by OpenAI-compatible providers * such as OpenRouter and DeepSeek) is forwarded as `thinking` events. * * To surface reasoning content from native OpenAI reasoning models, use * {@link OpenAIResponsesAdapter} instead — Chat Completions does not return * reasoning tokens for OpenAI's own models. */ export declare class OpenAIChatCompletionsAdapter implements LlmAdapter { private client; private modelName; private onUsageUpdate?; private defaults; /** * @param apiKey - OpenAI API key. * @param modelName - Model identifier (defaults to `"gpt-4o-mini"`). Any * chat-completion-compatible model works, including reasoning models. * @param onUsageUpdate - Optional callback invoked with token-usage data after each response. * @param defaults - Provider-specific defaults applied to every request * (e.g. `reasoningEffort` for o-series / gpt-5). */ constructor(apiKey: string, modelName?: string, onUsageUpdate?: (usage: UsageMetadata) => void, defaults?: OpenAIChatCompletionsAdapterDefaults); private buildTools; private buildBaseParams; /** {@inheritDoc LlmAdapter.generate} */ generate(request: AdapterRequest): Promise; /** {@inheritDoc LlmAdapter.generateStream} */ generateStream(request: AdapterRequest): AsyncIterable; private mapMessages; private mapTool; }