import type { EmitMethod, HandlerMap, LoggerLike, Task } from '../types/index.js';
import type { QueueRepository } from './repository.interface.js';
export declare abstract class BaseQueueRepository implements QueueRepository {
    logger?: LoggerLike;
    emitEvent?: EmitMethod;
    MAX_RETRIES: number;
    MAX_PROCESSING_TIME: number;
    readonly id: string;
    protected dequeueLock: boolean;
    constructor(maxRetries: number, maxProcessingTime: number);
    abstract loadTasks(status?: Task<HandlerMap>['status']): Promise<Task<HandlerMap>[]>;
    abstract saveTasks(tasks: Task<HandlerMap>[], status?: Task<HandlerMap>['status']): Promise<Task<HandlerMap>[]>;
    abstract enqueue(task: Task<HandlerMap>): Promise<void>;
    abstract deleteTask(id: string, hardDelete?: boolean): Promise<Task<HandlerMap> | undefined>;
    updateTask(id: string, obj: Partial<Task<HandlerMap>>): Promise<Task<HandlerMap> | undefined>;
    sortTasksToDequeue(taskA: Task<HandlerMap>, taskB: Task<HandlerMap>): number;
    dequeue(): Promise<Task<HandlerMap> | null>;
    protected checkAndHandleStuckTasks(tasks: Task<HandlerMap>[]): Promise<void>;
}
