import type { AIProviderName } from "../../constants/enums.js";
import type { EmbedInput, EnhancedGenerateResult, NeurolinkCredentials, TextGenerationOptions } from "../../types/index.js";
import { OpenAIChatCompletionsProvider } from "../openaiChatCompletionsBase.js";
/**
 * OpenAI Provider — direct HTTP, no AI SDK.
 *
 * OpenAI chat completions at api.openai.com/v1. All request / stream /
 * tool-loop orchestration lives in `OpenAIChatCompletionsProvider`; this
 * class adds:
 *   - Native `/v1/embeddings` (`embed` / `embedMany`)
 *   - Image generation via `/v1/images/generations` (`executeImageGeneration`)
 *   - OpenAI-specific error mapping (`formatProviderError`)
 *
 * @see https://platform.openai.com/docs/api-reference
 */
export declare class OpenAIProvider extends OpenAIChatCompletionsProvider {
    constructor(modelName?: string, sdk?: unknown, _region?: string, credentials?: NeurolinkCredentials["openai"]);
    /**
     * OpenAI natively supports `response_format: json_schema` together with
     * tool calling in one request, so structured output stays wire-enforced
     * mid-loop instead of deferring to post-hoc coercion.
     */
    protected suppressResponseFormatWithTools(): boolean;
    protected getProviderName(): AIProviderName;
    protected getDefaultModel(): string;
    formatProviderError(error: unknown): Error;
    /**
     * Default embedding model, overridable via OPENAI_EMBEDDING_MODEL env var.
     */
    protected getDefaultEmbeddingModel(): string;
    /**
     * Generate an embedding for a single text input via native /v1/embeddings.
     *
     * @param input - The text to embed (string or EmbedInput)
     * @param modelName - The embedding model to use (default: text-embedding-3-small)
     * @returns Promise resolving to the embedding vector
     */
    embed(input: string | EmbedInput, modelName?: string): Promise<number[]>;
    /**
     * Generate embeddings for multiple texts in a single batch via native /v1/embeddings.
     *
     * @param texts - The texts to embed
     * @param modelName - The embedding model to use (default: text-embedding-3-small)
     * @returns Promise resolving to an array of embedding vectors
     */
    embedMany(texts: string[], modelName?: string): Promise<number[][]>;
    /**
     * One non-empty vector per input, or fail: a dropped or empty row would
     * pair later texts with the wrong vectors, or score 0 downstream.
     *
     * Called after the request's try on purpose: inside it, handleProviderError
     * would wrap this message in a second provider error and run it through its
     * keyword rules.
     */
    private requireEmbeddings;
    private callEmbeddings;
    /**
     * Image generation via the OpenAI Images API (`/v1/images/generations`).
     *
     * Supports `gpt-image-1`, `dall-e-3`, and `dall-e-2`. The three models
     * differ in which body params they accept:
     *
     * - `gpt-image-1` returns base64 by default; does NOT accept `response_format`.
     * - `dall-e-3` / `dall-e-2` accept `response_format: "b64_json"` to get base64.
     * - `dall-e-2` does NOT accept `quality` / `style`.
     *
     * The model is taken from `options.model || this.modelName`.
     *
     * @see https://platform.openai.com/docs/api-reference/images/create
     */
    protected executeImageGeneration(options: TextGenerationOptions): Promise<EnhancedGenerateResult>;
    /**
     * Map a NeuroLink-style aspect ratio (e.g. "16:9") to the OpenAI
     * `size` parameter accepted by the active image model. Falls back to
     * the per-model square default when the ratio is unknown.
     */
    private aspectRatioToOpenAISize;
}
