/**
 * Lost-Dispatch Detector — Cases #5/#6/#7 (post-SEALED amendment 2026-04-25)
 *
 * Sam (TL) identified three additional silent-failure data points on
 * 2026-04-25: agent restarts that dropped a freshly-dispatched WorkItem
 * with no follow-up. Common signature: dispatch sent → target agent
 * restarted → no acknowledgement reply → WorkItem stuck at `proposed`/
 * `accepted` indefinitely.
 *
 * This detector flags those WorkItems using ONLY existing snapshot
 * fields (no new data sources, no schema cost):
 *
 *   lost_dispatch(wi) :=
 *     wi.status ∈ {proposed, accepted}
 *     ∧ now - wi.createdAt > LOST_DISPATCH_T1_MS  (no follow-up window)
 *     ∧ target agent.lastSeenAt > wi.createdAt    (agent alive since dispatch)
 *     ∧ wi.startedAt is undefined                 (never moved to running)
 *
 * Strictly speaking this is a scope amendment to the SEALED design (which
 * specified rules in §B.2/§B.4/§B.5 only). The amendment is gated behind
 * `lostDispatchDetection.enabled` so v0 can be reverted to the literal
 * sealed scope by setting the flag false. Default is `true` because the
 * three real cases occurred in the same operating window the design
 * was sealed in.
 *
 * @module services/team-health/lost-dispatch-detector
 */
import type { WorkItem } from '../../types/v2/index.js';
import type { AgentWorkingStatus, LostDispatchConfig } from './team-health-types.js';
import type { AgentHealth } from '../reconciler/reconcile-rules.js';
/**
 * Identify the set of WorkItem IDs that look like lost dispatches.
 *
 * @param workItems - All active WorkItems being evaluated
 * @param agentHealth - Per-session health (provides lastSeenAt)
 * @param now - Current wall-clock time
 * @param config - Detector config (enabled flag + thresholds)
 * @returns Set of WorkItem IDs flagged as lost dispatches
 */
export declare function detectLostDispatches(workItems: WorkItem[], agentHealth: ReadonlyMap<string, AgentHealth & {
    workingStatus?: AgentWorkingStatus;
}>, now: Date, config: LostDispatchConfig): Set<string>;
/**
 * Build a human-readable evidence string for one lost-dispatch WorkItem.
 *
 * @param wi - WorkItem flagged as lost dispatch
 * @param agentHealth - Agent health map (for the target's lastSeenAt)
 * @returns Multi-line evidence string
 */
export declare function describeLostDispatchEvidence(wi: WorkItem, agentHealth: ReadonlyMap<string, AgentHealth & {
    workingStatus?: AgentWorkingStatus;
}>): string;
//# sourceMappingURL=lost-dispatch-detector.d.ts.map