/// import * as nodeStream from 'stream'; import { Writer } from './writer'; export interface ParallelOptions { count?: number; shuffle?: boolean; } export interface CompareOptions { compare?: (v1: T, v2: T) => number; } export interface Stoppable { stop: (arg?: any) => void; } export declare class Reader { parent?: Stoppable; read: (this: Reader) => T | undefined; _stop: (this: Reader, arg?: any) => void; stopped: boolean; headers: { [name: string]: string; }; constructor(read: () => T | undefined, stop?: (arg: any) => void, parent?: Stoppable); forEach(fn: (value: T, index: number) => void): void; map(fn: (value: T, index: number) => U): Reader; every(fn: ((value: T) => boolean) | {}): boolean; find(fn: ((value: T) => boolean) | {}): T | undefined; some(fn: ((value: T) => boolean) | {}): boolean; reduce(fn: (prev: U, value: T) => U, v: U): U; pipe(writer: Writer): any; tee(writer: Writer): Reader; dup(): [Reader, Reader]; concat(...readers: (Reader | Reader[])[]): Reader; toArray(): T[]; readAll(): string | Buffer | T[] | undefined; transform(fn: (reader: Reader, writer: Writer) => void): Reader; filter(fn: ((value: T, index: number) => boolean) | {}): Reader; until(fn: ((value: T, index: number) => boolean) | {}, stopArg?: any): Reader; while(fn: ((value: T, index: number) => boolean) | {}, stopArg?: any): Reader; limit(n: number, stopArg?: any): Reader; skip(n: number): Reader; fork(consumers: ((source: any) => Reader)[]): StreamGroup; parallel(options: ParallelOptions | number, consumer: (source: any) => Reader): Reader; peekable(): PeekableReader; buffer(max: number): Reader; join(streams: Reader[] | Reader): Reader; nodify(): any; nodeTransform(duplex: nodeStream.Duplex): Reader; compare(other: Reader, options?: CompareOptions): number; stop(arg?: any): void; [Symbol.iterator](): Iterator; } export declare class PeekableReader extends Reader { buffered: (T | undefined)[]; constructor(parent: Reader); unread(val: T | undefined): this; peek(): T | undefined; } export declare function create(read: () => T, stop?: (arg: any) => void): Reader; export declare class StreamGroup implements Stoppable { readers: (Reader | null)[]; constructor(readers: Reader[]); stop(arg?: any): void; dequeue(): Reader; rr(): Reader; join(fn: (values: (T | undefined)[]) => T | undefined): Reader; }