using GB5Shared.DTO.Framework.Login;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
namespace EAIAdminBLL.EAIContextResolver
{
/// Resolves every active MEAICONTEXTKEYDEFINITION to a single value for one
/// (Tenant, User) request, applying the tier-weight/Priority ranking documented on
/// ResolveContextAsync. Called from POST /EAIAdmin/ResolveContext (gbEAI calling back into
/// GB5) and available for any future in-process caller.
public interface IEAIContextResolver
{
/// Tier weight per ScopeLevel: Global=0, ClientAttribute=1, Client=2,
/// Role=3, OU=3 (co-equal, broken by Priority), User=4. Additive keys concatenate every
/// match ordered (tier asc, Priority asc); Override keys take the single best match
/// ordered (tier desc, Priority desc, ModifiedOn desc). Returns {ContextKey: ResolvedValue}
/// for every active key that had at least one matching setting.
Task> ResolveContextAsync(
int tenantId, int userId, LoginDTO login, CancellationToken ct = default);
}
}