import { Client as SDKClient, type ClientOptions } from '@modelcontextprotocol/sdk/client/index.js';
import type { Transport } from '@modelcontextprotocol/sdk/shared/transport.js';
import type { Implementation, ListToolsResult, CallToolResult, ListResourcesResult, ListResourceTemplatesResult, ReadResourceResult, ListPromptsResult, GetPromptResult, LoggingLevel } from '@modelcontextprotocol/sdk/types.js';
import { type Logger } from '../lib/logger.js';
import type { IMcpClient, ServerDetails } from '../lib/types.js';
export interface McpClientOptions extends ClientOptions {
    logger?: Logger;
    requestTimeout?: number;
}
export declare class McpClient implements IMcpClient {
    private client;
    private logger;
    private negotiatedProtocolVersion?;
    private mcpSessionId?;
    private transport?;
    private hasConnected;
    private requestTimeout?;
    constructor(clientInfo: Implementation, options?: McpClientOptions);
    private getRequestOptions;
    connect(transport: Transport): Promise<void>;
    close(): Promise<void>;
    getServerDetails(): Promise<ServerDetails>;
    getMcpSessionId(): string | undefined;
    ping(): Promise<void>;
    listTools(cursor?: string): Promise<ListToolsResult>;
    callTool(name: string, args?: Record<string, unknown>): Promise<CallToolResult>;
    listResources(cursor?: string): Promise<ListResourcesResult>;
    listResourceTemplates(cursor?: string): Promise<ListResourceTemplatesResult>;
    readResource(uri: string): Promise<ReadResourceResult>;
    subscribeResource(uri: string): Promise<void>;
    unsubscribeResource(uri: string): Promise<void>;
    listPrompts(cursor?: string): Promise<ListPromptsResult>;
    getPrompt(name: string, args?: Record<string, string>): Promise<GetPromptResult>;
    setLoggingLevel(level: LoggingLevel): Promise<void>;
    getSDKClient(): SDKClient;
}
//# sourceMappingURL=mcp-client.d.ts.map