/**
 * DeliveryObservation — host-domain trace record of how a sink
 * handled an emitted effect under a given externalization policy.
 *
 * This is host-domain infrastructure, NOT causal substrate truth.
 * Delivery observations live in the pipeline's in-memory trace or
 * in chunk sink files — not in the graph.
 *
 * @module DeliveryObservation
 * @see docs/design/layer-boundary.md
 */
import { type ExternalizationPolicy, type DeliveryOutcome } from './ExternalizationPolicy.ts';
/**
 * DeliveryObservation — trace record of how a sink handled an emitted effect.
 */
export declare class DeliveryObservation {
    /** Links to the EffectEmission */
    readonly emissionId: string;
    /** Which sink/adapter handled it */
    readonly sinkId: string;
    readonly outcome: DeliveryOutcome;
    /** Why (e.g., "replay mode"). Omitted (not null) when absent. */
    readonly reason: string | undefined;
    /** Wall-clock milliseconds */
    readonly timestamp: number;
    /** Execution context at delivery time */
    readonly lens: Readonly<ExternalizationPolicy>;
    /**
     * Creates an immutable DeliveryObservation.
     */
    constructor({ emissionId, sinkId, outcome, reason, timestamp, lens }: {
        emissionId: string;
        sinkId: string;
        outcome: string;
        reason?: string;
        timestamp: number;
        lens: {
            mode: string;
            suppressExternal: boolean;
        };
    });
}
/**
 * Creates an immutable DeliveryObservation from validated parameters.
 */
export declare function createDeliveryObservation({ emissionId, sinkId, outcome, reason, timestamp, lens }: {
    emissionId: string;
    sinkId: string;
    outcome: string;
    reason?: string;
    timestamp: number;
    lens: {
        mode: string;
        suppressExternal: boolean;
    };
}): Readonly<DeliveryObservation>;
/**
 * Produces a deterministic JSON string for a DeliveryObservation.
 */
export declare function canonicalObservationJson(observation: DeliveryObservation): string;
