import OpenAI from 'openai';
import { ChatCompletionMessageParam } from 'openai/resources';
export type ChatMessage = ChatCompletionMessageParam;
export interface StreamChatOptions {
    messages: ChatMessage[];
    tools?: any[];
    onChunk: (chunk: string) => void;
    onComplete: (fullResponse: string) => void;
    onReasoningChunk: (chunk: string) => void;
    onToolChunk: (toolChunk: any) => void;
    onAssistantMessage: (message: {
        content: string;
        toolCalls: OpenAI.Chat.Completions.ChatCompletionMessageToolCall[];
    }) => void;
    onError: (error: Error) => void;
}
export interface StreamChatResult {
    status: 'done' | 'tool_calls';
    assistantResponse: {
        content: string | null;
        tool_calls?: OpenAI.Chat.Completions.ChatCompletionMessageToolCall[];
    };
}
declare class OpenAIService {
    private openai;
    private readonly MAX_RETRIES;
    private readonly RETRY_DELAY_MS;
    constructor();
    updateConfig(): void;
    private delay;
    streamChat(options: StreamChatOptions): Promise<StreamChatResult>;
    private performStreamChat;
    chat(options: {
        messages: ChatMessage[];
        responseFormat?: 'text' | 'json_object';
        temperature?: number;
        maxTokens?: number;
    }): Promise<string>;
    private performChat;
}
export declare const openAIService: OpenAIService;
export {};
//# sourceMappingURL=openai.d.ts.map