import { Request, Response } from 'express'; import { HandlerContext } from './common'; import { Prehandler } from './prehandler'; import { Service } from './service'; import { Application } from './app'; import { Job, RecurrenceRule, RecurrenceSpecDateRange, RecurrenceSpecObjLit} from 'node-schedule'; type ScheduleHandler = () => void; interface ScheduleRepeatOptions { cron: string; date: Date; rule: RecurrenceRule | RecurrenceSpecDateRange | RecurrenceSpecObjLit; } type ScheduleRepeatConfigGenerator = (app: Application) => ScheduleRepeatOptions; type ScheduleRepeat = ScheduleRepeatConfigGenerator | ScheduleRepeatOptions; interface ScheduleCreateOption { name: string; repeat: ScheduleRepeat; service: Service; handler: Function; } export interface ScheduleJobCallbackOptions { fireDate: Date; } type ScheduleJobCallback = (options: ScheduleJobCallbackOptions) => void; export declare class Schedule { static Create(options: ScheduleCreateOption): Schedule; constructor(options: ScheduleCreateOption); scheduleJob(app: Application): Promise; cancel(): void; invoke(): void; readonly name: string; readonly repeat: ScheduleRepeat; readonly service: Service; readonly handler: ScheduleJobCallback; private _name: string; private _repeat: ScheduleRepeat; private _service: Service; private _handler: ScheduleJobCallback; private _job: Job; }