using SharepointToolbox.Core.Models;
namespace SharepointToolbox.Services;
///
/// Enumerates all enabled member users from a tenant via Microsoft Graph.
/// Used by Phase 13's User Directory ViewModel to populate the browse grid.
///
public interface IGraphUserDirectoryService
{
///
/// Returns all enabled member users in the tenant associated with .
/// Iterates through all pages using the Graph SDK PageIterator until exhausted or cancelled.
///
/// The client/tenant identifier used to obtain a Graph token.
///
/// When false (default), only member users are returned (userType eq 'Member').
/// When true, both members and guests are returned (no userType filter).
///
///
/// Optional progress reporter — receives the running count of users fetched so far.
/// Phase 13's ViewModel uses this to show "Loading... X users" feedback.
/// Pass null for no progress reporting.
///
/// Cancellation token. Iteration stops when cancelled.
Task> GetUsersAsync(
string clientId,
bool includeGuests = false,
IProgress? progress = null,
CancellationToken ct = default);
}