import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import type { ILogger } from "../core/logger.js";
import type { Result } from "../core/result.js";
import type { StreamableHttpTransportConfig } from "./config.js";
/**
 * Express HTTP Manager
 *
 * Manages HTTP server lifecycle for Streamable HTTP transport.
 * Handles multiple concurrent sessions by creating per-session transport and server instances.
 *
 * Key Features:
 * - /mcp endpoint → routes to appropriate transport via TransportRegistry
 * - /health endpoint → reports active session count
 * - Per-session isolation → each client gets independent MCP protocol state
 * - Graceful shutdown → cleans up all active sessions
 *
 * Architecture:
 * ```
 * Client 1 → POST /mcp → TransportRegistry.getOrCreate() → Transport 1 + Server 1
 * Client 2 → POST /mcp → TransportRegistry.getOrCreate() → Transport 2 + Server 2
 * ```
 *
 * @example
 * ```typescript
 * const manager = new ExpressHttpManager(
 *   config,
 *   () => TouchDesignerServer.create(), // Server factory
 *   sessionManager,
 *   logger
 * );
 *
 * // Start server
 * const result = await manager.start();
 *
 * // Graceful shutdown
 * await manager.stop();
 * ```
 */
export declare class ExpressHttpManager {
    private readonly config;
    private readonly serverFactory;
    private readonly logger;
    private readonly registry;
    private server;
    /**
     * Create ExpressHttpManager with server factory
     *
     * @param config - Streamable HTTP transport configuration
     * @param serverFactory - Factory function to create new Server instances per session
     * @param sessionManager - Session manager for TTL tracking (optional)
     * @param logger - Logger instance
     */
    constructor(config: StreamableHttpTransportConfig, serverFactory: () => McpServer, sessionManager: import("./sessionManager.js").ISessionManager | null, logger: ILogger);
    /**
     * Start HTTP server with Express app from SDK
     *
     * @returns Result indicating success or failure
     */
    start(): Promise<Result<void, Error>>;
    /**
     * Graceful shutdown
     *
     * Stops HTTP server and cleans up all active sessions.
     *
     * @returns Result indicating success or failure
     */
    stop(): Promise<Result<void, Error>>;
    /**
     * Check if server is running
     *
     * @returns True if server is running
     */
    isRunning(): boolean;
    /**
     * Get active session count
     *
     * @returns Number of active sessions
     */
    getActiveSessionCount(): number;
    /**
     * Get all active session IDs
     *
     * @returns Array of session IDs
     */
    getActiveSessionIds(): string[];
}
