import { Queue } from '../core/queue.ts'; import type { JobStatus, JobMeta, QueueMessage, BaseJobOptions, WithPriority, WithDelay } from '../interfaces/job.ts'; import type { QueueOptions } from '../interfaces/plugin.ts'; export interface RedisJobRequest extends BaseJobOptions, WithPriority, WithDelay { /** Job payload */ payload: TPayload; } export interface RedisClient { incr(key: string): Promise; hSet(key: string, field: string, value: string): Promise; hGet(key: string, field: string): Promise; hDel(key: string, fields: string[]): Promise; hIncrBy(key: string, field: string, increment: number): Promise; zAdd(key: string, members: { score: number; value: string; }): Promise; zRem(key: string, members: string[]): Promise; zRangeByScore(key: string, min: number | string, max: number | string, options?: { REV?: boolean; LIMIT?: { offset: number; count: number; }; }): Promise; zRange(key: string, start: number, stop: number, options?: { REV?: boolean; }): Promise; zScore(key: string, member: string): Promise; del(keys: string[]): Promise; } export declare class RedisQueue> extends Queue> { private queueName; private messagesKey; private waitingKey; private delayedKey; private reservedKey; private attemptsKey; private idKey; private redis; constructor(redisClient: any, // Accept any Redis client queueName: string | undefined, options: QueueOptions & { keyPrefix?: string; }); protected pushMessage(payload: unknown, meta: JobMeta): Promise; protected reserve(timeout: number): Promise; protected completeJob(message: QueueMessage): Promise; protected failJob(message: QueueMessage, error: unknown): Promise; status(id: string): Promise; private moveDelayedJobs; private moveExpiredJobs; /** * Get the number of jobs in the waiting queue */ getWaitingCount(): Promise; /** * Get the number of jobs in the delayed queue */ getDelayedCount(): Promise; /** * Get the number of jobs in the reserved queue */ getReservedCount(): Promise; /** * Clear all jobs from this queue */ clear(): Promise; }