import EventEmitter from "node:events";
import type { TaskEvents, ITask, TaskStatus, TaskInputHandler } from "./interfaces/task.interface.js";
declare abstract class Task extends EventEmitter> implements ITask {
readonly id: string;
status: TaskStatus;
output: Output | undefined;
readonly needs: Array;
readonly if: (() => boolean) | undefined;
private readonly handleInput;
protected readonly abortController: AbortController;
constructor(props: {
id: string;
needs?: Array;
if?: () => boolean;
handleInput: TaskInputHandler;
});
execute(): Promise;
abstract run(input: Input): Promise