using System.Collections.Generic;

namespace Interfaces
{
    public interface IProviderConfiguration
    {
        /// <summary>
        /// Get a Key value pair of configuration settings
        /// </summary>
        /// <example>
        /// Key: Port Number
        /// Value: 1111
        /// </example>
        Dictionary<string, string> ConfigurationSettings { get; }

        /// <summary>
        /// Parse the given configuration settings and validate the given values.
        /// </summary>
        /// <param name="configurations">Key value pairs of configuration settings</param>
        /// <returns>A Dictionary containing a list of validation errors for each configuration setting (Key).</returns>
        Dictionary<string, List<ValidationError>> ValidateConfigurations(Dictionary<string, string> configurations);

        /// <summary>
        /// Set/update the configuration settings.
        /// </summary>
        /// <param name="configurations">Dictionary of key value pairs detailing the configuration settings.</param>
        void SetConfigurations(Dictionary<string, string> configurations);
    }
}
