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);
}