import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
import type { AppConfig } from '../config/index.js';
import type { TransportConfig } from '../types/cve.js';
import { HttpTransportServer } from './http-transport-server.js';
import { StdioTransportServer } from './stdio-transport-server.js';
import { TransportSessionManager } from './transport-session-manager.js';
import { HealthService } from '../services/health-service.js';
type TransportInstance = StdioServerTransport | HttpTransportServer;
export type TransportType = 'stdio' | 'http';
export declare class TransportManager {
    private config;
    private httpTransportServer?;
    private stdioTransportServer?;
    private sessionManager;
    private mcpServerFactory;
    private healthService?;
    constructor(config: AppConfig, mcpServerFactory: () => McpServer, healthService?: HealthService);
    /**
     * Start transport based on configuration
     */
    startTransport(transportConfig?: TransportConfig): Promise<TransportInstance>;
    /**
     * Start stdio transport
     */
    private startStdioTransport;
    /**
     * Start HTTP transport
     */
    private startHttpTransport;
    /**
     * Stop all transports
     */
    stopTransports(): Promise<void>;
    /**
     * Get transport status
     */
    getTransportStatus(): {
        stdio: {
            active: boolean;
            sessionCount?: number;
        };
        http: {
            active: boolean;
            sessionCount?: number;
            port?: number;
        };
    };
    /**
     * Get session manager
     */
    getSessionManager(): TransportSessionManager;
    /**
     * Get HTTP transport server (if running)
     */
    getHttpTransportServer(): HttpTransportServer | undefined;
    /**
     * Get stdio transport server (if running)
     */
    getStdioTransportServer(): StdioTransportServer | undefined;
    /**
     * Get active session count
     */
    getActiveSessionCount(): number;
    /**
     * Get session statistics
     */
    getSessionStats(): {
        total: number;
        byType: Record<string, number>;
        oldestSession?: Date;
        newestSession?: Date;
        averageAge: number;
    };
}
export {};
//# sourceMappingURL=transport-manager.d.ts.map