package com.lesingle.edu.service;

import com.lesingle.edu.dto.request.LoginRequest;
import com.lesingle.edu.dto.request.UpdateProfileRequest;
import com.lesingle.edu.dto.response.LoginResponse;
import com.lesingle.edu.dto.response.TokenResponse;
import com.lesingle.edu.dto.response.UpdateProfileResponse;

/**
 * Auth Service Interface
 */
public interface AuthService {

    LoginResponse login(LoginRequest request);

    /**
     * 获取当前用户信息
     * @return 返回 Entity 对象（AdminUser/Tenant/Teacher/Parent）
     */
    Object getCurrentUserInfo();

    /**
     * 修改密码
     * @param oldPassword 旧密码
     * @param newPassword 新密码
     */
    void changePassword(String oldPassword, String newPassword);

    /**
     * 修改密码（带 token 失效）
     * @param oldPassword 旧密码
     * @param newPassword 新密码
     * @param currentToken 当前 token（用于加入黑名单）
     */
    void changePassword(String oldPassword, String newPassword, String currentToken);

    void logout();

    TokenResponse refreshToken();

    /**
     * 修改个人信息
     * @param request 修改请求
     * @return 更新后的用户信息和新 token
     */
    UpdateProfileResponse updateProfile(UpdateProfileRequest request);

}
