// Path: src/main/java/com/devotedmc/ExilePearl/config/Configurable.java
// public interface Configurable {
// 
// 	/**
// 	 * Loads configuration data
// 	 * @param config The config
// 	 */
// 	public void loadConfig(PearlConfig config);
// }
// 
// Path: src/main/java/com/devotedmc/ExilePearl/util/ExilePearlRunnable.java
// public interface ExilePearlRunnable extends Runnable, Configurable {
// 
// 	/**
// 	 * Start the pearl worker
// 	 */
// 	void start();
// 
// 	/**
// 	 * Stop the pearl worker
// 	 */
// 	void stop();
// 
// 	/**
// 	 * Restart the pearl worker
// 	 */
// 	void restart();
// 
// 	/**
// 	 * Gets whether the task is running
// 	 * @return true if the task is running
// 	 */
// 	boolean isRunning();
// 
// 	/**
// 	 * Gets the task name
// 	 * @return The task name
// 	 */
// 	String getTaskName();
// }


import java.util.List;
import java.util.UUID;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import com.devotedmc.ExilePearl.config.Configurable;
import com.devotedmc.ExilePearl.util.ExilePearlRunnable;
package com.devotedmc.ExilePearl;




public interface DamageLogger extends Configurable, Listener, ExilePearlRunnable {

	/**
	 * Records damage that a player deals to another player
	 * @param playerId The player ID being harmed
	 * @param damager The damage dealer
	 * @param amount The damage amount
	 */
	void recordDamage(UUID playerId, Player damager, double amount); 

	/**
	 * Records damage that a player deals to another player
	 * @param player The player being harmed
	 * @param damager The damage dealer
	 * @param amount The damage amount
	 */
	void recordDamage(Player player, Player damager, double amount); 

	/**
	 * Gets a sorted list of damaging players.
	 * 
	 * The player at the front of the collection is the one that should be 
	 * awarded the pearl according to the configured algorithm.
	 *  
	 * @param playerId The player ID being harmed
	 * @return The damaging players
	 */
// Path: src/main/java/com/devotedmc/ExilePearl/config/Configurable.java
// public interface Configurable {
// 
// 	/**
// 	 * Loads configuration data
// 	 * @param config The config
// 	 */
// 	public void loadConfig(PearlConfig config);
// }
// 
// Path: src/main/java/com/devotedmc/ExilePearl/util/ExilePearlRunnable.java
// public interface ExilePearlRunnable extends Runnable, Configurable {
// 
// 	/**
// 	 * Start the pearl worker
// 	 */
// 	void start();
// 
// 	/**
// 	 * Stop the pearl worker
// 	 */
// 	void stop();
// 
// 	/**
// 	 * Restart the pearl worker
// 	 */
// 	void restart();
// 
// 	/**
// 	 * Gets whether the task is running
// 	 * @return true if the task is running
// 	 */
// 	boolean isRunning();
// 
// 	/**
// 	 * Gets the task name
// 	 * @return The task name
// 	 */
// 	String getTaskName();
// }


// Path: src/main/java/com/devotedmc/ExilePearl/DamageLogger.java
import java.util.List;
import java.util.UUID;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import com.devotedmc.ExilePearl.config.Configurable;
import com.devotedmc.ExilePearl.util.ExilePearlRunnable;

package com.devotedmc.ExilePearl;




public interface DamageLogger extends Configurable, Listener, ExilePearlRunnable {

	/**
	 * Records damage that a player deals to another player
	 * @param playerId The player ID being harmed
	 * @param damager The damage dealer
	 * @param amount The damage amount
	 */
	void recordDamage(UUID playerId, Player damager, double amount); 

	/**
	 * Records damage that a player deals to another player
	 * @param player The player being harmed
	 * @param damager The damage dealer
	 * @param amount The damage amount
	 */
	void recordDamage(Player player, Player damager, double amount); 

	/**
	 * Gets a sorted list of damaging players.
	 * 
	 * The player at the front of the collection is the one that should be 
	 * awarded the pearl according to the configured algorithm.
	 *  
	 * @param playerId The player ID being harmed
	 * @return The damaging players
	 */
	List<Player> getSortedDamagers(UUID playerId);