/**
 * AskAgentQuestionUseCase
 *
 * Persists a new {@link AgentQuestion} and, for blocking-kind questions,
 * registers an in-process awaiter so the caller (typically the SDK V2
 * `canUseTool` callback) can `await` until {@link AnswerAgentQuestionUseCase}
 * settles it.
 *
 * After persistence, the question is forwarded to the
 * {@link AgentQuestionSupervisorRouter} (spec 093, task 31). The router
 * is a no-op when the question's `answerer` is `user`, when the
 * question is gate-linked (the worker handles the gate path), or when
 * no {@link SupervisorPolicy} is configured for the scope. In
 * autonomous mode the router may settle the question via
 * {@link AnswerAgentQuestionUseCase} before this method returns,
 * which resolves the awaiter for blocking questions in the same tick.
 *
 * Feature-flag short-circuit: with `featureFlags.collaboration` off, the
 * use case returns `{ enabled: false }` without persisting or registering
 * anything (NFR-14 byte-identical default).
 */
import type { IAgentQuestionRepository } from '../../ports/output/repositories/agent-question-repository.interface.js';
import type { ISettingsRepository } from '../../ports/output/repositories/settings.repository.interface.js';
import type { IDeferredQuestionRegistry, AskAgentQuestionInput } from '../../ports/output/agents/agent-question-service.interface.js';
import { AgentQuestionSupervisorRouter } from './agent-question-supervisor-router.js';
import { EscalateToUserUseCase } from './escalate-to-user.use-case.js';
import { type AgentQuestion } from '../../../domain/generated/output.js';
export interface AskAgentQuestionResult {
    /** True when the collaboration feature flag is on and the question was persisted. */
    enabled: boolean;
    /** The persisted question — populated only when `enabled` is true. */
    question?: AgentQuestion;
    /**
     * Awaiter Promise — populated only for blocking-kind questions when the
     * flag is on. Resolves with the answer string when an
     * {@link AnswerAgentQuestionUseCase} call settles the deferred entry,
     * rejects on cancel/timeout.
     */
    awaiter?: Promise<string>;
}
export declare class AskAgentQuestionUseCase {
    private readonly questionRepository;
    private readonly deferredRegistry;
    private readonly settings;
    private readonly supervisorRouter;
    private readonly escalateToUser;
    constructor(questionRepository: IAgentQuestionRepository, deferredRegistry: IDeferredQuestionRegistry, settings: ISettingsRepository, supervisorRouter: AgentQuestionSupervisorRouter, escalateToUser: EscalateToUserUseCase);
    execute(input: AskAgentQuestionInput): Promise<AskAgentQuestionResult>;
    private isCollaborationEnabled;
}
//# sourceMappingURL=ask-agent-question.use-case.d.ts.map