using System.Collections.Generic;
using Toolbox.Docking.Api.Data;

namespace Toolbox.Docking.Api.Objects.Qsar
{
    /// <summary>
    /// Toolbox prediction, product of a <see cref="ITbQsar"/> object.
    /// </summary>
    public interface ITbPrediction
    {
        /// <summary>
        /// Predicted value.
        /// </summary>
        TbData Value { get; }

        /// <summary>
        /// <para>String and numeric descriptors of this prediction. </para>
        /// <para>Add here only prediction specific metadata. All QSAR metadata (IQsarFactory.Metadata) will be assigned from the system.</para>
        /// <para>For instance:</para>
        /// <para><b>String:</b> Author, ContactDetails, Summary,  MechanisticInterpretation, 
        ///         AdequacyOfPrediction, DataEliminationJustification</para>
        /// <para><b>Numeric: </b>
        ///         ConfidenceLevel, ReportedChemicalsCount
        ///                 
        /// CategoryDefinition, Hypothesis, EndpointsCovered, Purity, 
        /// PhysicochemicalPropertiesJustification, StructureSimilarityJustification, 
        /// MechanisticSimilarityJustification, SummaryJustificationFreeText</para>
        /// 
        /// </summary>
        TbMetadata Metadata { get; }


        /// <summary>
        /// Values of X descriptors for chemical of this prediction.
        /// </summary>
        IReadOnlyDictionary<TbObjectId, TbData> XDescriptorsValues { get; }


        //IEnumerable<IInformationItem> GetSpecificInfoItems();
    }
}