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