export type TaskStatus = 'pending' | 'leased' | 'completed' | 'failed'; export interface ITask { taskId: string; startRow: number; endRow: number; startOffset?: number; endOffset?: number; workerId: string | null; status: TaskStatus; retries: number; progress: number; // 0 to 100 rowsProcessed?: number; leaseUntil: string | null; // ISO Date string createdAt: string; // ISO Date string updatedAt: string; // ISO Date string completedAt: string | null; // ISO Date string errorMessage?: string | null; } export interface CreateTaskInput { startRow: number; endRow: number; } export interface CreateTasksBatchInput { totalRows: number; chunkSize?: number; } export interface TaskFilter { status?: TaskStatus; workerId?: string; limit?: number; offset?: number; }