/**
 * GitDocumentDB
 * Copyright (c) Hidekazu Kubota
 *
 * This source code is licensed under the Mozilla Public License Version 2.0
 * found in the LICENSE file in the root directory of this source tree.
 */
import { ColoredLogger, Task, TaskStatistics } from './types';
/**
 * TaskQueue
 *
 * @public
 */
export declare class TaskQueue {
    private _ulid;
    private _lock;
    private _logger;
    private _taskQueue;
    private _isTaskQueueWorking;
    /**
     * Task Statistics
     *
     * (Just for test purposes)
     */
    private _statistics;
    private _currentTask;
    private _checkTimer;
    private _checkTimerInterval;
    /**
     * Constructor
     *
     * @remarks
     * Must call start() after new TaskQueue()
     *
     * @public
     */
    constructor(logger: ColoredLogger);
    /**
     * Set logger
     *
     * @internal
     */
    setLogger(logger: ColoredLogger): void;
    /**
     * Get current task ID
     *
     * @public
     */
    currentTaskId(): string | undefined;
    /**
     * Get default task ID
     *
     * @remarks ID monotonically increases. It does not ensures the task order in _taskQueue.
     *
     * @internal
     */
    newTaskId(): string;
    /**
     * Get enqueue time
     *
     * @remarks It ensures the task order in _taskQueue.
     *
     * @public
     */
    getEnqueueTime(): string;
    /**
     * Push task to TaskQueue
     *
     * @internal
     */
    pushToTaskQueue(task: Task): void;
    /**
     * Start TaskQueue
     *
     * @public
     */
    start(): void;
    /**
     * Stop TaskQueue
     *
     * @public
     */
    stop(): void;
    /**
     * Get length of TaskQueue
     *
     * @public
     */
    length(): number;
    /**
     * Get current statistics
     *
     * @public
     */
    currentStatistics(): TaskStatistics;
    /**
     * @internal
     */
    waitCompletion(timeoutMsec: number): Promise<boolean>;
    private _pullTargetTask;
    /**
     * checkTaskQueue
     * @internal
     */
    private _checkTaskQueue;
    /**
     * execTask
     * @internal
     */
    private _execTask;
}
//# sourceMappingURL=task_queue.d.ts.map