///
///
import { Transform } from 'stream';
import File = require('vinyl');
/**
* Waits for the given ReadableStream
*/
export declare function waitFor(stream: NodeJS.ReadableStream): Promise;
/**
* Waits for all the given ReadableStreams
*/
export declare function waitForAll(streams: NodeJS.ReadableStream[]): Promise;
/**
* Returns the string contents of a Vinyl File object, waiting for
* all chunks if the File is a stream.
*/
export declare function getFileContents(file: File): Promise;
/**
* Composes multiple streams (or Transforms) into one.
*/
export declare function compose(streams: NodeJS.ReadWriteStream[]): any;
/**
* Implements `stream.Transform` via standard async iteration.
*
* The main advantage over implementing stream.Transform itself is that correct
* error handling is built in and easy to get right, simply by using
* async/await.
*
* `In` and `Out` extend `{}` because they may not be `null`.
*/
export declare abstract class AsyncTransformStream extends Transform {
private readonly _inputs;
/**
* Implement this method!
*
* Read from the given iterator to consume input, yield values to write
* chunks of your own. You may yield any number of values for each input.
*
* Note: currently you *must* completely consume `inputs` and return for this
* stream to close.
*/
protected abstract _transformIter(inputs: AsyncIterable): AsyncIterable;
private _initialized;
private _writingFinished;
private _initializeOnce();
/**
* Don't override.
*
* Passes input into this._inputs.
*/
_transform(input: In, _encoding: string, callback: (error?: any, value?: Out) => void): void;
/**
* Don't override.
*
* Finish writing out the outputs.
*/
protected _flush(callback: (err?: any) => void): Promise;
}
/**
* A stream that takes file path strings, and outputs full Vinyl file objects
* for the file at each location.
*/
export declare class VinylReaderTransform extends AsyncTransformStream {
constructor();
protected _transformIter(paths: AsyncIterable): AsyncIterable;
}