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);
}
}