// src/lisp/IStreamOperator.ts

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

/**
 * Stream operator types
 */
export interface IStreamOperator {
  type: 'map' | 'filter' | 'scan' | 'debounce' | 'throttle' | 'take' | 'skip' |
        'buffer' | 'distinct' | 'tap' | 'delay' | 'timeout' | 'retry' | 'catch';
  fn?: ILambdaClosure;    // Lambda for map/filter/scan/tap
  initial?: unknown;     // Initial value for scan
  ms?: number;           // Milliseconds for debounce/throttle/delay/timeout
  n?: number;            // Count for take/skip
  count?: number;        // Count for buffer/retry
  handler?: unknown;     // Error handler for catch
}
