import { FirestoreQuery } from '@nu-art/firebase'; import { DB_Object, Module, ResolvableContent, TypedMap, UniqueId } from '@nu-art/ts-common'; import { firestore } from 'firebase-admin'; import { ModuleBE_BaseDB } from '../db-api-gen/ModuleBE_BaseDB.js'; import { DeltaSyncModule, FullSyncModule, NoNeedToSyncModule, SyncDataFirebaseState } from '../../../shared/sync-manager/types.js'; import { DBProto_DeletedDoc } from '../../../shared/index.js'; import { OnSyncEnvCompleted } from '../sync-env/ModuleBE_SyncEnv.js'; import { OnModuleCleanupV2 } from '../../_entity.js'; import { FirestoreCollectionV3 } from '@nu-art/firebase/backend/firestore-v3/FirestoreCollectionV3'; import Transaction = firestore.Transaction; type DeletedDBItem = DB_Object & { __collectionName: string; __docId: UniqueId; }; type Config = { retainDeletedCount: number; }; /** * # ModuleBE_SyncManager * * ## Description: * This module manages all the {@link BaseDB_Module} updates and deleted items in order to allow incremental sync of items with clients * * ## Config: * * ```json * "ModuleBE_SyncManager" : { * retainDeletedCount: 100 * } * ``` */ export declare class ModuleBE_SyncManager_Class extends Module implements OnModuleCleanupV2, OnSyncEnvCompleted { collection: FirestoreCollectionV3; private database; private dbModules; smartSyncApi: import("../_imports.js")._ServerBodyApi>; private resolvableFirebaseBasePath; constructor(); __onSyncEnvCompleted(env: string, baseUrl: string, requiredHeaders: TypedMap): Promise; init(): void; private calculateSmartSync; getOrCreateSyncData: () => Promise; private prepareItemToDelete; onItemsDeleted(collectionName: string, items: DB_Object[], uniqueKeys?: string[], transaction?: Transaction): Promise; queryDeleted(collectionName: string, query: FirestoreQuery): Promise; __onCleanupInvokedV2: () => Promise; getFullSyncData: () => Promise; setLastUpdated(collectionName: string, lastUpdated: number): Promise; setOldestDeleted(collectionName: string, oldestDeleted: number): Promise; setModuleFilter: (filter: (modules: (ModuleBE_BaseDB)[]) => Promise<(ModuleBE_BaseDB)[]>) => void; /** * Set function that allows to set a custom resolver for the rtdb node path * @param resolvablePath The resolver for the node path */ setResolvablePath: (resolvablePath: ResolvableContent) => void; private filterModules; } export declare const ModuleBE_SyncManager: ModuleBE_SyncManager_Class; export {};