import Dexie, { Table } from 'dexie'; import { GuardedJob } from './entities/GuardedJob'; import { UserLogin } from './entities/UserLogin'; import { PersistedSyncState } from './entities/PersistedSyncState'; import { DexieCloudOptions } from '../DexieCloudOptions'; import { Subject } from 'rxjs'; import { BaseRevisionMapEntry } from './entities/BaseRevisionMapEntry'; import { DBRealm, DBRealmMember, DBRealmRole, DexieCloudSchema } from 'dexie-cloud-common'; import { BroadcastedAndLocalEvent } from '../helpers/BroadcastedAndLocalEvent'; import { SyncStatePhase } from '../types/SyncState'; import { MessagesFromServerConsumer } from '../sync/messagesFromServerQueue'; import { YClientMessage } from 'dexie-cloud-common'; import { BlobDownloadTracker } from '../sync/BlobDownloadTracker'; export interface SyncStateChangedEventData { phase: SyncStatePhase; error?: Error; progress?: number; } type SyncStateTable = Table; export interface DexieCloudDBBase { readonly name: Dexie['name']; readonly close: Dexie['close']; transaction: Dexie['transaction']; table: Dexie['table']; readonly tables: Dexie['tables']; readonly cloud: Dexie['cloud']; readonly $jobs: Table; readonly $logins: Table; readonly $syncState: SyncStateTable; readonly $baseRevs: Table; readonly realms: Table; readonly members: Table; readonly roles: Table; readonly localSyncEvent: Subject<{ purpose?: 'pull' | 'push'; }>; readonly syncStateChangedEvent: BroadcastedAndLocalEvent; readonly syncCompleteEvent: BroadcastedAndLocalEvent; readonly dx: Dexie; readonly initiallySynced: boolean; } export interface DexieCloudDB extends DexieCloudDBBase { getCurrentUser(): Promise; getSchema(): Promise; getOptions(): Promise; getPersistedSyncState(): Promise; setInitiallySynced(initiallySynced: boolean): void; reconfigure(): void; messageConsumer: MessagesFromServerConsumer; messageProducer: Subject; blobDownloadTracker: BlobDownloadTracker; } export declare const DEXIE_CLOUD_SCHEMA: { members: string; roles: string; realms: string; $jobs: string; $syncState: string; $baseRevs: string; $logins: string; }; export declare function DexieCloudDB(dx: Dexie): DexieCloudDB; export {};