import { AIModel, AbstractDriver, Completion, DataSource, DriverOptions, EmbeddingsOptions, EmbeddingsResult, ExecutionOptions, ToolUse, TrainingJob, TrainingOptions, TrainingPromptOptions } from "@llumiverse/core";
import OpenAI, { AzureOpenAI } from "openai";
type OpenAIMessageBlock = OpenAI.Chat.Completions.ChatCompletionMessageParam;
export interface BaseOpenAIDriverOptions extends DriverOptions {
}
export declare abstract class BaseOpenAIDriver extends AbstractDriver<BaseOpenAIDriverOptions, OpenAIMessageBlock[]> {
    abstract provider: "azure_openai" | "openai" | "xai";
    abstract service: OpenAI | AzureOpenAI;
    constructor(opts: BaseOpenAIDriverOptions);
    extractDataFromResponse(_options: ExecutionOptions, result: OpenAI.Chat.Completions.ChatCompletion): Completion;
    requestTextCompletionStream(prompt: OpenAIMessageBlock[], options: ExecutionOptions): Promise<any>;
    requestTextCompletion(prompt: OpenAIMessageBlock[], options: ExecutionOptions): Promise<any>;
    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;
export {};
//# sourceMappingURL=index.d.ts.map