///
import stream from 'stream';
import { Function0, TT, TT$ } from '@upradata/util';
import { ConcatOptionsType } from '../concat';
import { Stream } from '../types';
export declare type ConditionSync = boolean | ((data: Data, callback?: (err: Error, condition: boolean) => void) => void | boolean);
export declare type Condition = TT$ void) => void | TT$)>;
export declare type ConditionActionSync = Stream | Function0;
export declare type ConditionAction = TT$>>;
export declare type ConditionActionsSync = TT;
export declare type ConditionActions = ConcatMode extends 'concat' ? ConcatOptionsType : TT;
export declare type Mode = 'pipe' | 'concat';
export declare type SyncMode = 'sync' | 'async';
export declare class IfOptions {
condition: Condition;
true: ConditionActions;
false?: ConditionActions;
stream?: stream.DuplexOptions;
mode?: Mode;
sync?: SyncMode;
constructor(options?: IfOptions);
}
export declare const getActionStreamsAsync: (conditionActions: ConditionActions<'pipe'>) => Promise;
export declare const getActionStreamsSync: (conditionActions: ConditionActionsSync) => Stream[];