package com.unicorn.hgzero.user.service;

import com.unicorn.hgzero.user.dto.*;

/**
 * 사용자 인증 서비스 인터페이스
 */
public interface UserService {

    /**
     * 사용자 로그인
     * LDAP 인증 수행 후 JWT 토큰 발급
     *
     * @param request 로그인 요청 정보
     * @return 로그인 응답 (Access Token, Refresh Token)
     */
    LoginResponse login(LoginRequest request);

    /**
     * Access Token 갱신
     * Refresh Token을 사용하여 새로운 Access Token 발급
     *
     * @param request Refresh Token 요청 정보
     * @return 새로운 Access Token
     */
    RefreshTokenResponse refresh(RefreshTokenRequest request);

    /**
     * 로그아웃
     * Refresh Token 삭제
     *
     * @param request 로그아웃 요청 정보
     * @param userId 사용자 ID
     */
    void logout(LogoutRequest request, String userId);

    /**
     * Access Token 검증
     * 토큰 유효성 검증 및 사용자 정보 반환
     *
     * @param token Access Token
     * @return 토큰 검증 결과
     */
    TokenValidateResponse validateToken(String token);
}
