import { EventEmitter } from "node:events"; export interface TaskState { result?: 'completed' | 'timeout' | 'stopped' | 'error' | 'paused'; error?: Error; tsStart?: number; tsTimeout?: number; promise?: Promise; } export interface TaskProps { timeout?: number; state?: any; name?: string; errorOnTimeout?: boolean; log?: (event: any) => void; onDone?: (state: T) => P; onCancel?: () => void; } interface InternalTaskState

{ tsStart?: number; tsTimeout?: number; timeoutDuration?: number; isRunning: boolean; timeout?: NodeJS.Timeout; promise?: Promise

; onDone?: (result: P) => void; onError?: (error: Error) => void; onTimeout?: () => void; } export declare class InteruptableTask { protected state: T; protected internalState: InternalTaskState

; protected props?: TaskProps; protected internalEvents: EventEmitter; protected promise?: Promise

; protected onStopNotifiers: Array<() => void>; protected cancelNotified: boolean; constructor(promise: Promise, props?: TaskProps); getPromise(): Promise

; getUnderlyingPromise(): Promise | undefined; getState(): T; run(): Promise

; notifyOnStop(cb: () => void): void; start(): void; stop(): Promise; isRunning(): boolean; protected clearTimeout(): void; protected onTimeout(): void; protected notifyCancel(): void; protected sendStopNotification(): void; protected logEvent(event: any): void; } export {};