/**
 * MultiplexSink — host-domain fan-out over multiple child sinks.
 *
 * Implements EffectSinkPort (composite pattern). This is host-domain
 * infrastructure, not substrate. Fan-out is driven by application
 * configuration, not by graph structure.
 *
 * @module MultiplexSink
 * @see docs/design/layer-boundary.md
 */
import EffectSinkPort from '../../ports/EffectSinkPort.ts';
import type { EffectEmission } from '../types/EffectEmission.ts';
import type { ExternalizationPolicy } from '../types/ExternalizationPolicy.ts';
import type { DeliveryObservation } from '../types/DeliveryObservation.ts';
export declare class MultiplexSink extends EffectSinkPort {
    private readonly _id;
    private _sinks;
    /**
     * Constructs a multiplex sink with an optional custom identifier.
     */
    constructor(options?: {
        id?: string;
    });
    /** Returns the unique identifier for this multiplex sink. */
    get id(): string;
    /** Returns a shallow copy of the registered sinks. */
    get sinks(): readonly EffectSinkPort[];
    /** Registers a child sink. Rejects duplicate IDs. */
    addSink(sink: EffectSinkPort): void;
    /** Removes a child sink by ID. Returns true if removed, false if not found. */
    removeSink(sinkId: string): boolean;
    /** Delivers an emission to all child sinks and collects observations. */
    deliver(emission: EffectEmission, lens: ExternalizationPolicy): Promise<DeliveryObservation[]>;
}
