import { AIModel, AbstractDriver, Completion, CompletionChunk, DriverOptions, EmbeddingsResult, ExecutionOptions, ImageGeneration, ModelSearchPayload, PromptSegment } from "@llumiverse/core";
import { FetchClient } from "@vertesia/api-fetch-client";
import { GoogleAuth, GoogleAuthOptions } from "google-auth-library";
import { JSONClient } from "google-auth-library/build/src/auth/googleauth.js";
import { EmbeddingsOptions } from "@llumiverse/core";
import { v1beta1 } from "@google-cloud/aiplatform";
import { AnthropicVertex } from "@anthropic-ai/vertex-sdk";
import { ImagenPrompt } from "./models/imagen.js";
import { GoogleGenAI, Content, Tool } from "@google/genai";
export interface VertexAIDriverOptions extends DriverOptions {
    project: string;
    region: string;
    googleAuthOptions?: GoogleAuthOptions;
}
export interface GenerateContentPrompt {
    contents: Content[];
    system?: string;
    tools?: Tool[];
}
export type VertexAIPrompt = ImagenPrompt | GenerateContentPrompt;
export declare function trimModelName(model: string): string;
export declare class VertexAIDriver extends AbstractDriver<VertexAIDriverOptions, VertexAIPrompt> {
    static PROVIDER: string;
    provider: string;
    aiplatform: v1beta1.ModelServiceClient | undefined;
    anthropicClient: AnthropicVertex | undefined;
    fetchClient: FetchClient | undefined;
    googleGenAI: GoogleGenAI | undefined;
    llamaClient: FetchClient & {
        region?: string;
    } | undefined;
    modelGarden: v1beta1.ModelGardenServiceClient | undefined;
    authClient: JSONClient | GoogleAuth<JSONClient>;
    constructor(options: VertexAIDriverOptions);
    getGoogleGenAIClient(): GoogleGenAI;
    getFetchClient(): FetchClient;
    getLLamaClient(region?: string): FetchClient;
    getAnthropicClient(): AnthropicVertex;
    getAIPlatformClient(): v1beta1.ModelServiceClient;
    getModelGardenClient(): v1beta1.ModelGardenServiceClient;
    validateResult(result: Completion, options: ExecutionOptions): void;
    protected canStream(options: ExecutionOptions): Promise<boolean>;
    createPrompt(segments: PromptSegment[], options: ExecutionOptions): Promise<VertexAIPrompt>;
    requestTextCompletion(prompt: VertexAIPrompt, options: ExecutionOptions): Promise<Completion<any>>;
    requestTextCompletionStream(prompt: VertexAIPrompt, options: ExecutionOptions): Promise<AsyncIterable<CompletionChunk>>;
    requestImageGeneration(_prompt: ImagenPrompt, _options: ExecutionOptions): Promise<Completion<ImageGeneration>>;
    listModels(_params?: ModelSearchPayload): Promise<AIModel<string>[]>;
    validateConnection(): Promise<boolean>;
    generateEmbeddings(options: EmbeddingsOptions): Promise<EmbeddingsResult>;
}
//# sourceMappingURL=index.d.ts.map