/**
 * AgentQuestionSupervisorRouter
 *
 * Routes a freshly persisted {@link AgentQuestion} through the
 * supervisor pipeline (spec 093, task 31).
 *
 * Why this exists: the unified question pipeline (task 17) treats both
 * gate-emitted questions (task 20) and SDK V2 `AskUserQuestion`
 * questions identically. For non-gate questions we still want a
 * configured supervisor to evaluate the ask and — in autonomous mode —
 * answer it on the user's behalf. The router encapsulates the routing
 * rules so {@link AskAgentQuestionUseCase} stays small and so the
 * behaviour is unit-testable in isolation.
 *
 * Routing rules:
 *  - Skip when the question is gate-linked (`gateQuestionPublisher`
 *    will have raised a corresponding gate event already; routing the
 *    question too would double-evaluate).
 *  - Skip when `answerer === 'user'` — the user explicitly retains
 *    answer authority for these.
 *  - Resolve the effective {@link SupervisorPolicy} for the
 *    (appId, featureId) scope; if none is configured the call is a
 *    no-op (preserves NFR-14 default behaviour).
 *  - Evaluate the supervisor — the decision is always recorded so the
 *    audit / "Why?" drawer can show context even in advisory mode.
 *  - In **autonomous** mode AND when the verdict is `approve` /
 *    `reject`, settle the question via
 *    {@link AnswerAgentQuestionUseCase} with `actor =
 *    supervisor:<supervisorRunId>`. In **advisory** / **co-sign**
 *    modes the question stays pending — the user retains the final
 *    say (user always wins).
 *
 * Failures are swallowed: a supervisor outage MUST NOT prevent the
 * question from being persisted or answered later by the user.
 */
import { AnswerAgentQuestionUseCase } from './answer-agent-question.use-case.js';
import { EvaluateSupervisorDecisionUseCase } from './evaluate-supervisor-decision.use-case.js';
import { GetSupervisorPolicyUseCase } from './get-supervisor-policy.use-case.js';
import { SupervisorAutonomy, SupervisorVerdict, type AgentQuestion } from '../../../domain/generated/output.js';
export interface AgentQuestionSupervisorRouteResult {
    evaluated: boolean;
    /** Effective autonomy (only set when evaluated). */
    effectiveAutonomy?: SupervisorAutonomy;
    /** Supervisor's verdict (only set when evaluated). */
    verdict?: SupervisorVerdict;
    /** True when the supervisor answered the question in autonomous mode. */
    answered: boolean;
}
export declare class AgentQuestionSupervisorRouter {
    private readonly getPolicy;
    private readonly evaluateDecision;
    private readonly answerAgentQuestion;
    constructor(getPolicy: GetSupervisorPolicyUseCase, evaluateDecision: EvaluateSupervisorDecisionUseCase, answerAgentQuestion: AnswerAgentQuestionUseCase);
    /**
     * Route a freshly-persisted question through the supervisor.
     * Returns `{ evaluated: false, answered: false }` when the question is
     * skipped (user-only / no policy / failure).
     */
    routeIfApplicable(question: AgentQuestion): Promise<AgentQuestionSupervisorRouteResult>;
    private maybeAnswer;
}
//# sourceMappingURL=agent-question-supervisor-router.d.ts.map