import { ClientPresenceRef, Commit, CommitRepository, ErrorCode, GetRemoteFn, LocalStore, OnStoreEventFn, SyncEvent } from './types'; import { LeaderSettings } from './lib/LeaderManager'; import { EventChannel } from './lib/EventChannel'; export declare type NetworkSettings = Readonly<{ initialDelayMs: number; reconnectBackoffMultiplier: number; maxReconnectDelayMs: number; } & LeaderSettings>; export declare class CoordinatingLocalStore implements LocalStore { protected readonly userId: string; protected readonly clientId: string; private readonly onStoreEvent; private readonly commitRepo; private readonly getRemote?; private localChannel?; private closed; private presence; private remote; private reconnectTimeout; private reconnectDelayMs; private remoteSyncState; private readonly unacknowledgedRefs; private readonly localQueue; private readonly remoteQueue; private leaderManager?; private readonly networkSettings; private initialized; constructor(userId: string, clientId: string, onStoreEvent: OnStoreEventFn, commitRepo: CommitRepository, getRemote?: GetRemoteFn | undefined, networkSettings?: Partial, localChannel?: EventChannel | undefined); get isRemoteLeader(): boolean; private get clientInfo(); private setRemoteState; protected processEvent: (event: SyncEvent, origin: 'local' | 'remote' | 'remote-via-local') => Promise; private sendRemoteStatus; private onLocalBroadcastEvent; shutdown(): Promise; private closeRemote; private connectRemote; private clearReconnectTimeout; protected handleAsError(code: ErrorCode): (error: Error) => void; protected sendEvent(event: SyncEvent, { remote, local, self, }: { remote?: boolean; local?: boolean; self?: boolean; }, remoteOrigin?: boolean): Promise; private initialize; update(commits: Commit[], presence: ClientPresenceRef | undefined): Promise; private doUpdate; }