import { BeforeApplicationShutdown, OnApplicationBootstrap } from '@nestjs/common';
import { ModuleRef } from '@nestjs/core';
import { Processor, PulseOnEventType, JobAttributesData } from '@pulsecron/pulse';
import { PulseModuleJobOptions } from '../decorators';
import { JobProcessorType } from '../enums';
import { DatabaseService } from './database.service';
export type EventListener = (...args: any[]) => void;
export declare class PulseOrchestrator implements OnApplicationBootstrap, BeforeApplicationShutdown {
    private readonly moduleRef;
    private readonly database;
    private readonly logger;
    private readonly queues;
    constructor(moduleRef: ModuleRef, database: DatabaseService);
    onApplicationBootstrap(): Promise<void>;
    beforeApplicationShutdown(): Promise<void>;
    addQueue(queueName: string, queueToken: string, queueConfigToken: string): void;
    addJobProcessor(queueToken: string, processor: Processor<JobAttributesData> & Record<'_name', string>, options: PulseModuleJobOptions, type: JobProcessorType, useCallback: boolean): void;
    addEventListener(queueToken: string, listener: EventListener, eventName: PulseOnEventType, jobName?: string): void;
    private attachEventListeners;
    private defineJobProcessors;
    private scheduleJobs;
    private getQueue;
    private getQueueConfig;
}
