import { Provider, ChatRequest, ChatResponse, ModelInfo, ChatChunk, ImageRequest, ImageResponse, TranscriptionRequest, TranscriptionResponse, EmbeddingRequest, EmbeddingResponse } from "../Provider.js";
import { BaseProvider } from "../BaseProvider.js";
export interface GeminiProviderOptions {
    apiKey: string;
    baseUrl?: string;
}
export declare class GeminiProvider extends BaseProvider implements Provider {
    private readonly options;
    private readonly baseUrl;
    private readonly chatHandler;
    private readonly streamingHandler;
    private readonly modelsHandler;
    private readonly imageHandler;
    private readonly embeddingHandler;
    private readonly transcriptionHandler;
    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;
        getContextWindow: (model: string) => number | null;
    };
    constructor(options: GeminiProviderOptions);
    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>;
    embed(request: EmbeddingRequest): Promise<EmbeddingResponse>;
    transcribe(request: TranscriptionRequest): Promise<TranscriptionResponse>;
}
//# sourceMappingURL=GeminiProvider.d.ts.map