using System; using System.Collections.ObjectModel; using System.Threading.Tasks; using Artemis.Core.Events; using Artemis.Plugins.Interfaces; using Artemis.Plugins.Models; namespace Artemis.Core.Services.Interfaces { public interface IPluginService : IArtemisService, IDisposable { bool LoadingPlugins { get; } ReadOnlyCollection Plugins { get; } /// /// Loads all installed plugins. If plugins already loaded this will reload them all /// /// Task LoadPlugins(); Task ReloadPlugin(PluginInfo pluginInfo); Task GetPluginViewModel(PluginInfo pluginInfo); /// /// Occurs when a single plugin has loaded /// event EventHandler PluginLoaded; /// /// Occurs when a single plugin has reloaded /// event EventHandler PluginReloaded; /// /// Occurs when loading all plugins has started /// event EventHandler StartedLoadingPlugins; /// /// Occurs when loading all plugins has finished /// event EventHandler FinishedLoadedPlugins; } }