package com.jaquadro.minecraft.storagedrawers.api.storage;

/**
 * Represents a drawer with items that are a fractional component of another item within the drawer group.  Compacting
 * Drawers are a primary example of this drawer type.
 */
public interface IFractionalDrawer extends IDrawer {
    /**
     * Gets the storage ratio between the held item and the most compressed item within the drawer group.
     * <p>
     * For example, most ingots have a conversion rate of 9 compared to metal blocks, and nuggets a rate of 81.
     * Actual conversion rates are implementation-defined.
     */
    int getConversionRate();

    /**
     * Gets the number of items left in the drawer if the maximum number of equivalent compressed items had been removed.
     * The equivalency is determined by the next compression tier, and not necessarily the conversion rate.
     */
    int getStoredItemRemainder();

    /**
     * Gets whether or not the stored item represents the smallest granularity of material that can be stored within
     * the drawer group.
     */
    boolean isSmallestUnit();
}
