import { ChatService } from '../../ChatService';
import { Message, MessageWithVision, ToolChatCompletion, ToolDefinition } from '../../../../types';
/**
 * Gemini implementation of ChatService
 */
export declare class GeminiChatService implements ChatService {
    /** Provider name */
    readonly provider: string;
    private apiKey;
    private model;
    private visionModel;
    private tools;
    /** id(OpenAI) → name(Gemini) mapping */
    private callIdMap;
    private safeJsonParse;
    private normalizeToolResult;
    /**
     * camelCase → snake_case conversion (v1beta)
     */
    private adaptKeysForApi;
    /**
     * Constructor
     * @param apiKey Google API key
     * @param model Name of the model to use
     * @param visionModel Name of the vision model
     */
    constructor(apiKey: string, model?: string, visionModel?: string, tools?: ToolDefinition[]);
    /**
     * Get the current model name
     * @returns Model name
     */
    getModel(): string;
    /**
     * Get the current vision model name
     * @returns Vision model name
     */
    getVisionModel(): string;
    /**
     * Process chat messages
     * @param messages Array of messages to send
     * @param onPartialResponse Callback to receive each part of streaming response
     * @param onCompleteResponse Callback to execute when response is complete
     */
    processChat(messages: Message[], onPartialResponse: (text: string) => void, onCompleteResponse: (text: string) => Promise<void>): Promise<void>;
    processVisionChat(messages: MessageWithVision[], onPartialResponse: (text: string) => void, onCompleteResponse: (text: string) => Promise<void>): Promise<void>;
    private convertMessagesToGeminiFormat;
    private callGemini;
    /**
     * Convert AITuber OnAir vision messages to Gemini format
     * @param messages Array of vision messages
     * @returns Gemini formatted vision messages
     */
    private convertVisionMessagesToGeminiFormat;
    /**
     * Convert Blob to Base64 string
     * @param blob Image blob
     * @returns Promise with base64 encoded string
     */
    private blobToBase64;
    /**
     * Map AITuber OnAir roles to Gemini roles
     * @param role AITuber OnAir role
     * @returns Gemini role
     */
    private mapRoleToGemini;
    private parseStream;
    private parseOneShot;
    chatOnce(messages: Message[], stream?: boolean, onPartialResponse?: (t: string) => void, maxTokens?: number): Promise<ToolChatCompletion>;
    visionChatOnce(messages: MessageWithVision[], stream?: boolean, onPartialResponse?: (t: string) => void, maxTokens?: number): Promise<ToolChatCompletion>;
    private genUUID;
}
