namespace GmRelay.Web.Services.Portfolio; public interface IPortfolioStore { Task> GetPublicPortfolioGamesForMasterAsync(string masterSlug); Task> GetPublicPortfolioGamesForClubAsync(string clubSlug); Task GetPublicPortfolioGameBySlugAsync(string slug); Task> GetPortfolioGamesForGroupAsync(Guid groupId); Task GetPortfolioGameGroupIdAsync(Guid portfolioGameId); Task GetPortfolioGameForManagementAsync(Guid portfolioGameId); Task> GetEligibleCompletedSessionsAsync(Guid groupId, Guid? portfolioGameId); Task> GetPortfolioMasterOptionsAsync(Guid groupId, Guid? portfolioGameId); Task CreatePortfolioDraftAsync(Guid groupId, Guid? preselectedSessionId); Task UpdatePortfolioDraftAsync(Guid portfolioGameId, Guid groupId, PortfolioGameUpdate update); Task SetPortfolioCoverAsync(Guid portfolioGameId, Guid groupId, string storageKey); Task DeletePortfolioGameAsync(Guid portfolioGameId, Guid groupId); Task SetPortfolioPublicationAsync(Guid portfolioGameId, Guid groupId, bool isPublic); Task ModeratePortfolioReviewAsync(Guid reviewId, Guid portfolioGameId, Guid groupId, Guid moderatorPlayerId, string moderationStatus); Task GetReviewSubmissionStateAsync(string slug, string platform, string externalUserId); Task SubmitPortfolioReviewAsync(string slug, string platform, string externalUserId, string displayName, string body); }