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);
}