import { type WebSocketAudience } from "./ws-audience"; import { type WebSocketRegistryStats, type WebSocketRoomId, type WebSocketUserId } from "./ws-core"; export type WebSocketSessionPresence = { sessionId: string; nodeId: string; namespace: string; active: boolean; rooms: Set; connectedAt: Date; lastSeenAt: Date; userId?: WebSocketUserId; }; export interface WebSocketPresenceStore { register(input: { sessionId: string; nodeId: string; namespace: string; active?: boolean; }): WebSocketSessionPresence; activate(sessionId: string): void; unregister(sessionId: string): WebSocketSessionPresence | undefined; touch(sessionId: string): void; setUserId(sessionId: string, userId: WebSocketUserId): void; clearUserId(sessionId: string): void; join(sessionId: string, roomId: WebSocketRoomId): void; leave(sessionId: string, roomId: WebSocketRoomId): void; getConnection(sessionId: string): WebSocketSessionPresence | undefined; getConnectionCount(namespace?: string): number; getRoomMembers(roomId: WebSocketRoomId, namespace?: string): WebSocketSessionPresence[]; getStats(): WebSocketRegistryStats; queryAudience(audience: WebSocketAudience): WebSocketSessionPresence[]; } export declare class InMemoryWebSocketPresenceStore implements WebSocketPresenceStore { private readonly connections; private readonly rooms; private readonly users; register(input: { sessionId: string; nodeId: string; namespace: string; active?: boolean; }): WebSocketSessionPresence; activate(sessionId: string): void; unregister(sessionId: string): WebSocketSessionPresence | undefined; touch(sessionId: string): void; setUserId(sessionId: string, userId: WebSocketUserId): void; clearUserId(sessionId: string): void; join(sessionId: string, roomId: WebSocketRoomId): void; leave(sessionId: string, roomId: WebSocketRoomId): void; getConnection(sessionId: string): WebSocketSessionPresence | undefined; getConnectionCount(namespace?: string): number; getRoomMembers(roomId: WebSocketRoomId, namespace?: string): WebSocketSessionPresence[]; getStats(): WebSocketRegistryStats; queryAudience(audience: WebSocketAudience): WebSocketSessionPresence[]; private getActiveConnections; private getBoundConnections; private getScopedBindings; private removeRoomBinding; private removeUserBinding; } //# sourceMappingURL=ws-presence-store.d.ts.map