using System.Threading.Tasks; using Artemis.Core.Plugins.Modules; namespace Artemis.Core.Services.Interfaces { /// /// A service providing module activation functionality /// public interface IModuleService : IArtemisService { /// /// Gets the current active module override. If set, all other modules are deactivated and only the /// is active. /// Module ActiveModuleOverride { get; } /// /// Changes the current and deactivates all other modules /// /// Task SetActiveModuleOverride(Module overrideModule); /// /// Evaluates every enabled module's activation requirements and activates/deactivates modules accordingly /// Task UpdateModuleActivation(); /// /// Updates the priority and priority category of the given module /// /// The module to update /// The new priority category of the module /// The new priority of the module void UpdateModulePriority(Module module, ModulePriorityCategory category, int priority); } }