import { TasksQueueDao } from "./tasks-queue.dao.js";
import { SchedulePeriodicTaskDetails, ScheduleTaskDetails } from "./tasks-model.js";
import { TasksWorker } from "./tasks-worker.js";
export interface TasksQueueConfig {
    concurrency: number;
    runAuxiliaryWorker: boolean;
    loopInterval: number;
}
export declare class TasksQueueService {
    private readonly tasksQueueDao;
    private readonly worker;
    private readonly auxiliaryWorker;
    constructor(tasksQueueDao: TasksQueueDao, config: TasksQueueConfig);
    schedule(task: ScheduleTaskDetails): Promise<void>;
    scheduleAtFixedRate(task: SchedulePeriodicTaskDetails): Promise<void>;
    scheduleAtFixedDelay(task: SchedulePeriodicTaskDetails): Promise<void>;
    taskScheduled(queueName: string): void;
    registerWorker(queueName: string, worker: TasksWorker): void;
    start(): void;
    stop(): Promise<void>;
}
