import type { ITime } from '../../stream/index.js'; import { type IScheduler, type ISink, type IStream } from '../../stream/index.js'; import { MulticastSink } from './sink.js'; /** * multicast :: Stream a -> Stream a * * Returns a Stream equivalent to the original but which can be shared more * efficiently among multiple consumers. * * stream: -a-b-c-d-e-> * multicast(stream): -a-b-c-d-e-> * subscriber1: -a-b-c-d-e-> * subscriber2: -c-d| * subscriber3: -d-e-> * * Multicast allows you to build up a stream of maps, filters, and other * transformations, and then share it efficiently with multiple observers. */ export declare const multicast: (source: IStream) => IStream; export declare class MulticastSource extends MulticastSink implements Disposable, IStream { readonly source: IStream; disposable: Disposable; constructor(source: IStream); run(sink: ISink, scheduler: IScheduler): Disposable; [Symbol.dispose](): void; end(time: ITime): void; }