/**
 * Base Hypertool MCP server implementation
 * Provides core MCP server functionality with transport abstraction
 */
import { Tool } from "@modelcontextprotocol/sdk/types.js";
import { MetaMCPServerConfig, ServerInitOptions, ServerStatus } from "./types.js";
import { EventEmitter } from "events";
/**
 * Base Hypertool MCP server class
 * Handles MCP protocol implementation with pluggable transport layer
 */
export declare class MetaMCPServer extends EventEmitter {
    private server;
    private stdioTransport;
    private httpServer?;
    private config;
    private state;
    private startTime?;
    private connectedClients;
    constructor(config: MetaMCPServerConfig);
    /**
     * Setup MCP protocol handlers
     */
    private setupHandlers;
    /**
     * Get available tools from underlying servers
     * To be implemented by subclasses
     */
    protected getAvailableTools(): Promise<Tool[]>;
    /**
     * Handle tool call requests
     * To be implemented by subclasses
     */
    protected handleToolCall(name: string, _args?: unknown): Promise<any>;
    /**
     * Initialize and start the server
     */
    start(options: ServerInitOptions): Promise<void>;
    /**
     * Setup Express.js HTTP server for streamable MCP transport
     */
    private setupHttpServer;
    /**
     * Stop the server
     */
    stop(): Promise<void>;
    /**
     * Get current server status
     */
    getStatus(): ServerStatus;
    /**
     * Get server configuration
     */
    getConfig(): MetaMCPServerConfig;
    /**
     * Send tools list changed notification to clients
     */
    protected notifyToolsChanged(): Promise<void>;
    /**
     * Set server state and emit event
     */
    private setState;
    /**
     * Handle client connection events
     */
    protected onClientConnected(): void;
    /**
     * Handle client disconnection events
     */
    protected onClientDisconnected(): void;
}
//# sourceMappingURL=base.d.ts.map