import { Cronjob, CronjobEnabledChangedMessage } from '@5minds/processcube_engine_sdk';
import { ProcessDefinitionMediator, ProcessInstanceDatabaseAdapter } from '../Tools';
import { CronjobDatabaseAdapter } from '../Tools/DatabaseAdaptersSequelize/index';
import { IdentityService } from '../Tools/Iam/index';
import { ExecuteProcessService } from './ExecuteProcessService';
import { TimerFacade } from './Facades/index';
export declare class CronjobService {
    private readonly executeProcessService;
    private readonly logger;
    private readonly cronjobAdapter;
    private readonly processDefinitionMediator;
    private readonly processInstanceAdapter;
    private readonly timerFacade;
    private cronjobDictionary;
    private internalIdentity;
    private serviceIsRunning;
    private notificationSubscriptions;
    constructor(cronjobAdapter: CronjobDatabaseAdapter, executeProcessService: ExecuteProcessService, identityService: IdentityService, processDefinitionMediator: ProcessDefinitionMediator, processInstanceAdapter: ProcessInstanceDatabaseAdapter, timerFacade: TimerFacade);
    get isRunning(): boolean;
    start(): Promise<void>;
    dispose(): void;
    stop(): void;
    updateCronjobs(deployedProcessDefinitionIds: Array<string>, cronjobMap: {
        [proessDefinitionId: string]: Array<Cronjob>;
    }): Promise<void>;
    updateCronjob(options: CronjobEnabledChangedMessage): Promise<void>;
    removeCronjobsByProcessDefinition(processDefinitionId: string): Promise<void>;
    private initializeCronjob;
    private isValidCrontab;
    private executeProcessModelWithCronjob;
    private stopCronjobs;
    private stopCronjob;
    private getEventMessage;
    private removeSubscription;
    private onProcessDeployed;
    private onProcessUndeployed;
    private createSubscription;
}
