/** * Copyright 2023 Kapeta Inc. * SPDX-License-Identifier: BUSL-1.1 */ import { LogLevel } from './types'; export type TaskRunner = (task: Task) => Promise; export declare enum TaskStatus { PENDING = "PENDING", RUNNING = "RUNNING", COMPLETED = "COMPLETED", FAILED = "FAILED" } interface Future { promise: Promise; resolve: (result: T) => void; reject: (e: any) => void; } interface TaskMetadata { name: string; /** * A unique prefix for the task. If defined only 1 task with this ID prefix will be executed at a time */ group?: string; progress?: number; [key: string]: any; } interface TaskData { id: string; status: TaskStatus; errorMessage?: string; metadata: TaskMetadata; future: Future; run: TaskRunner; } export declare class Task implements TaskData { private data; constructor(task: TaskData); get id(): string; get status(): TaskStatus; get errorMessage(): string | undefined; get metadata(): TaskMetadata; get future(): Future; get run(): TaskRunner; set status(status: TaskStatus); set errorMessage(errorMessage: string | undefined); set metadata(metadata: TaskMetadata); emitUpdate(): void; addLog(log: string, level?: LogLevel): void; wait(): Promise; toData(): { id: string; status: TaskStatus; errorMessage?: string | undefined; metadata: TaskMetadata; future: Future; run: TaskRunner; }; } declare class TaskManager { private _tasks; add(id: string, runner: TaskRunner, metadata: TaskMetadata): Task; waitFor(filter: (task: Task) => boolean): Promise; get(taskId: string): Task | undefined; exists(taskId: string): boolean; remove(taskId: string): void; list(): TaskData[]; private invokeTask; } export declare const taskManager: TaskManager; export {};