#!/usr/bin/env node
import * as net from 'net';
import { EventEmitter } from 'events';
import { TCPMCPConfig } from './config/tcp-config.js';
interface JsonRpcResponse {
    jsonrpc: '2.0';
    id: string | number | null;
    result?: any;
    error?: JsonRpcError;
}
interface JsonRpcError {
    code: number;
    message: string;
    data?: any;
}
interface JsonRpcNotification {
    jsonrpc: '2.0';
    method: string;
    params?: any;
}
/**
 * Connection Session Management
 */
declare class MCPSession extends EventEmitter {
    id: string;
    socket: net.Socket;
    authenticated: boolean;
    apiKey: string | null;
    initialized: boolean;
    clientInfo: any;
    remoteAddress: string;
    private buffer;
    private lastHeartbeat;
    constructor(socket: net.Socket);
    private generateSessionId;
    private setupSocketHandlers;
    private handleIncomingData;
    send(message: JsonRpcResponse | JsonRpcNotification): void;
    sendResponse(id: string | number | null, result: any): void;
    sendError(id: string | number | null, code: number, message: string, data?: any): void;
    sendNotification(method: string, params?: any): void;
    authenticate(apiKey: string): void;
    getLastHeartbeat(): number;
    isTimedOut(timeout: number): boolean;
    close(): void;
}
/**
 * TCP-based MCP Server with Multi-User Support
 */
export declare class TCPMCPServer extends EventEmitter {
    private server;
    private sessions;
    private tools;
    private apiClient;
    private config;
    private sessionManager;
    private heartbeatInterval;
    constructor(config?: TCPMCPConfig);
    private setupServerHandlers;
    private setupSessionManagerHandlers;
    private setupHeartbeat;
    private performHeartbeat;
    private handleNewConnection;
    private handleMessage;
    private handleInitialize;
    private handleInitialized;
    private handleAuthenticate;
    private handleToolsList;
    private handleToolsCall;
    private handleSessionStats;
    start(): Promise<void>;
    stop(): Promise<void>;
    getActiveSessions(): MCPSession[];
    getSessionCount(): number;
    getAuthenticatedSessionCount(): number;
    getServerStats(): {
        activeSessions: number;
        authenticatedSessions: number;
        maxConnections: number;
        security: {
            activeSessions: number;
            blockedIPs: number;
            totalAuthAttempts: number;
            rateLimitViolations: number;
        };
        config: {
            port: number;
            host: string;
            rateLimitingEnabled: boolean;
            authRequired: boolean;
        };
    };
    private logDebug;
    private logInfo;
    private logWarn;
    private logError;
}
export { MCPSession };
//# sourceMappingURL=tcp-mcp-server.d.ts.map