import type { WebSocket } from 'ws'; import type { MCPResponse, AuthParams } from '../adapter.interface.js'; export type { MCPResponse }; import type { WSMessage, WSRequestMessage, WSResponseMessage, WSEventMessage, WSSubscriptionMessage, WSAuthMessage } from '../../../types/websocket.js'; export interface WebSocketOperation { type: 'subscribe' | 'unsubscribe' | 'send' | 'broadcast'; topic?: string; event?: string; data?: unknown; filters?: Record; duration?: number; timeout: number; } export interface PendingRequest { resolve: (response: MCPResponse) => void; reject: (error: Error) => void; timeout: NodeJS.Timeout; } export interface SubscriptionInfo { topic: string; filters?: Record; handler: (data: unknown) => void; } export interface MCPWebSocketConnection { ws: WebSocket; connectionId: string; authenticated: boolean; pendingRequests: Map; subscriptions: Map; } export interface MessageHandlers { handleResponseMessage: (connection: MCPWebSocketConnection, message: WSResponseMessage) => void; handleEventMessage: (connection: MCPWebSocketConnection, message: WSEventMessage) => void; handleErrorMessage: (connection: MCPWebSocketConnection, message: WSMessage) => void; handleSubscriptionUpdate: (connection: MCPWebSocketConnection, message: WSMessage) => void; } export interface ConnectionManagerInterface { ensureConnection(auth?: AuthParams, sessionId?: string): Promise; cleanupConnection(connectionId: string): void; getConnection(connectionId: string): MCPWebSocketConnection | undefined; } export interface SessionManagerInterface { createSession(connectionId: string): void; removeSession(connectionId: string): void; addSubscription(connectionId: string, subscriptionId: string, info: SubscriptionInfo): void; removeSubscription(connectionId: string, subscriptionId: string): void; getSubscriptions(connectionId: string): Map | undefined; } export interface ProtocolHandlerInterface { sendMessage(connection: MCPWebSocketConnection, message: WSMessage): Promise; sendRequestAndWaitForResponse(connection: MCPWebSocketConnection, message: WSMessage, timeout: number): Promise; authenticateConnection(connection: MCPWebSocketConnection, auth: AuthParams): Promise; } export interface WebSocketAdapterConfig { reconnectInterval?: number; maxReconnectAttempts?: number; heartbeatInterval?: number; defaultTimeout?: number; } export type { WSMessage, WSRequestMessage, WSResponseMessage, WSEventMessage, WSSubscriptionMessage, WSAuthMessage, }; //# sourceMappingURL=types.d.ts.map