package ic2.api.recipe;

import java.util.List;

import net.minecraft.item.ItemStack;

public interface IRecipeInput {

    /**
     * Check if subject matches this recipe input, ignoring the amount.
     *
     * @param subject ItemStack to check
     * @return true if it matches the requirement
     */
    boolean matches(ItemStack subject);

    /**
     * Determine the minimum input stack size.
     *
     * @return input amount required
     */
    int getAmount();

    /**
     * List all possible inputs (best effort).
     *
     * The stack size is undefined, use getAmount to get the correct one.
     *
     * @return list of inputs, may be incomplete
     */
    List<ItemStack> getInputs();
}
