import OpenAIOrignal from 'openai';
import { PostHog } from 'posthog-node';
import { MonitoringParams } from '../utils';
type ChatCompletion = OpenAIOrignal.ChatCompletion;
type ChatCompletionChunk = OpenAIOrignal.ChatCompletionChunk;
type ChatCompletionCreateParamsBase = OpenAIOrignal.Chat.Completions.ChatCompletionCreateParams;
type ChatCompletionCreateParamsNonStreaming = OpenAIOrignal.Chat.Completions.ChatCompletionCreateParamsNonStreaming;
type ChatCompletionCreateParamsStreaming = OpenAIOrignal.Chat.Completions.ChatCompletionCreateParamsStreaming;
import type { APIPromise, RequestOptions } from 'openai/core';
import type { Stream } from 'openai/streaming';
interface MonitoringOpenAIConfig {
    apiKey: string;
    posthog: PostHog;
    baseURL?: string;
}
export declare class PostHogOpenAI extends OpenAIOrignal {
    private readonly phClient;
    chat: WrappedChat;
    constructor(config: MonitoringOpenAIConfig);
}
export declare class WrappedChat extends OpenAIOrignal.Chat {
    constructor(parentClient: PostHogOpenAI, phClient: PostHog);
    completions: WrappedCompletions;
}
export declare class WrappedCompletions extends OpenAIOrignal.Chat.Completions {
    private readonly phClient;
    constructor(client: OpenAIOrignal, phClient: PostHog);
    create(body: ChatCompletionCreateParamsNonStreaming & MonitoringParams, options?: RequestOptions): APIPromise<ChatCompletion>;
    create(body: ChatCompletionCreateParamsStreaming & MonitoringParams, options?: RequestOptions): APIPromise<Stream<ChatCompletionChunk>>;
    create(body: ChatCompletionCreateParamsBase & MonitoringParams, options?: RequestOptions): APIPromise<ChatCompletion | Stream<ChatCompletionChunk>>;
}
export default PostHogOpenAI;
