import type { HttpClient } from "../api/http"; import { CrossEventEmitter } from "../platform/events"; export type TaskStatus = "pending" | "started" | "success" | "failure" | "revoked"; export interface TaskEvents { [key: string]: unknown; status: { status: TaskStatus; taskId: string; }; progress: { progress: { stage: string; message?: string; }; taskId: string; }; success: { taskId: string; }; failure: { error: string; taskId: string; }; timeout: { taskId: string; }; error: { error: Error; taskId: string; }; } export interface TaskOptions { timeout?: number; pollInterval?: number; maxPolls?: number; waitSeconds?: number; pollingRetries?: number; } export interface TaskResult { success: boolean; data?: T; error?: { message: string; details?: unknown; }; taskId: string; finalStatus: TaskStatus; duration: number; } export declare class AsyncTaskManager extends CrossEventEmitter { private activeTasks; private http; constructor(http: HttpClient); submitTask(endpoint: string, parameters: Record, options?: TaskOptions): Promise; startPollingExistingTask(taskId: string, options?: TaskOptions): void; waitForCompletion(taskId: string): Promise>; getTaskResult(taskId: string): Promise; cancelTask(taskId: string): Promise; getActiveTaskCount(): number; getTaskInfo(taskId: string): { taskId: string; duration: number; options: Required; } | null; destroy(): void; private normalizeOptions; private startPolling; private setTaskTimeout; private cleanup; } export interface TypedAsyncTaskManager { on(event: K, listener: (data: TaskEvents[K]) => void): this; emit(event: K, data: TaskEvents[K]): this; once(event: K, listener: (data: TaskEvents[K]) => void): this; off(event: K, listener: (data: TaskEvents[K]) => void): this; }