using GameList.Domain; namespace GameList.Contracts; public record SuggestionCreatedResponse(int Id); public record SuggestionUpdatedResponse(int Id, string Name, string? Genre, string? Description, string? ScreenshotUrl, string? YoutubeUrl, string? GameUrl, int? MinPlayers, int? MaxPlayers); public record VoteUpsertResponse(IReadOnlyList SuggestionIds, int Score); public record VoteFinalizeResponse(bool VotesFinal); public record AdminResultsStateResponse(bool ResultsOpen, DateTimeOffset UpdatedAt); public record AdminGrantJokerResponse(Guid Id, bool HasJoker); public record AdminSetPlayerPhaseResponse(Guid PlayerId, Phase CurrentPhase, bool VotesFinal); public record AdminSetPlayerAdminResponse(Guid PlayerId, bool IsAdmin); public record AdminDeletePlayerResponse(Guid DeletedPlayerId); public record AdminLinkSuggestionsResponse(int RootId, IReadOnlyList LinkedSuggestionIds, int UnfinalizedPlayers); public record AdminUnlinkSuggestionsResponse(IReadOnlyList UnlinkedSuggestionIds, int UnfinalizedPlayers); public record AdminResetStateResponse(Phase Phase, bool ResultsOpen, DateTimeOffset UpdatedAt); public record VoteStatusResponse(IReadOnlyList Voters, bool Ready, IReadOnlyList Waiting); public record ResultItemDto(int Id, string Name, string? Author, int? MinPlayers, int? MaxPlayers, int Total, int Count, double Average, IReadOnlyList Votes, IReadOnlyList VoterNames, int? MyVote, string? ScreenshotUrl, string? YoutubeUrl, string? GameUrl, string? Description, string? Genre, int? ParentSuggestionId, IReadOnlyList LinkedIds, IReadOnlyList LinkedTitles); public record AuthSessionResponse(Guid Id, string Username, string? DisplayName, bool IsAdmin); public record AuthOptionsResponse(bool OwnerExists); public record StateSummaryResponse(Guid Id, string Username, string? DisplayName, bool IsAdmin, bool IsOwner, Phase CurrentPhase, bool VotesFinal, bool HasJoker, bool ResultsOpen, DateTimeOffset UpdatedAt, int Players, int Suggestions, int Votes); public record MeResponse(Guid Id, string Username, string? DisplayName, bool IsAdmin, bool IsOwner, Phase CurrentPhase, bool VotesFinal, bool HasJoker); public record PhaseTransitionResponse(Phase CurrentPhase, bool ResultsOpen);