export declare enum TaskStatus { WAITING = "waiting", PENDING = "pending", RUNNING = "running", RATE_LIMITED = "rate_limited", WAITING_ANSWER = "waiting_answer", COMPLETED = "completed", FAILED = "failed", TIMED_OUT = "timed_out", CANCELLED = "cancelled", UNKNOWN = "unknown" } export declare const TERMINAL_STATUSES: ReadonlySet; export declare function isTerminalStatus(status: TaskStatus): boolean; export type TaskTypeName = 'coder' | 'planner' | 'tester' | 'researcher' | 'general'; export type Provider = 'codex' | 'copilot' | 'claude-cli'; export type PendingQuestion = { type: 'user_input'; requestId: string; questions: Array<{ id: string; text: string; options?: string[]; allowFreeform?: boolean; }>; } | { type: 'command_approval'; requestId: string; command: string; sandboxPolicy?: string; } | { type: 'file_approval'; requestId: string; fileChanges: Array<{ path: string; patch: string; }>; } | { type: 'elicitation'; requestId: string; serverName?: string; message: string; schema?: unknown; } | { type: 'dynamic_tool'; requestId: string; toolName: string; arguments: string; }; export type PendingQuestionType = PendingQuestion['type']; export interface TaskState { id: string; status: TaskStatus; provider: Provider; taskType: TaskTypeName; prompt: string; cwd: string; model?: string; effort?: 'low' | 'medium' | 'high' | 'xhigh'; sessionId?: string; operationId?: string; createdAt: string; updatedAt: string; startedAt?: string; completedAt?: string; lastOutputAt?: string; timeoutMs?: number; timeoutAt?: string; keepAlive?: number; output: string[]; outputFilePath?: string; dependsOn?: string[]; labels: string[]; pendingQuestions: PendingQuestion[]; error?: string; exitCode?: number; result?: unknown; tokenUsage?: { totalTokens: number; inputTokens: number; outputTokens: number; contextWindow: number | null; }; recovered?: boolean; degraded?: boolean; }