import StatefulPromise from "./stateful-promise";
interface Task<TValue = unknown> {
    readonly promise: StatefulPromise<TValue>;
    readonly abort: (reason?: unknown) => void;
}
/**
 * [API Reference](https://tai-kun.github.io/surrealdb.js/v2/api/utils/task-queue/#add)
 */
export interface TaskRunnerArgs {
    signal: AbortSignal;
}
/**
 * [API Reference](https://tai-kun.github.io/surrealdb.js/v2/api/utils/task-queue/#add)
 */
export interface TaskOptions {
    readonly signal?: AbortSignal | undefined;
}
/**
 * [API Reference](https://tai-kun.github.io/surrealdb.js/v2/api/utils/task-queue/)
 */
export default class TaskQueue {
    protected readonly _queue: Task[];
    protected readonly _idle: (() => void)[];
    protected rm(task: Task): void;
    /**
     * [API Reference](https://tai-kun.github.io/surrealdb.js/v2/api/utils/task-queue/#count)
     */
    get count(): number;
    /**
     * [API Reference](https://tai-kun.github.io/surrealdb.js/v2/api/utils/task-queue/#add)
     */
    add<TValue>(runner: (args: TaskRunnerArgs) => TValue | PromiseLike<TValue>, options?: TaskOptions | undefined): StatefulPromise<TValue>;
    /**
     * [API Reference](https://tai-kun.github.io/surrealdb.js/v2/api/utils/task-queue/#idle)
     */
    idle(): StatefulPromise<void>;
    /**
     * [API Reference](https://tai-kun.github.io/surrealdb.js/v2/api/utils/task-queue/#abort)
     */
    abort(reason?: unknown): void;
}
export {};
//# sourceMappingURL=task-queue.d.ts.map