import type { StoreStatus } from '../types';

/** 登录用户信息（与后端 /auth/login、/auth/profile 返回结构对齐） */
export interface UserInfo {
  id: number;
  username: string;
  name?: string;
  roles?: string[];
  permissions?: string[];
  [key: string]: unknown;
}

export interface UserState {
  token: string | null;
  user: UserInfo | null;
}

export interface UserActions {
  /** 登录成功后写入完整会话 */
  setSession: (token: string, user: UserInfo) => void;
  /** 整体替换用户信息 */
  setUser: (user: UserInfo | null) => void;
  /** 局部更新用户信息（如 profile 校验返回的最新数据） */
  updateUser: (patch: Partial<UserInfo>) => void;
  /** 退出登录：清空会话 */
  logout: () => void;
}

export type UserStore = UserState & UserActions;

/** 持久化子集 */
export interface UserPersistedState {
  token: string | null;
  user: UserInfo | null;
}

/** 兼容：用户状态中的权限由 permission Store 统一管理 */
export type { StoreStatus };
