import cron from 'node-cron';
import { IRegister } from '../../../annotation';
import { ETaskService } from '../entity/ETaskService';
export declare abstract class ITaskRegister<T extends ETaskService> extends IRegister<T> {
    configs: T[];
    singletonConfigs: string[];
    taskList: Map<string, cron.ScheduledTask>;
    serviceMap: Map<string, Function>;
    services: Map<string, any>;
    protected scanService(): Promise<void>;
    register(keys?: any[]): Promise<void>;
    protected abstract registerTask(item: T): Promise<void>;
    destroy(keys?: any[]): void;
    /**
     * 重载任务
     * @param keys
     */
    reload(keys?: any[]): Promise<void>;
    /**
     * 获取所有调度任务配置
     *
     * 重写该方法，实现动态获取任务配置
     * 注意需要添加一个 `Id` 字段作为唯一标识
     * 其他字段根据实际情况自行添加
     *
     * 只要单例模式的可以重写返回空数组 return []
     *
     * 基本：{`Id`: any, class: string, title: string, description: string, cron: string}
     */
    protected abstract fetchConfigs(): Promise<T[]>;
}
