import type { CronExpression } from 'cron-parser';
import safeTimers from 'safe-timers';
import type { Agent } from 'egg';
import type { EggScheduleConfig } from '../types.js';
import { BaseStrategy } from './base.js';
export declare abstract class TimerStrategy extends BaseStrategy {
    #private;
    protected cronInstance?: CronExpression;
    constructor(scheduleConfig: EggScheduleConfig, agent: Agent, key: string);
    protected handler(): void;
    start(): void;
    onJobStart(): void;
    /**
     * calculate next tick
     *
     * @return {Number|undefined} time interval, if out of range then return `undefined`
     */
    protected getNextTick(): number | undefined;
    protected safeTimeout(handler: () => void, delay: number, ...args: any[]): number | safeTimers.Timeout;
}
