package com.flightticket.service;

import com.flightticket.dto.auth.AuthenticationResponse;
import com.flightticket.dto.auth.LoginRequest;
import com.flightticket.dto.auth.MfaSetupResponse;
import com.flightticket.dto.auth.TokenResponse;

public interface AuthenticationService {
    
    /**
     * Authenticate user with username and password
     * Returns MFA required flag if user has admin role
     */
    AuthenticationResponse authenticate(LoginRequest request);
    
    /**
     * Refresh access token using refresh token
     */
    TokenResponse refreshToken(String refreshToken);
    
    /**
     * Logout user and revoke tokens
     */
    void logout(String refreshToken);
    
    /**
     * Setup MFA for a user
     * Returns QR code and secret for TOTP configuration
     */
    MfaSetupResponse setupMfa(String userId);
    
    /**
     * Verify MFA code for a user
     */
    boolean verifyMfa(String userId, String code);
    
    /**
     * Validate JWT token
     */
    boolean validateToken(String token);
}
