import { ICallback, ILogger, IRedisClient } from 'redis-smq-common';
import { EBackgroundJobStatus, IBackgroundJob, IBackgroundJobConfig } from './types/index.js';
export declare abstract class BackgroundJobManagerAbstract<Payload, Meta extends Record<string, unknown> = never> {
    protected readonly config: IBackgroundJobConfig;
    protected readonly redisClient: IRedisClient;
    protected readonly logger: ILogger;
    protected constructor(redisClient: IRedisClient, config: IBackgroundJobConfig, logger: ILogger);
    protected applyPartialUpdate(job: IBackgroundJob<Payload, Meta>, partial: Partial<IBackgroundJob<Payload, Meta>>): IBackgroundJob<Payload, Meta>;
    protected update(jobId: string, updates: Partial<IBackgroundJob<Payload, Meta>>, cb: ICallback<void>): void;
    protected removeFromProcessing(jobId: string, cb: ICallback<number>): void;
    initialize(cb: ICallback<void>): void;
    create(payload: Payload, options: Partial<IBackgroundJob<Payload, Meta>> | undefined, cb: ICallback<IBackgroundJob<Payload, Meta>>): void;
    get(jobId: string, cb: ICallback<IBackgroundJob<Payload>>): void;
    acquireNextJob(cb: ICallback<string | null>): void;
    cancel(jobId: string, cb: ICallback<IBackgroundJob<Payload>>): void;
    start(jobId: string, workerId: string, cb: ICallback<IBackgroundJob<Payload>>): void;
    complete(jobId: string, options: Partial<IBackgroundJob<Payload, Meta>> | undefined, cb: ICallback<IBackgroundJob<Payload, Meta>>): void;
    fail(jobId: string, error: string, cb: ICallback<IBackgroundJob<Payload>>): void;
    list(filter: {
        status?: EBackgroundJobStatus;
        target?: string;
        limit?: number;
    }, cb: ICallback<IBackgroundJob<Payload>[]>): void;
    recoverStuckJobs(cb: ICallback): void;
}
//# sourceMappingURL=background-job-manager-abstract.d.ts.map