import { EventEmitter } from 'events';
/**
 * MCP (Model Context Protocol) Client
 *
 * Implements a client for the Model Context Protocol specification.
 * Supports stdio transport for local MCP servers.
 */
export interface MCPServerConfig {
    name: string;
    command: string;
    args?: string[];
    env?: Record<string, string>;
    enabled?: boolean;
}
export interface MCPTool {
    name: string;
    description: string;
    inputSchema: object;
}
export interface MCPResource {
    uri: string;
    name: string;
    mimeType?: string;
    description?: string;
}
export declare class MCPClient extends EventEmitter {
    private servers;
    private configPath;
    constructor();
    /**
     * Load MCP server configurations from file
     */
    loadConfig(): MCPServerConfig[];
    /**
     * Save MCP server configuration
     */
    saveConfig(servers: MCPServerConfig[]): void;
    /**
     * Connect to all configured servers
     */
    connectAll(): Promise<void>;
    /**
     * Connect to a specific MCP server
     */
    connect(config: MCPServerConfig): Promise<void>;
    /**
     * Disconnect from a server
     */
    disconnect(serverName: string): Promise<void>;
    /**
     * Disconnect from all servers
     */
    disconnectAll(): Promise<void>;
    /**
     * Dispose and cleanup all resources
     */
    dispose(): Promise<void>;
    /**
     * Get all available tools from connected servers
     */
    getAllTools(): Promise<Map<string, MCPTool[]>>;
    /**
     * Get all available resources from connected servers
     */
    getAllResources(): Promise<Map<string, MCPResource[]>>;
    /**
     * Call a tool on a specific server
     */
    callTool(serverName: string, toolName: string, args: object): Promise<unknown>;
    /**
     * Read a resource from a specific server
     */
    readResource(serverName: string, uri: string): Promise<unknown>;
    /**
     * Get list of connected servers
     */
    getConnectedServers(): string[];
    /**
     * Check if a server is connected
     */
    isConnected(serverName: string): boolean;
    /**
     * Format status for display
     */
    formatStatus(): string;
}
export declare function getMCPClient(): MCPClient;
export declare function resetMCPClient(): Promise<void>;
