using System.Threading;
using System.Threading.Tasks;
namespace SpotifyAPI.Web
{
///
/// Endpoints for retrieving information about a user’s profile.
///
/// https://developer.spotify.com/documentation/web-api/reference-beta/#category-user-profile
public interface IUserProfileClient
{
///
/// Get detailed profile information about the current user (including the current user’s username).
///
/// The cancellation-token to allow to cancel the request.
///
/// https://developer.spotify.com/documentation/web-api/reference-beta/#endpoint-get-current-users-profile
///
/// Thrown if the client is not authenticated.
Task Current(CancellationToken cancel = default);
///
/// Get public profile information about a Spotify user.
///
/// The user id.
/// The cancellation-token to allow to cancel the request.
/// https://developer.spotify.com/documentation/web-api/reference-beta/#endpoint-get-users-profile
/// Thrown if the client is not authenticated.
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1716")]
Task Get(string userId, CancellationToken cancel = default);
///
/// Get Top tracks for the current user
///
/// The query params to send to get Top Artists
/// The cancellation-token to allow to cancel the request.
/// https://developer.spotify.com/documentation/web-api/reference/get-users-top-artists-and-tracks
/// Thrown if the client is not authenticated.
Task GetTopTracks(UsersTopItemsRequest request, CancellationToken cancel = default);
///
/// Get Top arsists for the current user
///
/// The query params to send to get Top Artists
/// The cancellation-token to allow to cancel the request.
/// https://developer.spotify.com/documentation/web-api/reference/get-users-top-artists-and-tracks
/// Thrown if the client is not authenticated.
Task GetTopArtists(UsersTopItemsRequest request, CancellationToken cancel = default);
}
}