import { DatabaseConfig } from '@n8n/config'; import { DataSource } from '@n8n/typeorm'; import type { EntityManager } from '@n8n/typeorm'; import type { OperationContext } from './transaction'; export declare const enum DbLock { AUTH_ROLES_SYNC = 1001, TRUSTED_KEY_REFRESH = 1002, WORKFLOW_STATISTICS_ROLLUP = 1003, WORKFLOW_REVIEW_MUTATION = 1004, MIGRATIONS = 1005, EVAL_COLLECTION_RERUN = 1006, INSTANCE_AI_SETTINGS = 1007, DATA_ENCRYPTION_KEY_SEED = 1008, INSIGHTS_COMPACTION = 1009, TEST = 9999 } type WithLockOptions = { subKey?: number; } & ({ timeoutMs?: number; waitIndefinitely?: never; } | { timeoutMs?: never; waitIndefinitely?: boolean; }); export declare class DbLockService { private readonly dataSource; private readonly databaseConfig; private readonly locks; constructor(dataSource: DataSource, databaseConfig: DatabaseConfig); withLock(lockId: DbLock, fn: (tx: EntityManager, ctx: OperationContext) => Promise, options?: WithLockOptions): Promise; withLockContext(lockId: DbLock, fn: (ctx: OperationContext) => Promise, options?: { timeoutMs?: number; }): Promise; tryWithLock(lockId: DbLock, fn: (tx: EntityManager) => Promise, options?: { subKey?: number; }): Promise; private acquireLock; private tryAcquireLock; private createReleaseFn; private getOrCreateLockState; } export {};