using QRRapidoApp.Models; using QRRapidoApp.Models.ViewModels; namespace QRRapidoApp.Services { public interface IUserService { Task GetUserAsync(string userId); Task GetUserByEmailAsync(string email); Task GetUserByProviderAsync(string provider, string providerId); Task CreateUserAsync(string email, string name, string provider, string providerId); Task UpdateLastLoginAsync(string userId); Task UpdateUserAsync(User user); Task GetDailyQRCountAsync(string? userId); Task DecrementDailyQRCountAsync(string userId); Task CanGenerateQRAsync(string? userId, bool isPremium); Task SaveQRToHistoryAsync(string? userId, QRGenerationResult qrResult); Task> GetUserQRHistoryAsync(string userId, int limit = 50); Task GetQRDataAsync(string qrId); Task GetQRCountThisMonthAsync(string userId); Task GetUserEmailAsync(string userId); Task MarkPremiumCancelledAsync(string userId, DateTime cancelledAt); Task> GetUsersForHistoryCleanupAsync(DateTime cutoffDate); Task DeleteUserHistoryAsync(string userId); } }