/**
 * Hong Kong Immigration related type definitions
 */

export enum ImmigrationCategory {
  // 优才计划 - Quality Migrant Admission Scheme
  QMAS = 'QMAS',

  // 专才计划 - General Employment Policy
  GEP = 'GEP',

  // 留学IANG - Immigration Arrangements for Non-local Graduates
  IANG = 'IANG',

  // 高才通计划 - Top Talent Pass Scheme
  TTPS = 'TTPS',

  // 投资移民 - Capital Investment Entrant Scheme
  CIES = 'CIES',

  // 科技人才入境计划 - Technology Talent Admission Scheme
  TECHTAS = 'TECHTAS',
}

export interface ImmigrationCategoryInfo {
  code: ImmigrationCategory;
  name: string;
  englishName: string;
  purpose: string;
  criteria: string[];
  talentType: string;
  quota: string;
  applicationPoints: string[];
}

export const IMMIGRATION_CATEGORIES: Record<ImmigrationCategory, ImmigrationCategoryInfo> = {
  [ImmigrationCategory.QMAS]: {
    code: ImmigrationCategory.QMAS,
    name: '优才计划',
    englishName: 'Quality Migrant Admission Scheme',
    purpose: '吸纳优秀人才来港定居',
    criteria: [
      '年龄',
      '教育经历',
      '工作经验',
      '语言能力',
      '年收入证明',
      '良好品格',
      '是否持有公司',
    ],
    talentType: '行业翘楚、精英人士',
    quota: '暂无名额限制',
    applicationPoints: [
      '年龄、教育经历、工作经验、年收入证明、良好品格等方面的要求（共12项）',
      '满足其中6项为基本门槛',
      '择优批准',
    ],
  },
  [ImmigrationCategory.GEP]: {
    code: ImmigrationCategory.GEP,
    name: '专才计划',
    englishName: 'General Employment Policy',
    purpose: '吸引专业人才来港就业',
    criteria: [
      '雇佣企业的行业背景',
      '行业内的地位',
      '政策扶持力度',
      '所属行业经济地位',
    ],
    talentType: '专业人士（≥200万年薪，属于人才清单）',
    quota: '无配额限制（不限行业）',
    applicationPoints: [
      '必须有雇主担保',
      '要保持工作连续性（被裁3个月内）',
      '工作和居住在非粤港澳',
      '申请前至少有一年半社保记录',
      '提供所在公司配套宣传图',
    ],
  },
  [ImmigrationCategory.IANG]: {
    code: ImmigrationCategory.IANG,
    name: '留学IANG',
    englishName: 'Immigration Arrangements for Non-local Graduates',
    purpose: '吸引优秀学生人才来港续读',
    criteria: ['有无完成学业', '是否有雇主担保'],
    talentType: '成绩优异、拥有国际化视野的学生',
    quota: '扩展到本港大学大湾区校区毕业生，为期2年、1年后续签',
    applicationPoints: ['必须有雇主担保', '要保持工作连续性'],
  },
  [ImmigrationCategory.TTPS]: {
    code: ImmigrationCategory.TTPS,
    name: '高才通计划',
    englishName: 'Top Talent Pass Scheme',
    purpose: '吸引高端人才来港',
    criteria: [
      'A类：年薪≥250万港币',
      'B类：毕业于世界前100名大学，5年内有3年以上工作经验',
      'C类：毕业于世界前100名大学，5年内有少于3年工作经验（年度限额10,000名）',
    ],
    talentType: '顶尖人才',
    quota: '无限期计划（推出后定期检讨）',
    applicationPoints: [
      'A类：年薪≥250万港币',
      'B类：毕业于世界前100名大学，5年内有3年以上工作经验',
      'C类：毕业于世界前100名大学，5年内少于3年工作经验，年度限额10,000名',
    ],
  },
  [ImmigrationCategory.CIES]: {
    code: ImmigrationCategory.CIES,
    name: '投资移民',
    englishName: 'Capital Investment Entrant Scheme',
    purpose: '吸引投资者',
    criteria: ['投资不少于3,000万港币（或等值外币）净资产于其指定对实益拥有者的许可投资'],
    talentType: '投资者',
    quota: '无名额限制',
    applicationPoints: [
      '资产审查新政3月1日起',
      '申请人只须证明在提出申请六个月前已持有该资产',
      '1,000万元额度可获考虑',
    ],
  },
  [ImmigrationCategory.TECHTAS]: {
    code: ImmigrationCategory.TECHTAS,
    name: '科技人才入境计划',
    englishName: 'Technology Talent Admission Scheme',
    purpose: '吸引科技人才来港就业',
    criteria: [
      '从事先进通讯技术',
      '人工智能',
      '生物科技',
      '网络安全',
      '数据分析',
      '数码娱乐',
      '金融科技',
      '绿色科技',
      '集成电路设计',
      '物联网',
      '材料科学',
      '微电子',
      '量子科技',
      '机械人技术等研究工作',
      '薪酬应不低于香港特区该业务的市场薪酬水平',
    ],
    talentType: '科技人才',
    quota: '需用公司高新创新科技营配出有效配额',
    applicationPoints: ['由符合创新科技署发出的获配证出有效配额'],
  },
};

// Assessment related types
export interface AssessmentRequest {
  category: ImmigrationCategory;
  userInfo: AssessmentUserInfo;
}

export interface AssessmentUserInfo {
  // Basic Info
  age?: number;
  nationality?: string;
  currentLocation?: string;

  // Education
  highestDegree?: string;
  university?: string;
  major?: string;
  graduationYear?: number;
  isTop100University?: boolean;

  // Work Experience
  totalYearsOfExperience?: number;
  currentJobTitle?: string;
  currentCompany?: string;
  currentIndustry?: string;
  annualIncome?: number;
  incomeCurrency?: string;

  // Additional
  hasHongKongEmployer?: boolean;
  hasTechBackground?: boolean;
  investmentAmount?: number;
  languageSkills?: string[];

  // Other relevant info
  additionalInfo?: Record<string, unknown>;
}

export interface AssessmentResult {
  category: ImmigrationCategory;
  eligibilityScore: number; // 0-100
  isEligible: boolean;
  recommendation: AssessmentRecommendation;
  strengths: string[];
  weaknesses: string[];
  suggestions: string[];
  detailedAnalysis: string;
}

export enum AssessmentRecommendation {
  HIGHLY_RECOMMENDED = 'HIGHLY_RECOMMENDED',
  RECOMMENDED = 'RECOMMENDED',
  CONDITIONALLY_RECOMMENDED = 'CONDITIONALLY_RECOMMENDED',
  NOT_RECOMMENDED = 'NOT_RECOMMENDED',
}
