/**
 * EscalateToUserUseCase
 *
 * Single shared entry point that other use cases call when they need to
 * surface a collaboration-fabric event (supervisor escalation, supervisor
 * failure, blocking question, …) to the user via the existing notification
 * channels and the immutable activity log.
 *
 * Behaviour:
 *
 *  1. Short-circuits when `featureFlags.collaboration` is off so NFR-14
 *     (byte-identical default behaviour) is preserved.
 *  2. Dispatches a single {@link NotificationEvent} via
 *     {@link INotificationService}. The notification service itself is
 *     responsible for honoring per-event preferences and per-channel
 *     enable/disable.
 *  3. Mirrors the escalation as an immutable {@link ActivityEntry} so the
 *     audit trail records who triggered it and what kind of escalation it
 *     was (supervisor:<id>, system, etc.).
 *
 * Centralising this logic keeps {@link AskAgentQuestionUseCase} and
 * {@link EvaluateSupervisorDecisionUseCase} thin — they each call this use
 * case rather than duplicating the notify + audit pair.
 */
import type { IActivityLogRepository } from '../../ports/output/repositories/activity-log-repository.interface.js';
import type { ISettingsRepository } from '../../ports/output/repositories/settings.repository.interface.js';
import type { INotificationService } from '../../ports/output/services/notification-service.interface.js';
import type { NotificationEventType, NotificationSeverity } from '../../../domain/generated/output.js';
export interface EscalateToUserInput {
    /** Notification kind to dispatch. */
    eventType: NotificationEventType;
    /** Display severity for the in-app/desktop notifier. */
    severity: NotificationSeverity;
    /** Human-readable description shown to the user. */
    message: string;
    /** Agent run that produced the event (may be empty for system-level). */
    agentRunId: string;
    /** Feature scope of the event. */
    featureId: string;
    /** Display name shown in the notification (caller resolves). */
    featureName: string;
    /**
     * Source event identifier (gate id, question id, message id, decision id)
     * — recorded as the activity-log work item so the audit drawer can list
     * every emission attached to the same source.
     */
    sourceEventId: string;
    /** Actor namespace for the audit row (e.g. `supervisor:<id>`, `system`). */
    actorId: string;
    /** Audit-log field name (e.g. `supervisor.escalation`, `agent.question`). */
    auditField: string;
    /** Optional pre-computed timestamp; defaults to `new Date()`. */
    timestamp?: Date;
}
export interface EscalateToUserResult {
    /** True when the flag was on and the dispatch + audit happened. */
    escalated: boolean;
}
export declare class EscalateToUserUseCase {
    private readonly notifications;
    private readonly activityLog;
    private readonly settings;
    constructor(notifications: INotificationService, activityLog: IActivityLogRepository, settings: ISettingsRepository);
    execute(input: EscalateToUserInput): Promise<EscalateToUserResult>;
    private isCollaborationEnabled;
}
//# sourceMappingURL=escalate-to-user.use-case.d.ts.map