using Toolbox.Docking.Api.Control;

namespace Toolbox.Docking.Api.Objects.Metabolism
{
    /// <summary>
    /// Factory for constructing a Toolbox metabolism object.
    /// </summary>
    public interface ITbMetabolismFactory : ITbObjectFactory
    {
        /// <summary>
        /// Description of the metabolism.
        /// </summary>
        MetabolismFlags MetabolismType { get; }


        /// <summary>
        /// This is the "metabolism" category name (e.g. "metabolite", "tautomer", "dissociation product"). 
        /// </summary>
        string ProductName { get; }
        /// <summary>
        /// Returns an initialized, ready to use Toolbox metabolism.
        /// </summary>
        /// <param name="task">Task responsible for the object initialization</param>
        /// <returns>
        /// The initialized Toolbox metabolism.
        /// </returns>
        ITbMetabolism GetMetabolism(ITbWorkTask task);
    }
}