import type { BulkOptions, JobOptions, JobPayload, JobSetterOptions } from "./types.js"; export type JobConstructor = { new (): Job; name: string; sidekiqOptions?: JobOptions; sidekiqRetryIn?: RetryInHandler; sidekiqRetriesExhausted?: RetriesExhaustedHandler; getSidekiqOptions(): JobOptions; setSidekiqOptions(options: JobOptions): void; queueAs(queue: string): void; retryIn(handler: RetryInHandler): void; retriesExhausted(handler: RetriesExhaustedHandler): void; set(options: JobSetterOptions): JobSetter; performAsync(...args: TArgs): Promise; performIn(interval: number, ...args: TArgs): Promise; performAt(timestamp: number, ...args: TArgs): Promise; performBulk(args: TArgs[], options?: BulkOptions): Promise<(string | null)[]>; performInline(...args: TArgs): Promise; jobs(): JobPayload[]; clear(): void; drain(): Promise; performOne(): Promise; processJob(payload: JobPayload): Promise; clientPush(item: JobPayload): Promise; }; type JobClass = abstract new () => Job; type JobArgsFromClass = T extends { new (): Job; } ? TArgs : unknown[]; export declare abstract class Job { jid?: string; _context?: { stopping: () => boolean; signal?: AbortSignal; }; static getSidekiqOptions(this: JobConstructor): JobOptions; static setSidekiqOptions(this: JobConstructor, options: JobOptions): void; static queueAs(this: JobConstructor, queue: string): void; static retryIn(this: JobConstructor, handler: RetryInHandler): void; static retriesExhausted(this: JobConstructor, handler: RetriesExhaustedHandler): void; static set(this: TClass, options: JobSetterOptions): JobSetter>; static performAsync(this: TClass, ...args: JobArgsFromClass): Promise; static performIn(this: TClass, interval: number, ...args: JobArgsFromClass): Promise; static performAt(this: TClass, timestamp: number, ...args: JobArgsFromClass): Promise; static performBulk(this: TClass, args: JobArgsFromClass[], options?: BulkOptions): Promise<(string | null)[]>; static performInline(this: TClass, ...args: JobArgsFromClass): Promise; static jobs(this: JobConstructor | typeof Job): JobPayload[]; static clear(this: JobConstructor): void; static drain(this: JobConstructor): Promise; static performOne(this: JobConstructor): Promise; static processJob(this: JobConstructor, payload: JobPayload): Promise; static clearAll(): void; static drainAll(): Promise; static clientPush(this: JobConstructor, item: JobPayload): Promise; logger(): import("./logger.js").Logger; interrupted(): boolean; /** * Get the AbortSignal for this job. * Can be used with fetch(), streams, or any AbortSignal-compatible API. * The signal is aborted when the runner is shutting down. */ get signal(): AbortSignal | undefined; abstract perform(...args: TArgs): Promise | void; } export type RetryInHandler = (count: number, error: Error, payload: JobPayload) => number | "discard" | "kill" | "default"; export type RetriesExhaustedHandler = (payload: JobPayload, error: Error) => "discard" | undefined; export declare class JobSetter { private readonly klass; private options; constructor(klass: JobConstructor, options: JobSetterOptions); set(options: JobSetterOptions): JobSetter; performAsync(...args: TArgs): Promise; performInline(...args: TArgs): Promise; performBulk(args: TArgs[], options?: BulkOptions): Promise<(string | null)[]>; performIn(interval: number, ...args: TArgs): Promise; performAt(timestamp: number, ...args: TArgs): Promise; private at; } export {}; //# sourceMappingURL=job.d.ts.map