package player.playeragent;

import utils.DerivativesFinder;
import utils.PriceReducer;
import utils.comparator.DerivativeComparatorByType;
import edu.neu.ccs.demeterf.TUCombiner;
import edu.neu.ccs.demeterf.demfgen.lib.Empty;
import edu.neu.ccs.demeterf.demfgen.lib.List;
import gen.Derivative;
import gen.Player;

/** Class for reoffering a list of derivatives
 * @author animesh
 *
 */
public class ReofferAgent {

	/** Returns a list of reoffered derivatives
	 * @param derivatives
	 * @param player
	 * @param minDec
	 * @return {@link List}
	 */
	public static List<Derivative> reofferAll(List<Derivative> derivatives, Player player, double minDec) {
		//find all unique derivatives and keep its lowest price
		List<Derivative> uniqueDers = DerivativesFinder.findUniqueDerivatives(derivatives);
		return TUCombiner.traverse(uniqueDers, new PriceReducer(player, minDec));		
	}
}