/*
 * This file is part of PV-StarAPI for Bukkit, licensed under the MIT License (MIT).
 *
 * Copyright (c) JCThePants (www.jcwhatever.com)
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 */


package com.jcwhatever.pvs.api.stats;

import com.jcwhatever.pvs.api.stats.StatTracking.StatTrackType;

import java.util.Set;
import java.util.UUID;

/**
 * Represents that statistics recorded for an arena.
 */
public interface IArenaStats {

    /**
     * The ID of the arena the statistics are from.
     */
    UUID getArenaId();

    /**
     * Get a statistics value.
     *
     * @param type          The statistic type.
     * @param playerId      The ID of the player.
     * @param trackingType  The tracking type.
     */
    double getValue(StatType type, UUID playerId, StatTrackType trackingType);

    /**
     * Get a statistics value.
     *
     * @param type          The statistic type.
     * @param playerId      The ID of the player as a {@link java.lang.String}.
     * @param trackingType  The tracking type.
     */
    double getValue(StatType type, String playerId, StatTrackType trackingType);

    /**
     * Adds a player score to the arena statistics. A score is an amount compiled during the
     * running of an arena and whose final result is added here once the arena ends.
     *
     * @param type      The statistic type.
     * @param playerId  The ID of the player.
     * @param amount    The players score in the statistic type.
     *
     * @return  The new total statistic value.
     */
    double addScore(StatType type, UUID playerId, double amount);

    /**
     * Get the IDs of all players with a statistic type recorded in the arena as a
     * {@link java.util.Set} of {@link java.lang.String}.
     *
     * @param type  The statistic type.
     */
    Set<String> getRawPlayerIds(StatType type);
}

@@ -1335,19 +1335,26 @@
 va.util.
-Set
+Collection
 ;%0Aimport
@@ -2835,19 +2835,408 @@
     
-Set
+Collection%3CString%3E getRawPlayerIds(StatType type);%0A%0A    /**%0A     * Get the IDs of all players with a statistic type recorded in the arena as a%0A     * %7B@link java.util.Set%7D of %7B@link java.lang.String%7D.%0A     *%0A     * @param type    The statistic type.%0A     * @param output  The output collection to add results to.%0A     *%0A     * @return  The output collection.%0A     */%0A    %3CT extends Collection
 %3CString%3E
  get
@@ -3223,32 +3223,35 @@
 llection%3CString%3E
+%3E
+ T
  getRawPlayerIds
@@ -3264,13 +3264,23 @@
 ype type
+, T output
 );%0A%7D%0A

add collection output overloads