import 'package:krow_domain/krow_domain.dart';
import '../ui_entities/auth_mode.dart';

/// Interface for authentication repository.
abstract interface class AuthRepositoryInterface {
  Stream<User?> get currentUser;

  /// Signs in with a phone number and returns a verification ID.
  Future<String?> signInWithPhone({required String phoneNumber});

  /// Verifies the OTP code and returns the authenticated user.
  Future<User?> verifyOtp({
    required String verificationId,
    required String smsCode,
    required AuthMode mode,
  });

  /// Signs out the current user.
  Future<void> signOut();
  // Future<Staff?> getStaffProfile(String userId); // Could be moved to a separate repository if needed, but useful here for routing logic.
}
