import { LLMConfig, GenerateContentRequest, GenerateContentResponse, Tool, Content } from '../types';
import { OpenAIStreamProcessor } from '../strategies/stream/openai.stream';
import { OpenAIRequest, OpenAIResponse } from '../types';
export declare class OpenAIClient {
    private httpClient;
    private retryHandler;
    private streamProcessor;
    constructor(config: LLMConfig);
    private convertToOpenAIRequest;
    private convertToolsToOpenAI;
    private convertFromOpenAIResponse;
    generateContent(request: GenerateContentRequest): Promise<GenerateContentResponse>;
    generateContentStreamAsync(request: GenerateContentRequest): AsyncGenerator<any>;
    chat(message: string, options?: {
        systemInstruction?: string;
        generationConfig?: LLMConfig['generationConfig'];
        tools?: Tool[];
        sessionId?: string;
    }): Promise<GenerateContentResponse>;
    continueConversation(contents: Content[], options?: {
        generationConfig?: LLMConfig['generationConfig'];
        tools?: Tool[];
    }): Promise<GenerateContentResponse>;
    callFunction(message: string, tools: Tool[], options?: {
        generationConfig?: LLMConfig['generationConfig'];
        systemInstruction?: string;
    }): Promise<GenerateContentResponse>;
    handleOpenAIRequest(openAIRequest: OpenAIRequest): Promise<OpenAIResponse>;
    get stream(): OpenAIStreamProcessor;
    updateConfig(newConfig: Partial<LLMConfig>): void;
    getConfig(): LLMConfig;
}
