import '../entities/auth_user.dart';

/// Repository interface for authentication operations.
abstract class AuthRepository {
  /// Logs in with email and password.
  /// Returns the authenticated user on success.
  Future<AuthUserEntity> login({
    required String email,
    required String password,
  });

  /// Logs out the current user, clearing stored tokens.
  Future<void> logout();

  /// Refreshes the access token using the stored refresh token.
  /// Returns true if the refresh was successful.
  Future<bool> refreshToken();

  /// Retrieves the currently authenticated user profile.
  Future<AuthUserEntity?> getCurrentUser();

  /// Checks if a valid access token exists.
  Future<bool> isAuthenticated();
}
