/**
 * HALO Delivery Tracer — observability for the convergence loop
 *
 * Emits delivery runs as HALO/OpenInference spans so `uap harness analyze`
 * can mine systemic failure modes across runs (which gates dominate, where
 * turns stall, which strategies win). One AGENT span per run, one CHAIN span
 * per turn, parented to the run.
 *
 * Inherits the exporter's guarantees: zero overhead when tracing is disabled
 * and never throws into the loop.
 */
import type { DeliveryResult, IterationRecord } from './convergence-loop.js';
export interface HaloDeliveryTracer {
    /** Record one loop turn as a CHAIN span (wire into onIteration). */
    onIteration(record: IterationRecord): void;
    /** Record the run-level AGENT span once the loop returns. */
    finish(result: DeliveryResult): void;
}
export interface HaloDeliveryTracerOptions {
    instruction: string;
    modelId: string;
    projectRoot: string;
}
/**
 * Create a tracer for a single delivery run. All emission is gated on
 * isHaloTracingEnabled(), so constructing one unconditionally is free.
 */
export declare function createHaloDeliveryTracer(options: HaloDeliveryTracerOptions): HaloDeliveryTracer;
//# sourceMappingURL=halo-trace.d.ts.map