/** * Presence Heartbeat System * * Auto-remove inactive users from presence channels */ export declare interface HeartbeatConfig { enabled?: boolean interval?: number timeout?: number requireClientHeartbeat?: boolean } export declare interface PresenceUser { socketId: string lastSeen: number data: unknown } export declare class PresenceHeartbeatManager { constructor(config?: HeartbeatConfig); start(): void; stop(): void; onUserRemove(callback: (channel: string, socketId: string, user: unknown) => void): void; heartbeat(channel: string, socketId: string, data?: unknown): void; remove(channel: string, socketId: string): void; getActiveUsers(channel: string): PresenceUser[]; isActive(channel: string, socketId: string): boolean; getStats(): { channels: number, totalUsers: number }; }