namespace RR3CommunityServer.Services;

// Session Service
public interface ISessionService
{
    Task<string> CreateSession(string? synergyId = null);
    Task<bool> ValidateSession(string sessionId);
    Task<string?> GetSynergyIdFromSession(string sessionId);
}

// User Service
public interface IUserService
{
    Task<string> GetOrCreateDeviceId(string? existingDeviceId, string hardwareId);
    Task<string> ValidateDeviceId(string deviceId);
    Task<string> GetOrCreateAnonUid();
    Task<string> GetOrCreateSynergyId(string deviceId);
}

// Catalog Service
public interface ICatalogService
{
    Task<List<Models.CatalogItem>> GetAvailableItems();
    Task<List<Models.CatalogCategory>> GetCategories();
    Task<string> GetDownloadUrl(string itemId);
}

// DRM Service
public interface IDrmService
{
    Task<string> GenerateNonce();
    Task<List<Models.PurchasedItem>> GetPurchasedItems(string synergyId);
    Task<bool> VerifyAndRecordPurchase(string synergyId, Models.PurchaseVerificationRequest request);
}
