interface IAlchemist {
event PotionAdded(address indexed potionAddress, address[] requiredResources, uint32[] requiredQuantities);
event PotionCreated(address indexed player, address potionAddress, uint256 quantity, address[] requiredResources, uint32[] requiredQuantities);
event PotionUpdated(address indexed potionAddress, address[] requiredResources, uint32[] requiredQuantities, uint8 status);
function addPotion( address _potionAddress, address[] _requiredResources, uint32[] _requiredQuantities );
function addressToPotionId(address) external view returns (uint256);
function createPotion(address _potionAddress, uint256 _quantity) external;
function getPotion(address _potionAddress) external view returns (tuple(address potionAddress, address[] requiredResources, uint32[] requiredQuantities, uint8 status));
function getPotions() external view returns (tuple(address potionAddress, address[] requiredResources, uint32[] requiredQuantities, uint8 status)[]);
function paused() external view returns (bool);
function potions(uint256) external view returns (address potionAddress, uint8 status);
function updatePotion(address _potionAddress, address[] _requiredResources, uint32[] _requiredQuantities, uint8 _status) external;
}