using VoidCat.Database; namespace VoidCat.Services.Abstractions; /// /// OAuth2 code grant provider /// public interface IOAuthProvider { /// /// Id of this provider /// string Id { get; } /// /// Generate authorization code grant uri /// /// Uri Authorize(); /// /// Get access token from auth code /// /// /// ValueTask GetToken(string code); /// /// Get a user object which represents this external account authorization /// /// /// ValueTask GetUserDetails(UserAuthToken token); }