/**
 * MCP Client Pool
 *
 * Manages multiple MCP client connections.
 * Provides centralized lifecycle management.
 *
 * Reference: MCP client configuration patterns.
 */
import { MCPClient } from "./client.js";
import type { MCPConnectionOptions, MCPToolDefinition, MCPResource, MCPPrompt } from "./types.js";
/**
 * Options for creating an MCP client pool.
 */
export interface MCPClientPoolOptions {
    /** List of server configurations */
    servers: MCPConnectionOptions[];
}
/**
 * Status of a connected server.
 */
export interface MCPServerStatus {
    /** Server name */
    name: string;
    /** Whether connected */
    connected: boolean;
    /** Number of tools available */
    toolCount?: number;
    /** Number of resources available */
    resourceCount?: number;
    /** Number of prompts available */
    promptCount?: number;
}
/**
 * MCP Client Pool - manages multiple MCP server connections.
 *
 * @example
 * ```typescript
 * const pool = new MCPClientPool({
 *   servers: [
 *     { name: "filesystem", config: { command: "npx", args: ["-y", "@modelcontextprotocol/server-filesystem", "."] } },
 *     { name: "github", config: { command: "npx", args: ["-y", "@modelcontextprotocol/server-github"] } },
 *   ],
 * });
 *
 * await pool.connectAll();
 * const status = pool.getStatus();
 * await pool.disconnectAll();
 * ```
 */
export declare class MCPClientPool {
    private options;
    private clients;
    private isConnecting;
    constructor(options: MCPClientPoolOptions);
    /**
     * Connect to all configured servers.
     *
     * Errors for individual servers are logged but don't fail the entire operation.
     */
    connectAll(): Promise<void>;
    /**
     * Disconnect from all servers.
     */
    disconnectAll(): Promise<void>;
    /**
     * Get a specific client by name.
     */
    getClient(name: string): MCPClient | undefined;
    /**
     * Get all connected clients.
     */
    getAllClients(): MCPClient[];
    /**
     * Check if a client is connected.
     */
    isConnected(name: string): boolean;
    /**
     * Get status of all servers.
     */
    getStatus(): Promise<MCPServerStatus[]>;
    /**
     * Get all tools from all connected servers.
     */
    listAllTools(): Promise<Record<string, MCPToolDefinition[]>>;
    /**
     * Get all resources from all connected servers.
     */
    listAllResources(): Promise<Record<string, MCPResource[]>>;
    /**
     * Get all prompts from all connected servers.
     */
    listAllPrompts(): Promise<Record<string, MCPPrompt[]>>;
    /**
     * Reload all connections.
     */
    reload(): Promise<void>;
    /**
     * Add a new server connection.
     */
    addServer(config: MCPConnectionOptions): Promise<boolean>;
    /**
     * Remove a server connection.
     */
    removeServer(name: string): Promise<boolean>;
}
