import type { ISink, ITime } from '../../stream/index.js'; export declare abstract class MulticastSink implements ISink { protected sinkList: readonly ISink[]; private propagatingError; private deliveredErrors; event(time: ITime, value: T): void; error(time: ITime, error: Error): void; end(time: ITime): void; } /** * Lawful fan-in over one downstream sink: each contributor is a sub-sink, and * `end` forwards only when the LAST live contributor ends — one completing * contributor no longer terminates a sink other contributors still feed. * Detaching (disposal) is cancellation, not completion: it decrements the * live count without ever forwarding `end`. Errors stay applicative and pass * straight through. After the fan-in has forwarded `end`, it is closed: * late contributors attach inert. */ export declare class FanInSink { readonly sink: ISink; live: number; closed: boolean; constructor(sink: ISink); attach(): FanInContributor; } export declare class FanInContributor implements ISink, Disposable { readonly parent: FanInSink; private done; constructor(parent: FanInSink); event(time: ITime, value: T): void; error(time: ITime, error: unknown): void; end(time: ITime): void; [Symbol.dispose](): void; }