using EntitlementDAL.DTOs;
using GB5Shared.DTO.Framework.Login;
namespace EntitlementBLL.Interfaces;
/// Plain CRUD for MENTITLEMENTFEATUREFLAG, kept separate from IFeatureFlagService
/// (which owns the kill-switch/rollout/target mutation + audit semantics per the core spec).
public interface IFeatureFlagBLL
{
Task GetAsync(int featureFlagId, LoginDTO login, CancellationToken ct);
Task> GetListAsync(LoginDTO login, CancellationToken ct);
Task SaveAsync(FeatureFlagDTO dto, LoginDTO login, CancellationToken ct);
/// Resolves a flag by its feature's FEATURECODE — used by CapabilityDisabledSubscriber
/// to mirror an EAP capability-disable event as a kill switch (see that class's TODO note).
Task GetByFeatureCodeAsync(string featureCode, LoginDTO login, CancellationToken ct);
/// MENTITLEMENTFEATUREFLAGTARGET rows for a flag (FeatureFlag.svc/GetTargetList) —
/// previously only addable/removable via AddTarget/RemoveTarget, never listable.
Task> GetTargetListAsync(int featureFlagId, LoginDTO login, CancellationToken ct);
}