import { type IStream } from '../../stream/index.js'; /** * Creates a "tethered" pair of streams from a single source. * * The pattern creates a split topology where each primary subscription * creates its own TetherSink that forwards events to both destinations: * * ``` * Source ──┬── TetherSink₁ ──┬──> Primary Sink₁ * │ └──┐ * │ │ * ├── TetherSink₂ ──┬──> Primary Sink₂ * │ └──┤ * │ │ * └── TetherSink₃ ──┬──> Primary Sink₃ * └──┤ * ↓ * Tether Multicast * / | \ * v v v * tether tether tether * sub₁ sub₂ sub₃ * ``` * * Example flow for event 'x': * - Primary subscription 1: Source → TetherSink₁ → Primary Sink₁ + Tether * - Primary subscription 2: Source → TetherSink₂ → Primary Sink₂ + Tether * - Tether sees 'x' twice (once from each primary subscription) * * Key behaviors: * - Primary stream: Unicast (each subscriber gets independent source subscription) * - Tether stream: Multicast that aggregates events from ALL primary subscriptions * - Each primary subscription creates its own TetherSink * - Tether receives events from every primary subscription (may see duplicates) * * @returns [primary, tethered] stream tuple */ export declare const tether: (source: IStream) => [IStream, IStream];