import StreamSubscription from './subscription'; export default class ReadableStream { private onSubscribe; static fromEvent(object: IEventEmitter, event: string, takeOnly?: number): ReadableStream; static merge(...streams: Array>): ReadableStream; constructor(onSubscribe: ReadableStreamSource); subscribe(iterator?: (value: T) => CancelSubscription | void): StreamSubscription; forEach(iterator: ReadableIterator): StreamSubscription; map(mapper: ReadableMapper): ReadableStream; flatMap(mapper: ReadableMapper>): ReadableStream; take(count: number): ReadableStream; takeUntil(stopper: Promise<{}>): ReadableStream; debounce(milliseconds: number): ReadableStream; debounce(milliseconds: number, join: (list: T[]) => TOut): ReadableStream; } export declare type IteratorBase = (value: T, index: TIndex, collection: TCollection) => TOutput; export declare type ReadableMapper = IteratorBase, TOutput>; export declare type ReadableIterator = ReadableMapper; export declare type CancelSubscription = StreamSubscription | (() => void); export declare type ReadableStreamOnNext = (value: T) => void; export declare type ReadableStreamOnNextCancellable = (value: T) => CancelSubscription; export declare type ReadableStreamOnError = (error: Error) => void; export declare type ReadableStreamOnComplete = () => void; export declare type ReadableStreamSource = (push: ReadableStreamOnNext | ReadableStreamOnNextCancellable, error?: ReadableStreamOnError, complete?: ReadableStreamOnComplete) => CancelSubscription | void; export interface IIterable { forEach(iterator: (value: T) => void): void; } export declare type IEventEmitter = IEventEmitterOn | IEventEmitterAdd; export interface IEventEmitterOn { on(signal: string, listener: (event: T) => void): void; } export interface IEventEmitterAdd { addEventListener(signal: string, listener: (event: T) => void): void; }