import { TokenCredential } from "@azure/identity";
import { AbstractDriver, AIModel, Completion, CompletionChunkObject, DriverOptions, EmbeddingsOptions, EmbeddingsResult, ExecutionOptions, Providers } from "@llumiverse/core";
import { AIProjectClient, ModelDeployment } from '@azure/ai-projects';
import type OpenAI from "openai";
import type { ChatRequestMessage } from "@azure-rest/ai-inference";
type ResponseInputItem = OpenAI.Responses.ResponseInputItem;
export interface AzureFoundryDriverOptions extends DriverOptions {
    /**
     * The credentials to use to access Azure AI Foundry
     */
    azureADTokenProvider?: TokenCredential;
    endpoint?: string;
    apiVersion?: string;
}
export interface AzureFoundryInferencePrompt {
    messages: ChatRequestMessage[];
}
export interface AzureFoundryOpenAIPrompt {
    messages: ResponseInputItem[];
}
export type AzureFoundryPrompt = AzureFoundryInferencePrompt | AzureFoundryOpenAIPrompt;
export declare class AzureFoundryDriver extends AbstractDriver<AzureFoundryDriverOptions, ResponseInputItem[]> {
    service: AIProjectClient;
    readonly provider = Providers.azure_foundry;
    OPENAI_API_VERSION: string;
    INFERENCE_API_VERSION: string;
    constructor(opts: AzureFoundryDriverOptions);
    /**
     * Get default authentication for Azure AI Foundry API
     */
    getDefaultAIFoundryAuth(): () => Promise<string>;
    isOpenAIDeployment(model: string): Promise<boolean>;
    protected canStream(_options: ExecutionOptions): Promise<boolean>;
    requestTextCompletion(prompt: ResponseInputItem[], options: ExecutionOptions): Promise<Completion>;
    requestTextCompletionStream(prompt: ResponseInputItem[], options: ExecutionOptions): Promise<AsyncIterable<CompletionChunkObject>>;
    private processStreamResponse;
    private extractDataFromResponse;
    private convertFinishReason;
    validateConnection(): Promise<boolean>;
    generateEmbeddings(options: EmbeddingsOptions): Promise<EmbeddingsResult>;
    generateTextEmbeddings(options: EmbeddingsOptions): Promise<EmbeddingsResult>;
    generateImageEmbeddings(options: EmbeddingsOptions): Promise<EmbeddingsResult>;
    listModels(): Promise<AIModel[]>;
    _listModels(filter?: (m: ModelDeployment) => boolean): Promise<AIModel[]>;
}
export declare function parseAzureFoundryModelId(compositeId: string): {
    deploymentName: string;
    baseModel: string;
};
export declare function isCompositeModelId(modelId: string): boolean;
export {};
//# sourceMappingURL=azure_foundry.d.ts.map