import * as ThingTalk from 'thingtalk'; declare abstract class BaseTimer { private _stopped; private _queue; private _timeout; constructor(); protected abstract _nextTimeout(): number; next(): Promise>; end(): void; stop(): void; private _reschedule; start(): void; } declare class Timer extends BaseTimer { private _base; private _interval; private _frequency; constructor(base: number, interval: number, frequency: number); toString(): string; private _setTimems; private _getTimems; private _setDay; private _splitDay; private _splitWeek; private _getEarliest; protected _nextTimeout(_now?: number | null): number; } declare class AtTimer extends BaseTimer { private _times; private _expiration_date; private _timezone; constructor(times: ThingTalk.Builtin.Time[], expiration_date: Date | null | undefined, timezone: string); toString(): string; protected _nextTimeout(): number; } declare class OnTimer extends BaseTimer { private _dates; constructor(dates: Date[]); toString(): string; protected _nextTimeout(_now?: number | null): number; } export { Timer, AtTimer, OnTimer };