/// import duplexify from 'duplexify'; import stream from 'stream'; import { ConcatOptionsType } from '../concat'; import { ReadableStream, Stream } from '../types'; import { TernaryForksStream } from './ternary-fork'; import { ConditionActions, IfOptions, Mode } from './types'; export declare abstract class TernaryStreams { true: ConcatMode extends 'pipe' ? Stream[] : ConcatOptionsType; false: ConcatMode extends 'pipe' ? Stream[] : ConcatOptionsType; ternaryStream: duplexify.Duplexify; protected ternaryForkStream: TernaryForksStream; protected outputStream: stream.Transform; options: IfOptions; constructor(options: IfOptions); protected forwardError(from: Stream, to: Stream): void; protected abstract connectTernaryForkStreamsAsync(): Promise; protected abstract connectTernaryForkStreamsSync(): ReadableStream[]; private initAsync; private initSync; private doInit; create(): duplexify.Duplexify | Promise; private done; } export declare class TernaryStreamsPipe extends TernaryStreams { constructor(options: IfOptions); addActions(actionsToAdd: { true?: ConditionActions<'pipe'>; false?: ConditionActions<'pipe'>; }): void[] | Promise; protected forwardError(from: Stream, to: Stream): void; protected connectTernaryForkStreamsAsync(): Promise; protected connectTernaryForkStreamsSync(): ReadableStream[]; private connect; } export declare class TernaryStreamsConcat extends TernaryStreams { constructor(options: IfOptions); protected connectTernaryForkStreamsAsync(): Promise; protected connectTernaryForkStreamsSync(): any; } export declare type Ternary> = Options['sync'] extends 'async' ? Promise : stream.Duplex; export declare const ternary: >(options: Options) => Ternary;