import { Delay, Handle, Time, Timer } from '@motorcycle/types';
/**
 * A Timer instance with control over how time progresses.
 *
 * @name VirtualTimer
 * @example
 * import { VirtualTimer } from '@motorcycle/test'
 *
 * const timer = new VirtualTimer()
 *
 * timer.setTimer(() => console.log('Hello'), 100)
 *
 * timer.tick(100)
 */
export declare class VirtualTimer implements Timer {
    protected time: Time;
    protected targetTime: Time;
    protected currentTime: Time;
    protected task: (() => any) | void;
    protected timer: Handle;
    protected active: boolean;
    protected running: boolean;
    protected key: Handle;
    protected promise: Promise<void>;
    constructor();
    now(): Time;
    setTimer(fn: () => any, delay: Delay): Handle;
    clearTimer(handle: Handle): void;
    tick(delay: Delay): Promise<void>;
    protected run(): Promise<void>;
    protected step(): Promise<{}>;
}
