package crazypants.enderio.conduit.item;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
import net.minecraftforge.common.util.ForgeDirection;
import cofh.api.transport.IItemDuct;
import com.enderio.core.common.util.DyeColor;
import crazypants.enderio.conduit.IConduit;
import crazypants.enderio.conduit.IExtractor;
import crazypants.enderio.conduit.item.filter.IItemFilter;
public interface IItemConduit extends IConduit, IItemDuct, IExtractor {
IIcon getTextureForInputMode();
IIcon getTextureForOutputMode();
IIcon getTextureForInOutMode(boolean inputComponent);
IIcon getTextureForInOutBackground();
IIcon getEnderIcon();
IInventory getExternalInventory(ForgeDirection direction);
int getMaximumExtracted(ForgeDirection direction);
float getTickTimePerItem(ForgeDirection direction);
void itemsExtracted(int numInserted, int slot);
void setInputFilterUpgrade(ForgeDirection dir, ItemStack stack);
void setOutputFilterUpgrade(ForgeDirection dir, ItemStack stack);
ItemStack getInputFilterUpgrade(ForgeDirection dir);
ItemStack getOutputFilterUpgrade(ForgeDirection dir);
void setInputFilter(ForgeDirection dir, IItemFilter filter);
void setOutputFilter(ForgeDirection dir, IItemFilter filter);
IItemFilter getInputFilter(ForgeDirection dir);
IItemFilter getOutputFilter(ForgeDirection dir);
void setSpeedUpgrade(ForgeDirection dir, ItemStack upgrade);
ItemStack getSpeedUpgrade(ForgeDirection dir);
void setFunctionUpgrade(ForgeDirection dir, ItemStack upgrade);
ItemStack getFunctionUpgrade(ForgeDirection dir);
boolean hasInventoryPanelUpgrade(ForgeDirection dir);
int getOutputPriority(ForgeDirection dir);
void setOutputPriority(ForgeDirection dir, int priority);
int getMetaData();
boolean isExtractionRedstoneConditionMet(ForgeDirection dir);
boolean isSelfFeedEnabled(ForgeDirection dir);
void setSelfFeedEnabled(ForgeDirection dir, boolean enabled);
boolean isRoundRobinEnabled(ForgeDirection dir);
void setRoundRobinEnabled(ForgeDirection dir, boolean enabled);
DyeColor getInputColor(ForgeDirection dir);
DyeColor getOutputColor(ForgeDirection dir);
void setInputColor(ForgeDirection dir, DyeColor col);
void setOutputColor(ForgeDirection dir, DyeColor col);
}