/* eslint-disable spellcheck/spell-checker */
import type { ValidatePromotionResponse, ValidationVacancy } from './service';

export interface EmployeeOption {
  id: number;
  name: string;
  roleName: string;
  launchName?: string;
  launchId?: number;
  roleId: number;
  isUnassigned?: boolean;
}

export interface ChainMember {
  userId: number;
  userName: string;
  fromRoleId: number;
  fromRoleName: string;
  toRoleId: number;
  toRoleName: string;
  toDesignationId?: number;
  toDesignationName?: string;
  validation?: ValidatePromotionResponse;
  launchIds?: number[];
  reportsToUserId?: number;
  previousHolderUserId?: number;
}

export interface VacancyResolution {
  vacancy: ValidationVacancy;
  mode: 'existing' | 'promote' | undefined;
  userId?: number;
  chainMemberId?: number;
  designationId?: number;
  sourceUserId?: number;
}

export interface LeadTransferConfig {
  fromUserId: number;
  fromUserName: string;
  fromLaunchId: number;
  fromLaunchName: string;
  leadCount: number;
  toUserId?: number;
  toLaunchId?: number;
}

export interface LeadTransferGroup {
  userId: number;
  userName: string;
  toRoleLabel: string;
  fromRoleLabel: string;
  isTlToCm: boolean;
  rows: { transfer: LeadTransferConfig; index: number }[];
}

export interface TeamMemberStrandedRow {
  memberId: number;
  memberName: string;
  fromLaunchId: number;
  fromLaunchName: string;
  toLaunchId?: number;
}

export interface PendingNewLaunch {
  id: number;
  name: string;
  location?: string;
  cityId: number;
  forUserId: number;
  forUserName: string;
}
