import type { Tool } from '@langchain/core/tools';
import type * as express from 'express';
import type { Logger } from 'n8n-workflow';
import type { ExecutionStrategy } from './execution/ExecutionStrategy';
import { PendingCallsManager } from './execution/PendingCallsManager';
import type { McpToolCallInfo } from './protocol/types';
import { MCP_LIST_TOOLS_REQUEST_MARKER } from './protocol/types';
import type { SessionStore } from './session/SessionStore';
import type { CompressionResponse, McpTransport } from './transport/Transport';
export interface HandlePostResult {
    wasToolCall: boolean;
    toolCallInfo?: McpToolCallInfo;
    messageId?: string;
    relaySessionId?: string;
    needsListToolsRelay?: boolean;
}
export declare class McpServer {
    private static instance_;
    private sessionManager;
    private transportFactory;
    private executionCoordinator;
    private pendingCallsManager;
    private resolveFunctions;
    private pendingResponses;
    private logger;
    private constructor();
    static instance(logger: Logger): McpServer;
    handleSetupRequest(_req: express.Request, resp: CompressionResponse, serverName: string, postUrl: string, tools: Tool[]): Promise<void>;
    handleStreamableHttpSetup(req: express.Request, resp: CompressionResponse, serverName: string, tools: Tool[]): Promise<void>;
    handlePostMessage(req: express.Request, resp: CompressionResponse, tools: Tool[], serverName?: string): Promise<HandlePostResult>;
    handleDeleteRequest(req: express.Request, resp: CompressionResponse): Promise<void>;
    getSessionId(req: express.Request): string | undefined;
    getMcpMetadata(req: express.Request): {
        sessionId: string;
        messageId: string;
    } | undefined;
    storePendingResponse(sessionId: string, messageId: string): void;
    handleWorkerResponse(sessionId: string, messageId: string, result: unknown): void;
    removePendingResponse(sessionId: string, messageId: string): void;
    hasPendingResponse(sessionId: string, messageId: string): boolean;
    get pendingResponseCount(): number;
    setSessionStore(store: SessionStore): void;
    setExecutionStrategy(strategy: ExecutionStrategy): void;
    isQueueMode(): boolean;
    getTransport(sessionId: string): McpTransport | undefined;
    getTools(sessionId: string): Tool[] | undefined;
    getPendingCallsManager(): PendingCallsManager;
    private createServer;
    private setupSession;
    private cleanupSession;
    private recreateStreamableHttpTransport;
    private setupHandlers;
}
export { MCP_LIST_TOOLS_REQUEST_MARKER };
