/**
 * In-process broadcast mesh for realtime presence/broadcast.
 *
 * Useful for tests and for "side-by-side" demos where several simulated peers
 * share one page. Each {@link MemoryRealtimeTransport} delivers messages to
 * every other transport on the same hub (never to itself).
 */
import type { RealtimeMessage, RealtimeTransport } from './types.js';
export declare class MemoryHub {
    private transports;
    /** Create a transport bound to this hub for the given peer id. */
    connect(id: string): MemoryRealtimeTransport;
    /** Number of currently connected transports. */
    size(): number;
    /** @internal */
    _broadcast(from: MemoryRealtimeTransport, message: RealtimeMessage): void;
    /** @internal */
    _remove(transport: MemoryRealtimeTransport): void;
}
export declare class MemoryRealtimeTransport implements RealtimeTransport {
    readonly id: string;
    private hub;
    private handlers;
    private closed;
    constructor(hub: MemoryHub, id: string);
    send(message: RealtimeMessage): void;
    onMessage(handler: (message: RealtimeMessage) => void): () => void;
    close(): void;
    /** @internal */
    _deliver(message: RealtimeMessage): void;
}
//# sourceMappingURL=memory-hub.d.ts.map