import type { IContainer } from 'node-cqrs'; import type { IEvent, IEventLocker, ILogger, IObjectStorage, IViewLocker, Identifier } from '../interfaces/index.ts'; import { RedisViewLocker, type RedisViewLockerParams } from './RedisViewLocker.ts'; import { RedisEventLocker, type RedisEventLockerParams } from './RedisEventLocker.ts'; import { AbstractRedisAccessor } from './AbstractRedisAccessor.ts'; import type { Redis } from 'ioredis'; /** * Redis-backed projection view with object storage, restore locking and last-processed-event tracking */ export declare class RedisView extends AbstractRedisAccessor implements IObjectStorage, IViewLocker, IEventLocker { #private; protected readonly schemaVersion: string; protected readonly viewLocker: RedisViewLocker; protected readonly eventLocker: RedisEventLocker; protected logger: ILogger | undefined; get ready(): boolean; constructor(options: Partial> & RedisViewLockerParams & RedisEventLockerParams & { tableNamePrefix: string; }); protected initialize(_redis: Redis): void; lock(): Promise; unlock(): Promise; once(event: 'ready'): Promise; getLastEvent(): Promise; tryMarkAsProjecting(event: IEvent): Promise; markAsProjected(event: IEvent): Promise; markAsLastEvent(event: IEvent): Promise; get(id: Identifier): Promise; create(id: Identifier, data: TRecord): Promise; update(id: Identifier, update: (r: TRecord) => TRecord): Promise; updateEnforcingNew(id: Identifier, update: (r?: TRecord) => TRecord): Promise; delete(id: Identifier): Promise; }