import { EventEmitter } from 'events'; import type { TaskReporterCompleteTaskStatus, TaskReporterTaskStatus } from './types/TaskReporterTaskStatus.js'; export interface TaskReporterTaskResult { status: TaskReporterCompleteTaskStatus; /** Main message for the task. */ message?: string; errors?: string[]; warnings?: string[]; /** Extra details, shown with verbose or debug logging. */ details?: string; /** Even more information (beyond `details`), only shown with debug logging. */ extended?: string; /** Log this task's completion even if `TaskReporterOptions.showCompleted` is false. */ forceShow?: boolean; } /** Mapping from custom event name to args */ interface TaskEvents { start: []; complete: [TaskReporterTaskResult]; } export interface CompletedTaskReporterTask { name: string; /** Task duration in milliseconds, or undefined if it was canceled or never started */ duration: number | undefined; endedAt: Date; result: TaskReporterTaskResult; } /** * Task recorded and reported by a TaskReporter. * Use `reporter.addTask()` to create a new task. */ export declare class TaskReporterTask extends EventEmitter { readonly name: string; private _result?; private _timeStarted?; private _timeEnded?; private _endedAt?; /** * For TaskReporter use only. Use `reporter.addTask()` to create a new task. * @internal */ constructor(name: string); /** * Current status: * - `"pending"` if not started yet * - `"running"` if started but not completed * - result status if completed */ get status(): TaskReporterTaskStatus; /** Get the task duration in ms, or undefined if not finished yet */ get duration(): number | undefined; /** End date, only if completed */ get endedAt(): Date | undefined; /** Result, only if completed */ get result(): Readonly | undefined; /** Start the task and emit the `'start'` event to the TaskReporter. */ start(): void; /** * Complete the task. No-op if called multiple times. * @param result - Task result. If `result.status` is unset, defaults to `'complete'` (success). */ complete(result?: Partial): void; toCompletedJson(): CompletedTaskReporterTask; /** Used by TaskReporter to listen for events */ on(event: K, listener: (...args: TaskEvents[K]) => void): this; /** For internal use only */ private _emit; } export {}; //# sourceMappingURL=TaskReporterTask.d.ts.map