// ***********************************************************************
// 
//     Heath
// 
// ***********************************************************************
using Core.Cerberos.Adapters;
using Core.Cerberos.Adapters.Common.Enums;
using Core.Cerberos.Domain.Contexts.Onboarding.Request;
namespace Core.Cerberos.Provider.Contracts
{
    public interface IPermissionService
    {
        /// 
        /// Creates a new Permission.
        /// 
        /// The Permission to be created.
        /// A  representing
        /// the asynchronous execution of the service.
        Task CreatePermissionService(PermissionRequest newPermission);
        /// 
        /// Gets an Permission by identifier.
        /// 
        /// The Permission identifier.
        /// A  representing
        /// the asynchronous execution of the service.
        Task GetPermissionByIdService(string id);
        /// 
        /// Gets all the roles.
        /// 
        /// A  representing
        /// the asynchronous execution of the service.
        Task> GetAllPermissionsService();
        /// 
        /// Gets all the permissions by permissions identifier list.
        /// 
        /// The list of permissions identifiers.
        /// A  representing
        /// the asynchronous execution of the service.
        Task> GetAllPermissionsByListService(string[] permissions);
        /// 
        /// 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.
        Task ChangePermissionStatusService(string id, StatusEnum newStatus);
        /// 
        /// Updates a Permission by id.
        /// 
        /// The Permission to be updated.
        /// The Permission identifier.
        /// A  representing
        /// the asynchronous execution of the service.
        Task UpdatePermissionService(PermissionAdapter entity, string id);
    }
}