/**
 * 本模块提供倒计时功能。
 * @packageDocumentation
 */
/**
 * 表示剩余时长。
 */
export interface IRemaining {
    /**
     * 剩余天数。
     */
    days: number;
    /**
     * 剩余小时数。
     */
    hours: number;
    /**
     * 剩余分钟数。
     */
    minutes: number;
    /**
     * 剩余秒数。
     */
    seconds: number;
    /**
     * 剩余总时间的毫秒表示。
     */
    totalMsecs: number;
}
/**
 * 倒计时的回调函数。
 */
export interface ICountdownCallback {
    (remaining: IRemaining): void;
}
/**
 * 倒计时类。
 * @example
 * ```javascript
 * const countdown = new Countdown(60, (remaining) => {
 *   console.dir(remaining);
 * });
 * countdown.start();
 * ```
 */
export declare class Countdown {
    /**
     * 倒计时总时间的毫秒表示。
     */
    protected readonly _totalMSecs: number;
    /**
     * 倒计时回调函数。
     */
    protected readonly _cb: ICountdownCallback;
    /**
     * 倒计时剩余时间的毫秒表示。
     */
    protected _remainingMSecs?: number;
    /**
     * 当前正在使用的倒计时秒数。
     */
    protected _usingMSecs?: number;
    /**
     * 倒计时开始时间的毫秒级时间戳，为 undefined 时表示倒计时未开始。
     */
    protected _startTime?: number;
    /**
     * 倒计时定时器 id。
     */
    protected _timerId?: number;
    /**
     * 倒计时类构造函数。
     * @param totalSecs 倒计时总秒数。
     * @param cb 剩余时长的回调函数，正常情况下大概 1 秒回调一次。
     */
    constructor(totalSecs: number, cb: ICountdownCallback);
    /**
     * 倒计时的具体操作。
     */
    protected _exec(): void;
    /**
     * 开始倒计时。
     */
    start(): void;
    /**
     * 中断倒计时。
     */
    protected _break(): void;
    /**
     * 停止倒计时。如果再次调用 start，则重新开始倒计时。
     */
    stop(): void;
    /**
     * 暂停倒计时。如果再次调用 start，则继续未完成的倒计时。
     */
    pause(): void;
}
