"use client";

/**
 * IUserRepository 接口
 */

import type { Result } from "@/utils";
import type {
  CreditsData,
  CreditsHistoryData,
  UpdateProfileRequest,
  User,
  UserEntitlements,
  UserStatsResponse,
} from "@/data/dto/user";

export interface IUserRepository {
  /** 获取用户统计信息。 */
  getUserStats(): Promise<Result<UserStatsResponse>>;

  /** 获取当前登录用户信息。 */
  getCurrentUser(): Promise<Result<User>>;

  /** 更新个人资料。 */
  updateProfile(request: UpdateProfileRequest): Promise<Result<User>>;

  /** 查询积分余额。 */
  getCredits(): Promise<Result<CreditsData>>;

  /** 查询积分操作历史，分页参数默认 limit=50, offset=0。 */
  getCreditsHistory(
    limit?: number,
    offset?: number,
  ): Promise<Result<CreditsHistoryData>>;

  /** 获取当前用户权益快照。 */
  getEntitlements(): Promise<Result<UserEntitlements>>;
}
