/**
 * In-memory persistence for a WebSocket relay hub (demo / dev).
 *
 * Retains durable-enough session state: latest presence per peer, chat tail,
 * and collaborative text (snapshot preferred, else op tail). Not the VCS op
 * log — reset when the relay process stops.
 */
import type { RealtimeMessage } from './types.js';
export declare const DEFAULT_MAX_CHAT = 200;
export declare const DEFAULT_MAX_TEXT_OPS = 2000;
export interface RelayPersistenceOptions {
    maxChat?: number;
    maxTextOps?: number;
}
/**
 * Records relay traffic and builds ordered replay batches for newcomers.
 */
export declare class RelayPersistence {
    private maxChat;
    private maxTextOps;
    private presence;
    /** Chat is a grow-only set keyed by {@link chatKey} — dedup on record. */
    private chatLog;
    private chatKeys;
    private textSnapshot;
    private textOps;
    constructor(opts?: RelayPersistenceOptions);
    /** Record an inbound client message (skip `hello` / `replay`). */
    record(message: RealtimeMessage): void;
    /** Ordered messages to replay to a peer that just connected. */
    buildReplay(): RealtimeMessage[];
    getPresenceCount(): number;
    getChatCount(): number;
    hasTextSnapshot(): boolean;
    private recordBroadcast;
}
//# sourceMappingURL=relay-persistence.d.ts.map