/**
 * 权限系统类型定义
 * 
 * @description 定义用户权限、角色等类型
 * @version Week 2 Day 7 - 任务17
 */

/**
 * 用户版本类型（权限等级）
 * - basic: 基础版（免费试用）
 * - advanced: 高级版（付费用户）
 * - premium: 旗舰版（完整功能）
 */
export type UserVersion = 'basic' | 'advanced' | 'premium'

/**
 * 用户信息接口
 */
export interface UserInfo {
  /** 用户ID */
  id: string
  
  /** 用户名称 */
  name: string
  
  /** 用户邮箱 */
  email: string
  
  /** 用户版本（权限等级） */
  version: UserVersion
  
  /** 头像URL */
  avatar?: string | null
  
  /** 是否试用中 */
  isTrial?: boolean
  
  /** 试用到期时间 */
  trialEndsAt?: Date | null
}

/**
 * 权限上下文接口
 */
export interface PermissionContextType {
  /** 当前用户信息 */
  user: UserInfo | null
  
  /** 是否已登录 */
  isAuthenticated: boolean
  
  /** 检查模块权限 */
  checkModulePermission: (requiredVersion?: UserVersion) => boolean
  
  /** 检查功能权限 */
  checkFeaturePermission: (feature: string) => boolean
  
  /** 设置用户信息（登录时） */
  setUser: (user: UserInfo | null) => void
  
  /** 退出登录 */
  logout: () => void
}

/**
 * 权限等级映射（用于比较）
 */
export const VERSION_LEVEL: Record<UserVersion, number> = {
  basic: 1,
  advanced: 2,
  premium: 3,
}

/**
 * 检查权限等级是否满足要求
 */
export const checkVersionLevel = (
  userVersion: UserVersion,
  requiredVersion?: UserVersion
): boolean => {
  if (!requiredVersion) return true
  return VERSION_LEVEL[userVersion] >= VERSION_LEVEL[requiredVersion]
}




