export interface StaffingSuggestion {
  resourceId: string;
  resourceName: string;
  eid: string;
  score: number;
  scoreBreakdown: ScoreBreakdown;
  matchedSkills: string[];
  missingSkills: string[];
  availabilityConflicts: string[];
  estimatedDailyCostCents: number;
  currentUtilization: number;
}

export interface ScoreBreakdown {
  skillScore: number;
  availabilityScore: number;
  costScore: number;
  utilizationScore: number;
  total: number;
}

export interface UtilizationAnalysis {
  resourceId: string;
  resourceName: string;
  chargeabilityTarget: number;
  currentChargeability: number;
  chargeabilityGap: number;
  allocations: UtilizationPeriod[];
  overallocatedDays: string[];
  underutilizedDays: string[];
}

export interface UtilizationPeriod {
  startDate: Date;
  endDate: Date;
  hoursPerDay: number;
  projectName: string;
  isChargeable: boolean;
}

export interface CapacityWindow {
  resourceId: string;
  resourceName: string;
  startDate: Date;
  endDate: Date;
  availableHoursPerDay: number;
  availableDays: number;
  totalAvailableHours: number;
}
