using RestEase;
using Skuld.Core.Models;
using Skuld.Models;
using System;
using System.IO;
using System.Threading.Tasks;
namespace Skuld.API.Client;
public interface ISkuldAPIClient : IDisposable
{
#region Guild
///
/// Get a guild
///
/// Guild Id
/// wrapped
[Get("/guild/{id}")]
public Task GetGuildAsync([Path] ulong id);
#endregion Guild
#region User
///
/// Get a user
///
/// User Id
/// wrapped
[Get("/user/{id}")]
public Task GetUserAsync([Path] ulong id);
#endregion User
#region Experience
///
/// Gets the experience leaderboard
///
/// Guild Id, Accepts 0 for all
/// %10 offset page
/// wrapped
[Get("/experience/{guildId}/{page}")]
public Task GetExperienceLeaderboardAsync([Path] ulong guildId, [Path] int page = 0);
#endregion Experience
#region Money
///
/// Gets the money leaderboard
///
/// Guild Id, Accepts 0 for all
/// %10 offset page
/// wrapped
[Get("/money/{guildId}/{page}")]
public Task GetMoneyLeaderboardAsync([Path] ulong guildId, [Path] int page = 0);
#endregion Money
#region Profile
///
/// Get a user's profile card
///
/// User Id
/// of profile card data
[Get("/image/profile/{id}")]
public Task GetProfileCardAsync([Path] ulong id);
///
/// Get a user's profile card with guild attributes
///
/// User Id
/// Guild Id
/// of profile card data
[Get("/image/profile/{id}/{guildId}")]
public Task GetProfileCardAsync([Path] ulong id, [Path] ulong guildId);
///
/// Preview's a custom background image
///
/// User Id
/// Background to preview
/// of profile card data
[Get("/image/profile/{id}/example")]
public Task GetExampleProfileCardAsync([Path] ulong id, [Query("previewBackground")] string previewBackground);
#endregion Profile
#region Rank
///
/// Get a user's rank card
///
/// User Id
/// Guild Id
/// of profile card data
[Get("/image/rank/{id}/{guildId}")]
public Task GetRankCardAsync([Path] ulong id, [Path] ulong guildId);
#endregion Rank
#region Leave/Join Card
///
/// Get's the join card for a guild
///
/// User Id
/// Guild Id
/// of join card
[Get("/image/join/{id}/{guildId}")]
public Task GetJoinCardAsync([Path] ulong id, [Path] ulong guildId);
///
/// Get's the leave card for a guild
///
/// User Id
/// Guild Id
/// of leave card
[Get("/image/leave/{id}/{guildId}")]
public Task GetLeaveCardAsync([Path] ulong id, [Path] ulong guildId);
#endregion Leave/Join Card
[Get("/image/magik")]
public Task GetLiquidRescaledAsync([Query] string image);
}