import { E as EventMap, e as ServerConfig, S as SessionMetadata, a as SearchQuery, c as SearchResponse } from '../types-BQpUMSaB.js';
import 'zod';

declare class PlugNPlayServer<T extends Record<string, unknown> = EventMap> {
    private config;
    private httpServer;
    private io;
    private adapter;
    private logger;
    private emitter;
    private heartbeatInterval?;
    private cleanupInterval?;
    private isShuttingDown;
    private activeSockets;
    private startTime;
    private maxConnections;
    constructor(config?: ServerConfig);
    on<K extends keyof T>(event: K, listener: (data: T[K]) => void): this;
    off<K extends keyof T>(event: K, listener: (data: T[K]) => void): this;
    emit<K extends keyof T>(event: K, data: T[K]): boolean;
    once<K extends keyof T>(event: K, listener: (data: T[K]) => void): this;
    removeAllListeners<K extends keyof T>(event?: K): this;
    listen(port?: number): Promise<void>;
    close(): Promise<void>;
    sendToSession<K extends keyof T>(sessionId: string, event: K, data: T[K]): Promise<boolean>;
    broadcast<K extends keyof T>(event: K, data: T[K]): void;
    broadcastExcept<K extends keyof T>(senderSessionId: string, event: K, data: T[K]): void;
    getActiveSessions(): Promise<SessionMetadata[]>;
    getSession(sessionId: string): Promise<SessionMetadata | null>;
    disconnectSession(sessionId: string, reason?: string): Promise<boolean>;
    indexContent(id: string, content: string, metadata?: Record<string, unknown>): Promise<void>;
    removeContent(id: string): Promise<void>;
    search(query: SearchQuery, targetSessionId?: string): Promise<SearchResponse>;
    private setupSocketHandlers;
    private handleConnection;
    private setupSocketEventHandlers;
    private handleDisconnection;
    private disconnectSocket;
    private findSocketBySessionId;
    private startHeartbeat;
    private startCleanupTask;
    getStats(): {
        connectedClients: number;
        isShuttingDown: boolean;
        uptime: number;
    };
}

export { PlugNPlayServer };
