import OpenAI from "openai";
import { ChildProcess } from "child_process";
interface MCPServerDefinition {
    command?: string;
    args?: string[];
    type?: "http" | "streamable-http";
    url?: string;
    headers?: Record<string, string>;
    timeout?: number;
    serverInstructions?: boolean;
    env?: Record<string, string>;
}
interface MCPServerConfig {
    [serverName: string]: MCPServerDefinition;
}
interface MCPServerStatus {
    name: string;
    type: "command" | "http" | "streamable-http";
    status: "connected" | "disconnected" | "error" | "starting";
    pid?: number;
    url?: string;
    lastError?: string;
    uptime?: number;
}
interface MCPServerInstance {
    name: string;
    config: MCPServerDefinition;
    type: "command" | "http" | "streamable-http";
    process?: ChildProcess;
    sessionId?: string;
    initialized: boolean;
    lastError?: string;
    startTime?: number;
}
declare class MultiProviderOpenAI extends OpenAI {
    mcpServersConfig: MCPServerConfig;
    mcpEnabled: boolean;
    mcpServerInstances: Map<string, MCPServerInstance>;
    mcpToolsCache: any;
    mcpLastCacheTime: number;
    CACHE_DURATION: number;
    toolToServerMap: Map<string, string>;
    originalOpenAIOptions: any;
    mcpInitializationPromise: Promise<any>;
    mcpClient: any;
    constructor(options?: any);
    _overrideChatCompletions(): void;
    ensureMCPInitialized(): Promise<void>;
    initializeMCP(): Promise<void>;
    _initializeMCPServer(serverName: string): Promise<void>;
    _getServerType(config: MCPServerDefinition): "command" | "http" | "streamable-http";
    _initializeCommandServer(instance: MCPServerInstance): Promise<void>;
    _initializeHttpServer(instance: MCPServerInstance): Promise<void>;
    _mcpRequest(serverName: string, method: string, params?: {}, sessionId?: any, customInstance?: MCPServerInstance): Promise<{
        data: any;
        response: Response;
    }>;
    getMCPTools(): Promise<any>;
    _getMCPToolsInternal(): Promise<any[]>;
    _displayToolList(tools: any): void;
    callMCPTool(name: string, args: any): Promise<any>;
    callMCPTool(serverName: string, toolName: string, args: any): Promise<any>;
    private _callToolByName;
    private _callToolOnServer;
    listAvailableTools(serverName?: string): Promise<any[]>;
    private _getToolsFromServer;
    getMCPServerStatus(serverName?: string): Promise<MCPServerStatus | MCPServerStatus[]>;
    private _getServerStatus;
    restartMCPServer(serverName: string): Promise<void>;
    getMCPServerCapabilities(serverName: string): Promise<any>;
    _initializePerRequestServers(mcpServersConfig: MCPServerConfig): Promise<Map<string, MCPServerInstance>>;
    _getToolsFromPerRequestServers(perRequestServers: Map<string, MCPServerInstance>): Promise<any[]>;
    _cleanupPerRequestServers(perRequestServers: Map<string, MCPServerInstance>): void;
    _callToolWithServers(toolName: string, args: any, perRequestServers: Map<string, MCPServerInstance>): Promise<any>;
    createChatCompletion(options: any): Promise<any>;
    createWithMCPTools(options: any): Promise<any>;
    _createStreamingWithTools(options: any, perRequestServers?: Map<any, any>, toolExecutionFeedback?: boolean): AsyncGenerator<any, void, unknown>;
    _processToolCalls(response: any, originalOptions: any, perRequestServers?: Map<any, any>): Promise<any>;
}
export default MultiProviderOpenAI;
export { MultiProviderOpenAI as OpenAI };
