using Toolbox.Docking.Api.Control;
using Toolbox.Docking.Api.Objects.Calculator;

namespace Toolbox.Docking.Api.Objects.Qsar
{
    /// <summary>
    /// Definition of a Toolbox QSAR, to be used for generating predictions
    /// </summary>
    public interface ITbQsar : ITbCalculator
    {
        /// <summary>
        /// Creates a prediction with detailed information, which requires more time and resources.
        /// </summary>
        /// <param name="target">The Chemical for which to make a prediction.</param>
        /// <returns>
        /// Resulting Toolbox prediction.
        /// </returns>
        ITbPrediction Predict(ITbBasket target);

        /// <summary>
        ///  Return true if for some reason cannot predict this chemical. 
        /// </summary>
        /// <param name="chemical">Chemical to be checked.</param>
        /// <param name="reason">Provides more information if the chemical is restricted.</param>
        /// <returns>Return <b>true</b> if for some reason cannot predict this chemical.</returns>
        bool IsRelevantToChemical(ITbBasket chemical, out string reason);
    }
}