/**
 * MCP (Model Context Protocol) type definitions for MCP Client
 * Based on the MCP specification
 */
import type { McpResourceSchema, McpToolResult, McpToolSchema } from './shared-types';
export type McpResource = McpResourceSchema;
export type McpTool = McpToolSchema;
export type { McpToolResult } from './shared-types';
/**
 * MCP server configuration (for connecting to external MCP servers)
 */
export interface McpServerConfig {
    /**
     * Command to run for stdio-based MCP servers
     * @example "npx"
     */
    command?: string;
    /**
     * Arguments to pass to the command
     * @example ["-y", "@modelcontextprotocol/server-filesystem", "/allowed/path"]
     */
    args?: string[];
    /**
     * Environment variables to pass to the MCP server process
     */
    env?: Record<string, string>;
    /**
     * URL for SSE-based MCP servers (future)
     */
    url?: string;
    /**
     * Tool-level configuration
     * - false: tool is disabled
     * - true: tool is enabled with default settings
     * - object: tool is enabled with custom model configuration
     */
    tools?: Record<string, boolean | ModelConfig>;
}
/**
 * Model configuration for a specific tool
 */
export interface ModelConfig {
    provider?: string;
    model?: string;
    parameters?: Record<string, unknown>;
}
/**
 * MCP client interface
 */
export interface IMcpClient {
    /**
     * Connect to the MCP server
     */
    connect(): Promise<void>;
    /**
     * Disconnect from the MCP server
     */
    disconnect(): Promise<void>;
    /**
     * List available tools from the server
     */
    listTools(): Promise<McpTool[]>;
    /**
     * Call a tool on the server
     */
    callTool(name: string, args: Record<string, unknown>): Promise<McpToolResult>;
    /**
     * List available resources from the server
     */
    listResources(): Promise<McpResource[]>;
    /**
     * Read a resource from the server
     */
    readResource(uri: string): Promise<string>;
}
/**
 * MCP server connection info
 */
export interface McpServerConnection {
    name: string;
    config: McpServerConfig;
    client: IMcpClient;
    tools: McpTool[];
}
//# sourceMappingURL=types.d.ts.map