import type { Db } from 'mongodb'; import type { IContainer } from 'node-cqrs'; import type { IEvent, IEventLocker, ILogger, IViewLocker } from '../interfaces/index.ts'; import { MongoViewLocker, type MongoViewLockerParams } from './MongoViewLocker.ts'; import { MongoEventLocker, type MongoEventLockerParams } from './MongoEventLocker.ts'; import { AbstractMongoAccessor } from './AbstractMongoAccessor.ts'; /** * Base class for MongoDB-backed projection views with restore locking and last-processed-event tracking */ export declare abstract class AbstractMongoView extends AbstractMongoAccessor implements IViewLocker, IEventLocker { protected readonly schemaVersion: string; protected readonly viewLocker: MongoViewLocker; protected readonly eventLocker: MongoEventLocker; protected logger: ILogger | undefined; get ready(): boolean; constructor(options: Partial> & MongoEventLockerParams & MongoViewLockerParams); protected initialize(_db: Db): Promise | void; lock(): Promise; unlock(): Promise; once(event: 'ready'): Promise; getLastEvent(): Promise; tryMarkAsProjecting(event: IEvent): Promise; markAsProjected(event: IEvent): Promise; markAsLastEvent(event: IEvent): Promise; }