// src/lisp/IStream.ts

import type { IStreamOperator } from './IStreamOperator';

/**
 * Stream represents a lazy, composable data pipeline.
 * Streams don't execute until subscribed - they're just descriptions.
 */
export interface IStream {
  __type: 'stream';
  source: string | string[] | IStream | IStream[];  // Matrix topic(s) or upstream stream(s)
  operators: IStreamOperator[];         // Pipeline of transformations
  merged?: IStream[];                   // For merged streams
}
