import { type AIProviderName } from "../constants/enums.js"; import type { NeurolinkCredentials, OpenAICompatChatRequest } from "../types/index.js"; import { OpenAIChatCompletionsProvider } from "./openaiChatCompletionsBase.js"; /** * Azure OpenAI Provider — direct HTTP, no AI SDK. * * Supports both classic Azure OpenAI Service endpoints * ("*.openai.azure.com", "*.cognitiveservices.azure.com") and the newer * Azure AI Foundry endpoints ("*.services.ai.azure.com"). * * All request/stream/tool-loop orchestration lives in * `OpenAIChatCompletionsProvider`; this class overrides the URL builder and * auth headers to accommodate Azure's deployment-based routing and * `api-key` header (rather than Bearer tokens). * * @see https://learn.microsoft.com/azure/cognitive-services/openai/ */ export declare class AzureOpenAIProvider extends OpenAIChatCompletionsProvider { protected readonly azureDeployment: string; protected readonly azureApiVersion: string; protected readonly azureResourceOrigin: string; protected readonly azureDeploymentPathPrefix: string; protected readonly useMaxCompletionTokensOverride?: boolean; constructor(modelName?: string, sdk?: unknown, _region?: string, credentials?: NeurolinkCredentials["azure"]); protected getProviderName(): AIProviderName; /** * The "default model" for Azure is the deployment name — it's the * identifier callers pass to select a deployment. */ protected getDefaultModel(): string; protected formatProviderError(error: unknown): Error; /** * Builds the full Azure deployment chat completions URL. * * Pattern: * {resourceOrigin}{deploymentPathPrefix}/deployments/{deployment}/chat/completions?api-version={apiVersion} * * Examples: * Classic: https://myresource.openai.azure.com/openai/deployments/gpt-4o/chat/completions?api-version=2025-04-01-preview * Foundry: https://myhost.services.ai.azure.com/openai/deployments/gpt-4o/chat/completions?api-version=2025-04-01-preview */ protected getChatCompletionsURL(modelId: string): string; /** * Azure uses `api-key` rather than the standard `Authorization: Bearer` * header expected by OpenAI-compatible endpoints. */ protected getAuthHeaders(): Record; /** * Newer Azure deployments (o-series, gpt-5+) reject `max_tokens` and require * `max_completion_tokens`. The `@ai-sdk/openai` path this migration replaced * renamed the field automatically; replicate that here. * * Capability is taken from the explicit `useMaxCompletionTokens` override * (credentials / `AZURE_OPENAI_USE_MAX_COMPLETION_TOKENS`) when set — Azure * deployment names are user-defined, so a `chat-prod` gpt-5 deployment can't * be detected from the name. When unset, fall back to a best-effort * model-name heuristic for the common case where the deployment echoes the * model (e.g. `gpt-5.4`). */ protected adjustRequestBody(body: OpenAICompatChatRequest, modelId: string): OpenAICompatChatRequest; }