import { 
  AcceptanceCriterion, 
  TaskDependency, 
  TimeTracking, 
  Attachment, 
  Comment, 
  CustomField,
  Subtask 
} from '../shared/task-types.js';

export interface Task {
  id: string;
  title: string;
  description?: string;
  column: string;
  priority: 'low' | 'medium' | 'high' | 'urgent';
  createdAt: Date;
  updatedAt: Date;
  assignee?: string;
  tags: string[]; // Renamed from labels for consistency
  
  // New enhanced features
  acceptanceCriteria: AcceptanceCriterion[];
  dependencies: TaskDependency[];
  timeTracking?: TimeTracking;
  attachments: Attachment[];
  comments: Comment[];
  customFields: CustomField[];
  subtasks: Subtask[];
  watchers: string[]; // User IDs watching this task
  
  // Additional metadata
  dueDate?: Date;
  startDate?: Date;
  completedAt?: Date;
  blockedReason?: string;
  effort?: number; // Story points or hours
}

export interface KanbanBoard {
  id: string;
  name: string;
  columns: string[];
  tasks: Task[];
  createdAt: Date;
  updatedAt: Date;
}

export interface KanbanStore {
  boards: Record<string, KanbanBoard>;
}