import 'package:krow_domain/krow_domain.dart';

/// Repository interface for staff profile operations.
///
/// Defines the contract for accessing and managing staff profile data.
/// This interface lives in the domain layer and is implemented by the data layer.
///
/// Following Clean Architecture principles, this interface:
/// - Returns domain entities (Staff from shared domain package)
/// - Defines business requirements without implementation details
/// - Allows the domain layer to be independent of data sources
abstract interface class ProfileRepositoryInterface {
  /// Fetches the staff profile for the current authenticated user.
  ///
  /// Returns a [Staff] entity from the shared domain package containing
  /// all profile information.
  ///
  /// Throws an exception if the profile cannot be retrieved.
  Future<Staff> getStaffProfile();
  
  /// Signs out the current user.
  ///
  /// Clears the user's session and authentication state.
  /// Should be followed by navigation to the authentication flow.
  Future<void> signOut();
}
