import type { Connection } from '../connection'; import type { DocClock, DocClocks } from './doc'; import { type Storage } from './storage'; export interface DocSyncStorage extends Storage { readonly storageType: 'docSync'; getPeerRemoteClock(peer: string, docId: string): Promise; getPeerRemoteClocks(peer: string): Promise; setPeerRemoteClock(peer: string, clock: DocClock): Promise; getPeerPulledRemoteClock( peer: string, docId: string ): Promise; getPeerPulledRemoteClocks(peer: string): Promise; setPeerPulledRemoteClock(peer: string, clock: DocClock): Promise; getPeerPushedClock(peer: string, docId: string): Promise; getPeerPushedClocks(peer: string): Promise; setPeerPushedClock(peer: string, clock: DocClock): Promise; clearClocks(): Promise; } export abstract class DocSyncStorageBase implements DocSyncStorage { readonly storageType = 'docSync'; abstract readonly connection: Connection; abstract getPeerRemoteClock( peer: string, docId: string ): Promise; abstract getPeerRemoteClocks(peer: string): Promise; abstract setPeerRemoteClock(peer: string, clock: DocClock): Promise; abstract getPeerPulledRemoteClock( peer: string, docId: string ): Promise; abstract getPeerPulledRemoteClocks(peer: string): Promise; abstract setPeerPulledRemoteClock( peer: string, clock: DocClock ): Promise; abstract getPeerPushedClock( peer: string, docId: string ): Promise; abstract getPeerPushedClocks(peer: string): Promise; abstract setPeerPushedClock(peer: string, clock: DocClock): Promise; abstract clearClocks(): Promise; }