import { AIModel, AbstractDriver, Completion, DataSource, DriverOptions, EmbeddingsOptions, EmbeddingsResult, ExecutionOptions, Providers, ToolUse, TrainingJob, TrainingOptions, TrainingPromptOptions } from "@llumiverse/core";
import OpenAI, { AzureOpenAI } from "openai";
import { ChatCompletionMessageParam } from "openai/resources/chat/completions";
export interface BaseOpenAIDriverOptions extends DriverOptions {
}
export declare abstract class BaseOpenAIDriver extends AbstractDriver<BaseOpenAIDriverOptions, ChatCompletionMessageParam[]> {
    abstract provider: Providers.openai | Providers.azure_openai | "xai" | Providers.azure_foundry;
    abstract service: OpenAI | AzureOpenAI;
    constructor(opts: BaseOpenAIDriverOptions);
    extractDataFromResponse(_options: ExecutionOptions, result: OpenAI.Chat.Completions.ChatCompletion): Completion;
    requestTextCompletionStream(prompt: ChatCompletionMessageParam[], options: ExecutionOptions): Promise<AsyncIterable<Completion>>;
    requestTextCompletion(prompt: ChatCompletionMessageParam[], options: ExecutionOptions): Promise<Completion>;
    protected canStream(_options: ExecutionOptions): Promise<boolean>;
    createTrainingPrompt(options: TrainingPromptOptions): Promise<string>;
    startTraining(dataset: DataSource, options: TrainingOptions): Promise<TrainingJob>;
    cancelTraining(jobId: string): Promise<TrainingJob>;
    getTrainingJob(jobId: string): Promise<TrainingJob>;
    validateConnection(): Promise<boolean>;
    listTrainableModels(): Promise<AIModel<string>[]>;
    listModels(): Promise<AIModel[]>;
    _listModels(filter?: (m: OpenAI.Models.Model) => boolean): Promise<AIModel[]>;
    generateEmbeddings({ text, image, model }: EmbeddingsOptions): Promise<EmbeddingsResult>;
}
export declare function collectTools(toolCalls?: OpenAI.Chat.Completions.ChatCompletionMessageToolCall[]): ToolUse[] | undefined;
//# sourceMappingURL=index.d.ts.map