namespace SVSim.Database.Repositories.Viewer; public interface IPuzzleClearRepository { /// Returns the set of puzzle_ids this viewer has cleared. Task> GetClearedPuzzleIds(long viewerId); /// Returns cleared puzzle_ids grouped by their PuzzleEntry.GroupId. Only groups /// with at least one clear appear in the dictionary. Task>> GetClearedPuzzleIdsByGroup(long viewerId); /// Inserts or updates the (viewer, puzzle) clear row. BestRetryCount keeps the /// minimum retry_count across all wins. Task UpsertClearAsync(long viewerId, int puzzleId, int retryCount); }