import type { DatabaseAdapter, QueueJobRecord } from '../interfaces/database.ts'; import type { JobMeta, JobStatus } from '../interfaces/job.ts'; import { DbQueue } from '../drivers/db.ts'; import { RedisQueue as NativeRedisQueue } from '../drivers/redis.ts'; export interface RedisClient { isOpen?: boolean; connect?(): Promise; quit?(): Promise; incr(key: string): Promise; hSet(key: string, field: string | Record, value?: string): Promise; hGet(key: string, field: string): Promise; hGetAll(key: string): Promise>; hDel(key: string, ...fields: string[]): Promise; hIncrBy(key: string, field: string, increment: number): Promise; zAdd(key: string, member: { score: number; value: string; }): Promise; zRem(key: string, ...members: string[]): Promise; zRangeByScore(key: string, min: number | string, max: number | string): Promise; zScore(key: string, member: string): Promise; zPopMax(key: string): Promise<{ value: string; score: number; } | null>; del(...keys: string[]): Promise; } export interface RedisConfig { url?: string; host?: string; port?: number; password?: string; database?: number; keyPrefix?: string; } export declare class RedisDatabaseAdapter implements DatabaseAdapter { private client; private keyPrefix; private connected; constructor(client: RedisClient, keyPrefix?: string); private ensureConnected; private getJobKey; private getCounterKey; private getWaitingKey; private getReservedKey; insertJob(payload: Buffer, meta: JobMeta): Promise; reserveJob(timeout: number): Promise; completeJob(id: string): Promise; releaseJob(id: string): Promise; failJob(id: string, error: string): Promise; getJobStatus(id: string): Promise; deleteJob(id: string): Promise; markJobDone(id: string): Promise; private moveDelayedJobs; private recoverExpiredJobs; close(): Promise; } export declare class RedisQueue> extends DbQueue { constructor(config: { client: RedisClient; keyPrefix?: string; name: string; }); } export declare function createRedisQueue>(name: string, url?: string): RedisQueue; export { DbQueue, NativeRedisQueue };