import { AppraisalSubmission } from './AppraisalSubmission';
import { Paginated } from './Paginated';

export interface SubmissionStats {
  total: number;
  not_started: number;
  in_progress: number;
  completed: number;
}

export interface AppraisalCycle {
  id: string;
  name: string;
  status: string;
  review_type: string;
  description?: string | null;
  start_date: string;
  end_date: string;
  rating_scale_id?: string | null;
  goal_weight_percentage: number;
  competency_weight_percentage: number;
  self_review_start?: string | null;
  self_review_end?: string | null;
  manager_review_start?: string | null;
  manager_review_end?: string | null;
  rating_scale?: Record<string, unknown> | null;
  submissions?: AppraisalSubmission[];
  submission_stats?: SubmissionStats | null;
  created_at?: string | null;
  updated_at?: string | null;
}

export interface CreateAppraisalCyclePayload {
  name: string;
  start_date: string;
  end_date: string;
  status?: string | null;
  review_type?: string | null;
  description?: string | null;
  rating_scale_id?: string | null;
  goal_weight_percentage?: number | null;
  competency_weight_percentage?: number | null;
  self_review_start?: string | null;
  self_review_end?: string | null;
  manager_review_start?: string | null;
  manager_review_end?: string | null;
}

export interface DeleteAppraisalCyclePayload {
  message: string;
  id: string;
}

export interface AppraisalCycleResponse {
  data: AppraisalCycle;
}

export type PaginatedAppraisalCycles = Paginated<AppraisalCycle>;
