import type { RedisInfo } from "redis-info"; export type JobOptions = { priority?: number; attempts?: number; delay?: number; lifo?: boolean; timeout?: number; removeOnComplete?: boolean | number; removeOnFail?: boolean | number; repeat?: { count?: number; pattern?: string; every?: number; limit?: number; }; }; export type AdaptedJob = { id: string; name: string; data: Record; opts: JobOptions; createdAt: Date; processedAt: Date | null; finishedAt: Date | null; failedReason?: string; stacktrace?: string[]; retriedAt: Date | null; returnValue?: unknown; groupId?: string; progress?: number; attemptsMade?: number; rawName?: string; processedBy?: string; attemptsStarted?: number; stalledCounter?: number; deduplicationId?: string; runAt?: Date | null; priority?: number; }; export type JobCounts = Partial>; export type JobTimeRange = { from?: number; to?: number; }; export type FinishedRange = { offset: number; count: number; }; export type QueueLimits = { concurrency: number | null; rateLimit: { max: number; duration: number; } | null; rateLimitedForMs: number; }; /** The listed options that are set on `opts`, to carry them to another job. */ export declare const pickJobOptions: (opts: Record | undefined, keys: readonly string[]) => Record; export type JobPageMeta = { capped: boolean; cursorAdvance?: number; exhausted?: boolean; scanned: number; scanLimit: number; truncated?: boolean; }; export type JobScanToken = symbol; export type FeatureSupport = { addJobOptions: boolean; addJobOptionKeys: readonly string[]; jobNames: boolean; pause: boolean; resume: boolean; clean: boolean | { supportedStatuses: SupportedStatus[]; }; discard: boolean; retry: boolean; promote: boolean; logs: boolean; schedulers: boolean; schedulerUpdate: boolean; flows: boolean; priorities: boolean; empty: boolean; metrics: boolean; statuses: SupportedStatus[]; groups: boolean; workers: boolean; updateData: boolean; changeDelay: boolean; changePriority: boolean; deduplication: boolean; concurrencyLimit: boolean; rateLimit: boolean; }; export type SchedulerInfo = { key: string; name: string; id?: string | null; iterationCount?: number; limit?: number; startDate?: number; endDate?: number; tz?: string; pattern?: string; every?: number; next?: number; offset?: number; template?: { name?: string; data?: Record; opts?: Record; }; }; export declare class UnsupportedSchedulerUpdateError extends Error { constructor(message: string); } export declare class JobNotFoundError extends Error { constructor(message?: string); } export type QueueMetrics = { data: number[]; count: number; previousCount: number | null; coveredMinutes: number; meta: { count: number; prevTS: number; prevCount: number; }; }; export type FlowParent = { queueKey: string; id: string; failureHandled: boolean; }; export type FlowChildSet = "processed" | "unprocessed" | "failed" | "ignored"; export type FlowChildren = { total: number; keys: Array<{ key: string; set: FlowChildSet; }>; }; export type GroupInfo = { id: string; count: number; status: "active" | "paused" | "rate-limited"; }; export type WorkerInfo = { id: string; name?: string; ageSeconds?: number; idleSeconds?: number; }; export declare abstract class QueueAdapter { protected displayName: string; protected jobNameFn?: (data: Record) => string; constructor(displayName: string, jobNameFn?: (data: Record) => string); abstract getName(): string; abstract getType(): "bull" | "bullmq" | "bee" | "groupmq"; getDisplayName(): string; abstract supports: FeatureSupport; abstract getJobCounts(): Promise; getFailedCount(): Promise; abstract isPaused(): Promise; abstract pause(): Promise; abstract resume(): Promise; abstract empty(): Promise; abstract clean(status: CleanableStatus, graceMs: number): Promise; abstract getRedisInfo(): Promise; abstract getJobs(status: SupportedStatus, start: number, end: number, scanLimit?: number, scanToken?: JobScanToken): Promise; beginJobScan(_status: SupportedStatus, _scanLimit?: number): JobScanToken | undefined; endJobScan(_scanToken: JobScanToken): void; getJobPageMeta(_jobs: AdaptedJob[]): JobPageMeta | undefined; abstract getJob(jobId: string): Promise; getJobStatus(jobId: string): Promise; abstract addJob(data: Record, opts?: Record, name?: string): Promise; abstract rerunJob(jobId: string): Promise; abstract removeJob(jobId: string): Promise; abstract retryJob(jobId: string): Promise; abstract promoteJob(jobId: string): Promise; abstract discardJob(jobId: string): Promise; abstract getJobLogs(jobId: string): Promise; getFinishedRange?(status: "completed" | "failed", range: JobTimeRange): Promise; getRunAts?(jobIds: readonly string[]): Promise>; updateJobData?(jobId: string, data: Record): Promise; changeJobDelay?(jobId: string, delayMs: number): Promise; changeJobPriority?(jobId: string, priority: number): Promise; removeJobDeduplication?(jobId: string): Promise; getLimits?(): Promise; setConcurrencyLimit?(concurrency: number | null): Promise; setRateLimit?(limit: { max: number; duration: number; } | null): Promise; clearRateLimit?(): Promise; getSchedulers?(): Promise; addScheduler?(name: string, opts: Record, template: Record): Promise; updateScheduler?(key: string, opts: Record, template: Record): Promise; removeScheduler?(key: string): Promise; getMetrics?(type: "completed" | "failed", start: number, end: number): Promise; getQueueKey?(): string; getJobParent?(jobId: string): Promise; getJobChildren?(jobId: string, limit: number): Promise; getGroups(): Promise; getWorkers(): Promise; protected getJobName(data: Record, fallback: string): string; supportsStatus(status: SupportedStatus): boolean; canCleanStatus(status: SupportedStatus): status is CleanableStatus; } //# sourceMappingURL=base.adapter.d.ts.map