import '../../../../core/errors/result.dart';
import '../entities/user_entity.dart';

abstract class AuthRepository {
  Future<Result<UserEntity>> register({
    required String email,
    required String password,
    required String name,
  });

  Future<Result<UserEntity>> login({
    required String email,
    required String password,
  });

  Future<Result<void>> logout();

  Future<Result<UserEntity>> getCurrentUser();

  Future<Result<void>> refreshToken();

  Future<bool> isAuthenticated();

  Stream<bool> get authStateChanges;
}
