using VoidCat.Model;
namespace VoidCat.Services.Abstractions;
///
/// User store
///
public interface IUserStore : IPublicPrivateStore
{
///
/// Get a single user
///
///
///
///
ValueTask Get(Guid id) where T : VoidUser;
///
/// Lookup a user by their email address
///
///
///
ValueTask LookupUser(string email);
///
/// List all users in the system
///
///
///
ValueTask> ListUsers(PagedRequest request);
///
/// Update a users profile
///
///
///
ValueTask UpdateProfile(PublicVoidUser newUser);
///
/// Updates the last login timestamp for the user
///
///
///
///
ValueTask UpdateLastLogin(Guid id, DateTime timestamp);
///
/// Update user account for admin
///
///
///
ValueTask AdminUpdateUser(PrivateVoidUser user);
}