using UniVerse.Application.DTOs.Achievements; using UniVerse.Application.DTOs.Common; using UniVerse.Application.DTOs.Gamification; using UniVerse.Domain.Enums; namespace UniVerse.Application.Interfaces; public interface IGamificationService { Task AwardCoinsAsync(int userId, int amount, CoinTransactionType type, int? reviewId = null, int? achievementId = null, string? description = null); Task CheckAndAwardAchievementsAsync(int userId); Task CalculateLevelAsync(int xp); Task GetLevelProgressAsync(int xp); Task> GetUserAchievementsAsync(int userId); Task> GetTransactionsAsync(int userId, PaginationRequest pagination); }