import { Logger } from '@foxpage/foxpage-shared';
import { ScheduleEvents } from '@foxpage/foxpage-types';
import { FPEventEmitterInstance } from '../common';
export type ScheduleAction<T> = (data: T | undefined) => Promise<null | undefined | T>;
export interface ScheduleOptions {
    appId: string;
    interval: number;
}
export interface Schedule<T> {
    start(): void;
    stop(): void;
}
/**
 * schedule
 *
 * @export
 * @class Schedule
 * @extends {FPEventEmitterInstance<ScheduleEvents<T>>}
 */
export declare class Schedule<T> extends FPEventEmitterInstance<ScheduleEvents<T>> {
    private appId;
    readonly interval: number;
    readonly action: ScheduleAction<T>;
    private handler;
    logger: Logger;
    private data?;
    constructor(action: ScheduleAction<T>, opt?: ScheduleOptions);
    private dispatch;
}
