import type { Logger } from "@synet/logger";
import type { RealtimeServer, RealtimeServerOptions, RealtimeServerStats, ServerEventType, RealtimeEvent, Topic } from "@synet/patterns/realtime/server";
/**
 * GUN-specific options
 */
export interface GunServerOptions {
    port?: number;
    host?: string;
    storagePath?: string;
    multicast?: boolean;
    peers?: string[];
    axe?: boolean;
    checkInterval?: number;
}
export declare class GunRealtimeServer implements RealtimeServer {
    private options;
    private logger?;
    private httpServer?;
    private gun?;
    private clients;
    private subscriptions;
    private stats;
    private startTime;
    private eventHandlers;
    private topicSubscriptions;
    private checkIntervalId?;
    constructor(options?: RealtimeServerOptions<GunServerOptions>, logger?: Logger | undefined);
    start(): Promise<void>;
    stop(): Promise<void>;
    broadcast(topic: Topic, event: RealtimeEvent): Promise<void>;
    getStats(): RealtimeServerStats;
    on<T extends ServerEventType>(event: T, handler: (data: unknown) => void): void;
}
