import type { VcsOp } from '../vcs/types.js'; import type { PeerId, SyncMessage } from './types.js'; export interface SyncRoomAppendRejection { op: VcsOp; reason: 'invalid-kind' | 'hash-mismatch' | 'missing-dependency'; message: string; } export interface SyncRoomAppendResult { applied: number; skipped: number; rejected: SyncRoomAppendRejection[]; acceptedOps: VcsOp[]; } export interface SyncRoomDelivery { peerId: string; message: SyncMessage; } /** Default max ops returned for snapshot / tail catch-up. */ export declare const DEFAULT_SNAPSHOT_MAX_OPS = 500; export interface SyncRoomSnapshot { headHash?: string; opCount: number; truncated: boolean; ops: VcsOp[]; } /** * Canonical room log and catch-up protocol shared by room transports. */ export declare class SyncRoomCore { private roomPeer; private peers; private ops; constructor(roomId?: string, roomName?: string); connectPeer(peerId: string, peerName?: string): void; disconnectPeer(peerId: string): void; getRoomPeer(): PeerId; peersFor(peerId: string): PeerId[]; getOps(): VcsOp[]; getOpCount(): number; /** Build a tail snapshot for late-joiner catch-up. */ buildSnapshot(maxOps?: number): SyncRoomSnapshot; /** Deliver a snapshot message to a connected peer. */ snapshotDeliveries(peerId: string, maxOps?: number): SyncRoomDelivery[]; receive(fromPeerId: string, message: SyncMessage): Promise; private handleHave; private handleWant; private handleOps; appendOps(incomingOps: VcsOp[]): Promise; private roomOpsDeliveries; private opsDelivery; private broadcastOps; } //# sourceMappingURL=room-core.d.ts.map