import { DBOperationsSet } from 'dexie-cloud-common'; import { BehaviorSubject, Observable, Subscriber, Subscription } from 'rxjs'; import { DXCWebSocketStatus } from './DXCWebSocketStatus'; import type { YClientMessage } from 'dexie-cloud-common'; import { DexieCloudDB } from './db/DexieCloudDB'; import { UserLogin } from './dexie-cloud-client'; export type WSClientToServerMsg = ReadyForChangesMessage | YClientMessage; export interface ReadyForChangesMessage { type: 'ready'; realmSetHash: string; rev: string; } export type WSConnectionMsg = RevisionChangedMessage | RealmAddedMessage | RealmAcceptedMessage | RealmRemovedMessage | RealmsChangedMessage | ChangesFromServerMessage | TokenExpiredMessage; export interface ChangesFromServerMessage { type: 'changes'; baseRev: string; realmSetHash: string; newRev: string; changes: DBOperationsSet; } export interface RevisionChangedMessage { type: 'rev'; rev: string; } export interface RealmAddedMessage { type: 'realm-added'; realm: string; } export interface RealmAcceptedMessage { type: 'realm-accepted'; realm: string; } export interface RealmRemovedMessage { type: 'realm-removed'; realm: string; } export interface RealmsChangedMessage { type: 'realms-changed'; realmsHash: string; } export interface TokenExpiredMessage { type: 'token-expired'; } export declare class WSObservable extends Observable { constructor(db: DexieCloudDB, rev: string | undefined, yrev: string | undefined, realmSetHash: string, clientIdentity: string, messageProducer: Observable, webSocketStatus: BehaviorSubject, user: UserLogin); } export declare class WSConnection extends Subscription { db: DexieCloudDB; ws: WebSocket | null; lastServerActivity: Date; lastUserActivity: Date; lastPing: Date; databaseUrl: string; rev: string | undefined; yrev: string | undefined; realmSetHash: string; clientIdentity: string; user: UserLogin; subscriber: Subscriber; pauseUntil?: Date; messageProducer: Observable; webSocketStatus: BehaviorSubject; id: number; private pinger; private subscriptions; constructor(db: DexieCloudDB, rev: string | undefined, yrev: string | undefined, realmSetHash: string, clientIdentity: string, user: UserLogin, subscriber: Subscriber, messageProducer: Observable, webSocketStatus: BehaviorSubject); private teardown; private disconnect; reconnecting: boolean; reconnect(): void; connect(): Promise; }