import { MemoryLockManager, MemoryLockOptions } from './memory-lock'; import { RedisLockManager, RedisLockOptions } from './redis-lock'; import { LockManager } from '../interfaces'; export { MemoryLockManager, RedisLockManager }; export type { MemoryLockOptions, RedisLockOptions }; /** * Create a lock manager instance * @param type Lock manager type ('memory' or 'redis') * @param options Lock manager options * @returns Lock manager instance */ export function createLockManager( type: 'memory' | 'redis', options?: any ): LockManager { switch (type) { case 'memory': return new MemoryLockManager(options); case 'redis': // Redis client is required for Redis lock manager if (!options || !options.client) { throw new Error('Redis client is required for Redis lock manager'); } return new RedisLockManager(options.client, options); default: throw new Error(`Unknown lock manager type: ${type}`); } }