import { ErrorTypeEnum } from '/@/enums/exceptionEnum';
import { MenuModeEnum, MenuTypeEnum } from '/@/enums/menuEnum';
import { PlainRoleInfo } from '/@/api/sys/model/userModel';

// Lock screen information
export interface LockInfo {
  // Password required
  pwd?: string | undefined;
  // Is it locked?
  isLock?: boolean;
}

// Error-log information
export interface ErrorLogInfo {
  // Type of error
  type: ErrorTypeEnum;
  // Error file
  file: string;
  // Error name
  name?: string;
  // Error message
  message: string;
  // Error stack
  stack?: string;
  // Error detail
  detail: string;
  // Error url
  url: string;
  // Error time
  time?: string;
}

export interface UserInfo {
  userId?: string | number;
  username?: string;
  realName?: string;
  avatar?: string;
  homePath?: string;
  tenantCode?: string;
  tenantName?: string;
  roles?: string[];
  plainRoles?: PlainRoleInfo[];
  phoneNumber?: string;
  email?: string;
}

export interface BeforeMiniState {
  menuCollapsed?: boolean;
  menuSplit?: boolean;
  menuMode?: MenuModeEnum;
  menuType?: MenuTypeEnum;
}

export interface UserUpdateInfo {
  activateToken?: string;
  avatar?: string;
  createTime?: string;
  creator?: string;
  email?: string;
  enabled?: true;
  hasPassword?: false;
  id?: string;
  level?: 2;
  password?: string;
  phoneNumber?: string;
  realName?: string;
  tenantId?: string;
  updateTime?: string;
  updater?: string;
  username?: string;
}
