import type { StatePatch } from './patches.js'; import type { CommandCatalog, Domain, Stop } from './types.js'; export interface ReplicaMessage { readonly id: string; readonly source: string; readonly domain: string; readonly counter: number; readonly wallTime: number; readonly patches: readonly StatePatch[]; } export interface ReplicaTransport { send(message: ReplicaMessage): void | Promise; listen(listener: (message: ReplicaMessage) => void): Stop; close?(): void; } export interface ReplicaBinding { pending(): readonly ReplicaMessage[]; clock(): Readonly>; flush(): Promise; stop(): void; } export declare function bindReplica>(domain: Domain, transport: ReplicaTransport, options?: { readonly source?: string; readonly resolve?: (local: Readonly, incoming: ReplicaMessage) => State; readonly validate?: (message: ReplicaMessage) => boolean; readonly onConflict?: (message: ReplicaMessage) => void; readonly onFault?: (error: unknown) => void; }): ReplicaBinding; //# sourceMappingURL=replica.d.ts.map