import schedule from 'node-schedule';
import Base from '../base';
import Application from '../application';
import HandlerService from '../common/service/handlerService';
import FilterService from '../common/service/filterService';
import { IHandlerMsg, IServerOptions, IFrontendOrBackendSession, ICron, ICronConfigs } from '..';
export default class Server extends Base {
    handlerService: HandlerService;
    globalFilterService: FilterService;
    filterService: FilterService;
    cronHandlers: {
        [handler: string]: {
            [method: string]: () => void;
        };
    };
    crons: ICron[];
    cronConfigs: ICronConfigs;
    jobs: {
        [cronId: string]: schedule.Job;
    };
    constructor(app: Application, opts: IServerOptions);
    start(): void;
    afterStart(): void;
    stop(): void;
    /**
     * 初始化crons
     * @param manualReload 是否替换
     * @param clear 是否清空
     */
    initCrons(manualReload?: boolean, clear?: boolean): void;
    /**
     * 获取所有定时器
     */
    getCrons(): {
        active: boolean;
        id: string;
        time: string;
        action: string;
        serverId?: string | undefined;
        args?: any[] | undefined;
    }[];
    globalHandle(msg: IHandlerMsg, session: IFrontendOrBackendSession): Promise<any>;
    handle(msg: IHandlerMsg, session: IFrontendOrBackendSession): Promise<any>;
    private doHandle;
    private doForward;
    private initHandler;
    private initFilter;
    private beforeFilter;
    private afterFilter;
    /**
     * 加载定时器handler
     * @param manualReload
     */
    private loadCronHandlers;
    /**
     * 根据配置加载定时器
     * @param manualReload 是否替换旧的
     */
    private loadCrons;
    /**
     * 增加定时器
     * @param crons
     */
    private addCrons;
    /**
     * 检查并添加cron
     * @param cron
     * @param replace
     */
    private checkAndAdd;
    /**
     * 生成schedule
     */
    private createSchedule;
    /**
     * 移除现有的cron
     * @param ids
     */
    private removeCrons;
    /**
     * 解析路由
     * @param route eg: gate.gateHandler.login
     */
    private parseRoute;
}
