using GreenTree.Nachtragsmanagement.Core.Plugins;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace GreenTree.Nachtragsmanagement.Services.Misc
{
    public interface INotificationService
    {
        /// <summary>
        /// Loads all implementations of the INotificationPlugin
        /// </summary>
        IEnumerable<INotificationPlugin> LoadNotificationPlugins();

        /// <summary>
        /// Searches for all implementations of the INotificationPlugin
        /// </summary>
        IEnumerable<INotificationPlugin> GetNotificationPlugins();

        /// <summary>
        /// Gets a notification plugin by a specific name
        /// </summary>
        /// <param name="pluginSystemName">SystemName of notification plugin.</param>
        INotificationPlugin GetNotificationPlugin(string pluginSystemName);
    }
}
