/**
 * User Type Definitions
 * Core user-related types for authentication and user management
 */

export interface User {
  id: string;
  name: string;
  email: string;
  avatar?: string;
  role: string;
  department: string;
  phone?: string;
  level?: number;
  permissions?: string[];
  lastLogin?: string;
  createdAt?: string;
  updatedAt?: string;
}

export interface UserProfile extends User {
  bio?: string;
  preferences?: UserPreferences;
  notifications?: NotificationSettings;
}

export interface UserPreferences {
  theme?: 'light' | 'dark' | 'system';
  language?: string;
  timezone?: string;
  emailNotifications?: boolean;
  pushNotifications?: boolean;
}

export interface NotificationSettings {
  approvalReminders?: boolean;
  requestUpdates?: boolean;
  slaAlerts?: boolean;
  comments?: boolean;
  mentions?: boolean;
}

export interface AuthUser extends User {
  token: string;
  refreshToken?: string;
  expiresAt?: string;
}

