package tech.easyflow.ai.service;

import java.math.BigInteger;
import java.util.Set;

/**
 * 知识库分享权限服务。
 */
public interface KnowledgeSharePermissionService {

    /**
     * 为系统访问令牌授予知识库 API 分享权限。
     *
     * @param apiKeyId 系统访问令牌 ID
     * @param knowledgeId 知识库 ID
     * @param actionScopes 动作范围
     */
    void grantApiShare(BigInteger apiKeyId, BigInteger knowledgeId, Set<String> actionScopes);

    /**
     * 按访问令牌维度开启或关闭知识库 API 分享授权。
     *
     * <p>产品固定为全量知识库的非删除范围，不向前端暴露动作粒度。</p>
     *
     * @param apiKeyId 系统访问令牌 ID
     * @param enabled 是否启用知识库分享授权
     */
    void replaceApiShareEnabled(BigInteger apiKeyId, boolean enabled);

    /**
     * 断言当前令牌具备知识库分享权限。
     *
     * @param apiKeyId 系统访问令牌 ID
     * @param requestUri 请求地址
     * @param knowledgeId 知识库 ID
     * @param actionScope 动作范围
     */
    void assertApiShare(BigInteger apiKeyId, String requestUri, BigInteger knowledgeId, String actionScope);
}
