// ***********************************************************************
//
// AgileWebs
//
// ***********************************************************************
using Core.Blueprint.Mongo;
using Core.Thalos.Adapters;
using Core.Thalos.Domain.Contexts.Onboarding.Request;
namespace Core.Thalos.Provider.Contracts
{
public interface IModuleProvider
{
///
/// Creates a new Module.
///
/// The Module to be created.
/// A representing
/// the asynchronous execution of the service.
ValueTask CreateModule(ModuleRequest newModule, CancellationToken cancellationToken);
///
/// Gets an Module by identifier.
///
/// The Module identifier.
/// A representing
/// the asynchronous execution of the service.
ValueTask GetModuleById(string _id, CancellationToken cancellationToken);
///
/// Gets all the roles.
///
/// A representing
/// the asynchronous execution of the service.
ValueTask> GetAllModules(CancellationToken cancellationToken);
///
/// Gets all the permissions by permissions identifier list.
///
/// The list of permissions identifiers.
/// A representing
/// the asynchronous execution of the service.
ValueTask> GetAllModulesByList(string[] modules, CancellationToken cancellationToken);
///
/// Changes the status of the permission.
///
/// The permission identifier.
/// The new status of the permission.
/// The updated entity.
/// A representing
/// the asynchronous execution of the service.
ValueTask ChangeModuleStatus(string id, StatusEnum newStatus, CancellationToken cancellationToken);
///
/// Updates a Module by id.
///
/// The Module to be updated.
/// The Module identifier.
/// A representing
/// the asynchronous execution of the service.
ValueTask UpdateModule(ModuleAdapter entity, CancellationToken cancellationToken);
}
}