/**
 * Gemini Provider (Google)
 *
 * LLM provider implementation for Google Gemini API.
 */
import { BaseProvider } from './base-provider.js';
import type { ProviderType, ProviderConfig, CompletionOptions, LLMResponse, StreamChunk, ProviderFeature } from './types.js';
export declare class GeminiProvider extends BaseProvider {
    readonly type: ProviderType;
    readonly name = "Gemini (Google)";
    readonly defaultModel = "gemini-2.5-flash";
    private client;
    /**
     * Initializes the Gemini provider.
     * Sets up the API configuration.
     */
    initialize(config: ProviderConfig): Promise<void>;
    /**
     * Sends a completion request to the Gemini REST API.
     * Transforms the request to Gemini's specific JSON format.
     * Maps response candidates and tool calls back to standard types.
     */
    complete(options: CompletionOptions): Promise<LLMResponse>;
    /**
     * Streams the response from the Gemini REST API via SSE (Server-Sent Events).
     * Decodes the chunked JSON response and maps it to standard StreamChunks. *
     */
    stream(options: CompletionOptions): AsyncIterable<StreamChunk>;
    /**
     * Internal streaming implementation.
     */
    private streamInternal;
    /**
     * Returns a list of supported Gemini models.
     */
    getModels(): Promise<string[]>;
    /**
     * Returns the pricing information for the Gemini 2.0 Flash model.
     * Pricing is per 1M tokens.
     */
    getPricing(): {
        input: number;
        output: number;
    };
    /**
     * Checks if the Gemini provider supports a given feature.
     * Gemini supports 'vision' (multimodal) and 'json_mode'.
     */
    supports(feature: ProviderFeature): boolean;
    /**
     * Formats the request body for Gemini API.
     * - Maps roles (assistant -> model).
     * - Structures tool calls as functionResponse parts.
     * - Sets generation config.
     */
    private formatRequest;
    /**
     * Detects if the user's query requires tool use (real-time information).
     * Returns true for queries about news, weather, TV, prices, etc.
     */
    private shouldForceToolUse;
    /**
     * Converts parameter types to UPPERCASE as required by Gemini API.
     * Example: { type: 'string' } -> { type: 'STRING' }
     */
    private convertParameterTypes;
}
