package com.easyagents.agent.runtime.hitl;

import java.util.List;

/**
 * 工具审批决议。
 */
public final class AgentToolApprovalResolution {

    /**
     * 审批决议状态。
     */
    public enum Status {
        /**
         * 当前审批批次仍有待处理调用。
         */
        WAITING,

        /**
         * 当前审批批次已全部批准，可以恢复执行。
         */
        READY,

        /**
         * 当前审批批次已被拒绝。
         */
        REJECTED,

        /**
         * 当前审批批次已过期。
         */
        EXPIRED
    }

    private final Status status;
    private final AgentPendingState resolvedState;
    private final List<AgentPendingState> remainingStates;
    private final String reason;

    /**
     * 创建工具审批决议。
     *
     * @param status 决议状态
     * @param resolvedState 本次处理的待审批状态
     * @param remainingStates 同一批次剩余的待审批状态
     * @param reason 拒绝或过期原因
     */
    public AgentToolApprovalResolution(Status status,
                                       AgentPendingState resolvedState,
                                       List<AgentPendingState> remainingStates,
                                       String reason) {
        this.status = status;
        this.resolvedState = resolvedState;
        this.remainingStates = remainingStates == null ? List.of() : List.copyOf(remainingStates);
        this.reason = reason;
    }

    /**
     * 获取决议状态。
     *
     * @return 决议状态
     */
    public Status getStatus() {
        return status;
    }

    /**
     * 获取本次处理的待审批状态。
     *
     * @return 待审批状态
     */
    public AgentPendingState getResolvedState() {
        return resolvedState;
    }

    /**
     * 获取同一批次剩余的待审批状态。
     *
     * @return 剩余待审批状态
     */
    public List<AgentPendingState> getRemainingStates() {
        return remainingStates;
    }

    /**
     * 获取拒绝或过期原因。
     *
     * @return 原因
     */
    public String getReason() {
        return reason;
    }
}
