import { Provider, ChatRequest, ChatResponse, ModelInfo, ChatChunk, ImageRequest, ImageResponse, TranscriptionRequest, TranscriptionResponse, ModerationRequest, ModerationResponse, EmbeddingRequest, EmbeddingResponse } from "../Provider.js";
import { BaseProvider } from "../BaseProvider.js";
import { OpenAIChat } from "./Chat.js";
import { OpenAIStreaming } from "./Streaming.js";
import { OpenAIModels } from "./Models.js";
import { OpenAIImage } from "./Image.js";
import { OpenAITranscription } from "./Transcription.js";
import { OpenAIModeration } from "./Moderation.js";
import { OpenAIEmbedding } from "./Embedding.js";
export interface OpenAIProviderOptions {
    apiKey: string;
    baseUrl?: string;
}
export declare class OpenAIProvider extends BaseProvider implements Provider {
    protected readonly options: OpenAIProviderOptions;
    protected baseUrl: string;
    protected chatHandler: OpenAIChat;
    protected streamingHandler: OpenAIStreaming;
    protected modelsHandler: OpenAIModels;
    protected imageHandler: OpenAIImage;
    protected transcriptionHandler: OpenAITranscription;
    protected moderationHandler: OpenAIModeration;
    protected embeddingHandler: OpenAIEmbedding;
    capabilities: {
        supportsVision: (model: string) => boolean;
        supportsTools: (model: string) => boolean;
        supportsStructuredOutput: (model: string) => boolean;
        supportsEmbeddings: (model: string) => boolean;
        supportsImageGeneration: (model: string) => boolean;
        supportsTranscription: (model: string) => boolean;
        supportsModeration: (model: string) => boolean;
        supportsReasoning: (model: string) => boolean;
        supportsDeveloperRole: (model: string) => boolean;
        supportsPrediction: (model: string) => boolean;
        getContextWindow: (model: string) => number | null;
    };
    constructor(options: OpenAIProviderOptions);
    apiBase(): string;
    headers(): Record<string, string>;
    protected providerName(): string;
    defaultModel(feature?: string): string;
    chat(request: ChatRequest): Promise<ChatResponse>;
    stream(request: ChatRequest): AsyncGenerator<ChatChunk>;
    listModels(): Promise<ModelInfo[]>;
    paint(request: ImageRequest): Promise<ImageResponse>;
    transcribe(request: TranscriptionRequest): Promise<TranscriptionResponse>;
    moderate(request: ModerationRequest): Promise<ModerationResponse>;
    embed(request: EmbeddingRequest): Promise<EmbeddingResponse>;
}
//# sourceMappingURL=OpenAIProvider.d.ts.map