/**
 * EffectEmission — host-domain read model / event shape for an
 * outbound effect candidate.
 *
 * This is a host-side trace object, NOT causal substrate truth.
 * The source of truth for effects is `effect:*` graph entities
 * written by participants. This type mirrors that graph-level
 * entity schema for use in the host-domain effect pipeline.
 *
 * @module EffectEmission
 * @see docs/design/effect-entity-convention.md
 * @see docs/design/layer-boundary.md
 */
import { DELIVERY_MODES, DELIVERY_OUTCOMES } from './ExternalizationPolicy.ts';
export { DELIVERY_MODES, DELIVERY_OUTCOMES };
/**
 * Causal coordinate at emission time.
 */
export declare class EffectCoordinate {
    /** Writer tip SHAs at emission time */
    readonly frontier: Readonly<Record<string, string>> | null;
    /** Lamport ceiling (if capped) */
    readonly ceiling: number | null;
    /**
     * Creates an immutable EffectCoordinate.
     */
    constructor({ frontier, ceiling }: {
        frontier: Record<string, string> | null;
        ceiling: number | null;
    });
}
/**
 * EffectEmission — host-domain trace object for an outbound effect candidate.
 */
export declare class EffectEmission {
    readonly id: string;
    readonly kind: string;
    readonly payload: unknown;
    readonly timestamp: number;
    readonly writer: string | null;
    readonly coordinate: Readonly<EffectCoordinate>;
    /**
     * Creates an immutable EffectEmission.
     */
    constructor({ id, kind, payload, timestamp, writer, coordinate }: {
        id: string;
        kind: string;
        payload: unknown;
        timestamp: number;
        writer: string | null;
        coordinate: {
            frontier: Record<string, string> | null;
            ceiling: number | null;
        };
    });
}
/**
 * Creates an immutable EffectEmission.
 */
export declare function createEffectEmission({ id, kind, payload, timestamp, writer, coordinate }: {
    id: string;
    kind: string;
    payload: unknown;
    timestamp: number;
    writer: string | null;
    coordinate: {
        frontier: Record<string, string> | null;
        ceiling: number | null;
    };
}): Readonly<EffectEmission>;
/**
 * Produces a deterministic JSON string for an EffectEmission.
 */
export declare function canonicalEmissionJson(emission: EffectEmission): string;
