/**
 * FeatureAgentGateQuestionPublisher
 *
 * Thin wrapper around {@link AskAgentQuestionUseCase} so the feature-agent
 * worker can emit ONE {@link AgentQuestion} of kind `blocking` whenever
 * an approval gate transitions an `AgentRun` to `waiting_approval`
 * (spec 093, task 20).
 *
 * The unified inbox (web + CLI) reads `agent_questions` rows for both
 * interactive-mode AskUserQuestion AND background-mode gate transitions
 * — this publisher is the background-mode write path. It does NOT change
 * the existing approval-gate state machine; it only emits a parallel
 * record so the inbox covers both modes.
 *
 * Scope derivation mirrors {@link FeatureAgentLifecyclePublisher}: try
 * to resolve a registered Application for the worker's repository path
 * and fall back to the repository path itself when none exists.
 *
 * Failures are swallowed: a question-emit error MUST NOT crash the
 * feature-agent worker. The lifecycle publisher's `publishBlocked` call
 * is the canonical signal for SSE clients; this publisher is additive.
 */
import type { IApplicationRepository } from '../../../../application/ports/output/repositories/application-repository.interface.js';
import { AskAgentQuestionUseCase } from '../../../../application/use-cases/agents/ask-agent-question.use-case.js';
export interface GateQuestionInput {
    runId: string;
    featureId: string;
    repositoryPath: string;
    /** Node label that triggered the interrupt (e.g. 'prd', 'plan', 'merge'). */
    interruptNode?: string;
}
export declare class FeatureAgentGateQuestionPublisher {
    private readonly askAgentQuestion;
    private readonly applicationRepo;
    constructor(askAgentQuestion: AskAgentQuestionUseCase, applicationRepo: IApplicationRepository);
    publishWaitingApproval(input: GateQuestionInput): Promise<void>;
    private resolveAppId;
}
//# sourceMappingURL=feature-agent-gate-question-publisher.d.ts.map