import { EventEmitter } from "eventemitter3"; import { MessageContents, OpenDocMessage, RepoMessage } from "../network/messages.js"; import { SyncState } from "@automerge/automerge/slim"; import { PeerId, DocumentId } from "../types.js"; export declare abstract class Synchronizer extends EventEmitter { abstract receiveMessage(message: RepoMessage): void; } export interface SynchronizerEvents { message: (payload: MessageContents) => void; "sync-state": (payload: SyncStatePayload) => void; "open-doc": (arg: OpenDocMessage) => void; metrics: (arg: DocSyncMetrics) => void; } /** Notify the repo that the sync state has changed */ export interface SyncStatePayload { peerId: PeerId; documentId: DocumentId; syncState: SyncState; } export type DocSyncMetrics = { type: "receive-sync-message"; documentId: DocumentId; durationMillis: number; numOps: number; numChanges: number; } | { type: "doc-denied"; documentId: DocumentId; }; //# sourceMappingURL=Synchronizer.d.ts.map