namespace DotBased.AspNet.Authority.Repositories; public interface IUserRepository where TUser : class { public Task GetUserByIdAsync(string id, CancellationToken? cancellationToken = null); public Task GetUserIdAsync(TUser user, CancellationToken? cancellationToken = null); public Task?, int>> GetUsersAsync(string query, int maxResults = 20, int offset = 0, CancellationToken? cancellationToken = null); public Task GetUserByEmailAsync(string email, CancellationToken? cancellationToken = null); public Task SetVersionAsync(TUser user, long version, CancellationToken? cancellationToken = null); public Task GetVersionAsync(TUser user, CancellationToken? cancellationToken = null); public Task SetSecurityVersionAsync(TUser user, long version, CancellationToken? cancellationToken = null); public Task GetSecurityVersionAsync(TUser user, CancellationToken? cancellationToken = null); public Task CreateUserAsync(TUser user, CancellationToken? cancellationToken = null); public Task UpdateUserAsync(TUser user, CancellationToken? cancellationToken = null); public Task DeleteUserAsync(TUser user, CancellationToken? cancellationToken = null); }