import type { Mutable } from '../mutable';
import type { Time } from '../time';
import { TimerCallback } from './callback';
import { TimerCallbackGroup } from './callback/group';
import { TimerCallbackSync } from './callback/sync';
import type { TimerEventId } from './event/id';
import type { TimerOptions } from './options';
/**
 * Active timer driven by external ticker calls to `onUpdate`.
 *
 * @category Timers
 */
export declare class TimerActive {
    readonly lastIntervalEnd: Mutable<number>;
    limitDuration: boolean;
    readonly listeners: Record<TimerEventId, TimerCallbackGroup>;
    paused: boolean;
    running: boolean;
    readonly timeLimit: Time;
    readonly timeStart: Time;
    readonly timeStop: Time;
    constructor(options?: TimerOptions);
    getListenerGroup(id: TimerEventId): TimerCallbackGroup | null;
    on(id: TimerEventId, fn: TimerCallback | TimerCallbackSync): boolean;
    once(id: TimerEventId, fn: TimerCallback | TimerCallbackSync): boolean;
    setTimeLimit(value: number | Time): boolean;
    unpause(): Promise<boolean>;
    pause(): Promise<boolean>;
    /**
     * Start the timer.
     */
    start(): Promise<boolean>;
    done(): Promise<boolean>;
    stop(): Promise<boolean>;
    executeCallbacks(eventId: TimerEventId): Promise<void>;
    onUpdate(): void;
}
