// Path: Common/src/main/java/de/maxikg/osuapi/model/GameMode.java
// @RequiredArgsConstructor
// public enum GameMode implements Valuable<Integer> {
// 
//     /**
//      * It represents the default osu! game mode. See: https://osu.ppy.sh/wiki/Standard
//      */
//     STANDARD(0),
// 
//     /**
//      * It represents the game mode on which you must hit the drum. See: https://osu.ppy.sh/wiki/Taiko
//      */
//     TAIKO(1),
// 
//     /**
//      * It represents the game mode on which you must catch the falling fruits. See:
//      * https://osu.ppy.sh/wiki/Catch_The_Beat
//      */
//     CTB(2),
// 
//     /**
//      * It represents the game mode on which you must hit the right beat note in the right moment. See:
//      * https://osu.ppy.sh/wiki/Osu!mania
//      */
//     OSU_MANIA(3);
// 
//     @NonNull
//     private final Integer value;
// 
//     /**
//      * {@inheritDoc}
//      */
//     @JsonValue
//     public Integer getValue() {
//         return value;
//     }
// 
//     /**
//      * Returns the {@code GameMode} by it's number value.
//      *
//      * @param value The value.
//      * @return An {@link Optional}. Absent if an unknown value was given.
//      */
//     @JsonCreator
//     public static Optional<GameMode> byValue(int value) {
//         return ValuableUtils.getByValue(GameMode.class, value);
//     }
// }
// 
// Path: Common/src/main/java/de/maxikg/osuapi/model/UserGame.java
// @Data
// public class UserGame {
// 
//     @JsonProperty("beatmap_id")
//     private int beatmapId;
// 
//     @JsonProperty("score")
//     private int score;
// 
//     @JsonProperty("maxcombo")
//     private int maxCombo;
// 
//     @JsonProperty("count300")
//     private int count300;
// 
//     @JsonProperty("count100")
//     private int count100;
// 
//     @JsonProperty("count50")
//     private int count50;
// 
//     @JsonProperty("countmiss")
//     private int countMiss;
// 
//     @JsonProperty("countkatu")
//     private int countKatu;
// 
//     @JsonProperty("countgeki")
//     private int countGeki;
// 
//     @JsonProperty("perfect")
//     @JsonSerialize(using = OsuBooleanSerializer.class)
//     @JsonDeserialize(using = OsuBooleanDeserializer.class)
//     private boolean perfect;
// 
//     @JsonProperty("enabled_mods")
//     @JsonSerialize(using = OsuModSerializer.class)
//     @JsonDeserialize(using = OsuModDeserializer.class)
//     private Set<Mod> enabledMods;
// 
//     @JsonProperty("user_id")
//     private int userId;
// 
//     @JsonProperty("date")
//     @JsonSerialize(using = OsuDateSerializer.class)
//     @JsonDeserialize(using = OsuDateDeserializer.class)
//     private Date date;
// 
//     @JsonProperty("rank")
//     private String rank;
// }


import de.maxikg.osuapi.model.GameMode;
import de.maxikg.osuapi.model.UserGame;
import java.util.Collection;
package de.maxikg.osuapi.client.request.builder;



/**
 * @author maxikg
 */
public interface GetUserRecentRequestBuilder extends RequestBuilder<Collection<UserGame>> {

    GetUserRecentRequestBuilder mode(GameMode mode);

    GetUserRecentRequestBuilder unsetMode();

    GetUserRecentRequestBuilder limit(int limit);

// Path: Common/src/main/java/de/maxikg/osuapi/model/GameMode.java
// @RequiredArgsConstructor
// public enum GameMode implements Valuable<Integer> {
// 
//     /**
//      * It represents the default osu! game mode. See: https://osu.ppy.sh/wiki/Standard
//      */
//     STANDARD(0),
// 
//     /**
//      * It represents the game mode on which you must hit the drum. See: https://osu.ppy.sh/wiki/Taiko
//      */
//     TAIKO(1),
// 
//     /**
//      * It represents the game mode on which you must catch the falling fruits. See:
//      * https://osu.ppy.sh/wiki/Catch_The_Beat
//      */
//     CTB(2),
// 
//     /**
//      * It represents the game mode on which you must hit the right beat note in the right moment. See:
//      * https://osu.ppy.sh/wiki/Osu!mania
//      */
//     OSU_MANIA(3);
// 
//     @NonNull
//     private final Integer value;
// 
//     /**
//      * {@inheritDoc}
//      */
//     @JsonValue
//     public Integer getValue() {
//         return value;
//     }
// 
//     /**
//      * Returns the {@code GameMode} by it's number value.
//      *
//      * @param value The value.
//      * @return An {@link Optional}. Absent if an unknown value was given.
//      */
//     @JsonCreator
//     public static Optional<GameMode> byValue(int value) {
//         return ValuableUtils.getByValue(GameMode.class, value);
//     }
// }
// 
// Path: Common/src/main/java/de/maxikg/osuapi/model/UserGame.java
// @Data
// public class UserGame {
// 
//     @JsonProperty("beatmap_id")
//     private int beatmapId;
// 
//     @JsonProperty("score")
//     private int score;
// 
//     @JsonProperty("maxcombo")
//     private int maxCombo;
// 
//     @JsonProperty("count300")
//     private int count300;
// 
//     @JsonProperty("count100")
//     private int count100;
// 
//     @JsonProperty("count50")
//     private int count50;
// 
//     @JsonProperty("countmiss")
//     private int countMiss;
// 
//     @JsonProperty("countkatu")
//     private int countKatu;
// 
//     @JsonProperty("countgeki")
//     private int countGeki;
// 
//     @JsonProperty("perfect")
//     @JsonSerialize(using = OsuBooleanSerializer.class)
//     @JsonDeserialize(using = OsuBooleanDeserializer.class)
//     private boolean perfect;
// 
//     @JsonProperty("enabled_mods")
//     @JsonSerialize(using = OsuModSerializer.class)
//     @JsonDeserialize(using = OsuModDeserializer.class)
//     private Set<Mod> enabledMods;
// 
//     @JsonProperty("user_id")
//     private int userId;
// 
//     @JsonProperty("date")
//     @JsonSerialize(using = OsuDateSerializer.class)
//     @JsonDeserialize(using = OsuDateDeserializer.class)
//     private Date date;
// 
//     @JsonProperty("rank")
//     private String rank;
// }


// Path: Client/src/main/java/de/maxikg/osuapi/client/request/builder/GetUserRecentRequestBuilder.java
import de.maxikg.osuapi.model.GameMode;
import de.maxikg.osuapi.model.UserGame;
import java.util.Collection;

package de.maxikg.osuapi.client.request.builder;



/**
 * @author maxikg
 */
public interface GetUserRecentRequestBuilder extends RequestBuilder<Collection<UserGame>> {

    GetUserRecentRequestBuilder mode(GameMode mode);

    GetUserRecentRequestBuilder unsetMode();

    GetUserRecentRequestBuilder limit(int limit);

    GetUserRecentRequestBuilder unsetLimit();