import type { Database } from 'better-sqlite3'; import type { IContainer } from 'node-cqrs'; import type { IViewLocker } from '../interfaces/index.ts'; import type { SqliteProjectionDataParams } from './SqliteProjectionDataParams.ts'; import { AbstractSqliteAccessor } from './AbstractSqliteAccessor.ts'; export type SqliteViewLockerParams = SqliteProjectionDataParams & { /** * (Optional) SQLite table name where event locks along with the latest event are stored * * @default "tbl_view_lock" */ viewLockTableName?: string; /** * (Optional) Time-to-live (TTL) duration (in milliseconds) for which a view remains locked * * @default 120_000 */ viewLockTtl?: number; }; export declare class SqliteViewLocker extends AbstractSqliteAccessor implements IViewLocker { #private; constructor(o: Partial> & SqliteViewLockerParams); protected initialize(db: Database): void; get ready(): boolean; lock(): Promise; private scheduleLockProlongation; private cancelLockProlongation; private prolongLock; unlock(): Promise; once(event: 'ready'): Promise; }