package tech.easyflow.ai.plugin.workflow.availability;

import tech.easyflow.ai.entity.Plugin;
import tech.easyflow.common.entity.LoginAccount;

/**
 * 工作流插件可用性判定服务。
 */
public interface WorkflowPluginAvailabilityService {

    /**
     * 计算当前登录用户视角下的工作流插件可见性与可用性。
     *
     * @param plugin 插件
     * @return 判定结果
     */
    WorkflowPluginAvailabilityDecision evaluateForCurrentUser(Plugin plugin);

    WorkflowPluginAvailabilityDecision evaluate(Plugin plugin, LoginAccount loginAccount);

    /**
     * 判断当前用户是否可在管理页继续看到不可用插件。
     *
     * @param plugin 插件
     * @return 是否允许在管理视角保留展示
     */
    boolean canViewUnavailableInManagement(Plugin plugin);
}
