export interface LeaveBalance {
  id?: string | null;
  employee: {
    id: string;
    staff_id?: string;
    firstname?: string;
    lastname?: string;
    branch?: {
      id?: string;
      name?: string;
    };
  };
  leave_type: {
    id: string;
    name: string;
    code: string;
    color_code?: string | null;
  };
  year: number;
  entitled_days: number;
  carried_forward_days: number;
  adjustment_days: number;
  used_days: number;
  pending_days: number;
  available_days: number;
  adjustments?: LeaveBalanceAdjustmentHistory[];
  created_at?: string;
  updated_at?: string;
}

export interface LeaveBalanceAdjustmentHistory {
  id: string;
  adjustment_days: number;
  reason: string;
  adjusted_by?: {
    user_id?: string;
    email?: string;
  };
  created_at?: string;
}

export interface LeaveBalanceFilters {
  year?: number;
  employee_id?: string;
  leave_type_id?: string;
  branch_id?: string;
  search?: string;
  per_page?: number;
}

export interface LeaveBalanceListResponse {
  data: LeaveBalance[];
  meta?: {
    current_page: number;
    last_page: number;
    per_page: number;
    total: number;
  };
}

export interface LeaveBalanceSingleResponse {
  year: number;
  data: LeaveBalance[];
}

export interface AdjustLeaveBalancePayload {
  balance_id: string;
  adjustment_days: number;
  reason: string;
}

export interface ImportBalancesPayload {
  file: File;
}

export interface ImportBalancesResult {
  message: string;
  data: {
    success_count: number;
    error_count: number;
    errors: Array<{
      row: number;
      error: string;
    }>;
  };
}
