import type { RealtimeServer, RealtimeServerOptions, RealtimeServerStats, ServerEventType, RealtimeEvent, Topic } from "@synet/patterns/realtime/server";
import type { Logger } from "@synet/logger";
/**
 * WebSocket-specific options
 */
export interface WebSocketServerOptions {
    port?: number;
    host?: string;
    heartbeat?: {
        enabled: boolean;
        intervalMs: number;
        timeoutMs: number;
    };
}
export declare class WebSocketRealtimeServer implements RealtimeServer {
    private options;
    private logger?;
    private wsServer?;
    private clients;
    private subscriptions;
    private stats;
    private startTime;
    private eventHandlers;
    constructor(options?: RealtimeServerOptions<WebSocketServerOptions>, logger?: Logger | undefined);
    start(): Promise<void>;
    stop(): Promise<void>;
    broadcast(topic: Topic, event: RealtimeEvent): Promise<void>;
    private handleNewConnection;
    private subscribeClientToTopic;
    private unsubscribeClientFromTopic;
    private handleClientDisconnection;
    getStats(): RealtimeServerStats;
    on<T extends ServerEventType>(event: T, handler: (data: unknown) => void): void;
    /**
     * Emit an event to all registered handlers
     * @param event The event type
     * @param data The event data
     */
    private emit;
}
