using EntitlementDAL.DTOs;
using EntitlementDAL.Enums;
namespace EntitlementBLL.Interfaces;
///
/// The 9-layer feature resolution engine. IsFeatureEnabledAsync's layer order is HARD-CODED,
/// NO EXCEPTIONS, NO BYPASS — see EntitlementService.IsFeatureEnabledAsync for the literal
/// implementation of every layer, in order.
///
public interface IEntitlementService
{
Task IsFeatureEnabledAsync(int clientId, int userId, string featureCode, CancellationToken ct);
/// Throws EntitlementQuotaExceededException when a Quota-type feature would be exceeded.
Task EnsureQuotaAsync(int clientId, string featureCode, long delta, CancellationToken ct);
Task GetRemainingSeatsAsync(int clientId, LicenseTypeEnum licenseType, CancellationToken ct);
Task GetResolvedBundleAsync(int clientId, CancellationToken ct);
}