import type { PipeStep } from './pipe$.js';
import type { PartialObserver } from './types/inputs/Observer.js';
import type { Subscribable } from './types/inputs/Subscribable.js';
/**
* Given observer subscribes to result given observable.
*
* @since 1.0.0
*/
export declare function flow$(observable: A, observer: FlowObserver): ReturnType;
/**
* Run step on input observable allowing to change its shape or emitted data.
* Then given observer will subscribe to result observable.
*
* @since 1.0.0
*/
export declare function flow$(observable: A, stepA: PipeStep, observer: FlowObserver): ReturnType;
/**
* Runs all steps one after another on input observable allowing to change its shape or emitted data.
* Then given observer will subscribe to result observable.
*
* @since 1.0.0
*/
export declare function flow$(observable: A, stepA: PipeStep, stepB: PipeStep, observer: FlowObserver): ReturnType;
/**
* Runs all steps one after another on input observable allowing to change its shape or emitted data.
* Then given observer will subscribe to result observable.
*
* @since 1.0.0
*/
export declare function flow$(observable: A, stepA: PipeStep, stepB: PipeStep, stepC: PipeStep, observer: FlowObserver): ReturnType;
/**
* Runs all steps one after another on input observable allowing to change its shape or emitted data.
* Then given observer will subscribe to result observable.
*
* @since 1.0.0
*/
export declare function flow$(observable: A, stepA: PipeStep, stepB: PipeStep, stepC: PipeStep, stepD: PipeStep, observer: FlowObserver): ReturnType;
/**
* Runs all steps one after another on input observable allowing to change its shape or emitted data.
* Then given observer will subscribe to result observable.
*
* @since 1.0.0
*/
export declare function flow$(observable: A, stepA: PipeStep, stepB: PipeStep, stepC: PipeStep, stepD: PipeStep, stepE: PipeStep, observer: FlowObserver): ReturnType;
/**
* Runs all steps one after another on input observable allowing to change its shape or emitted data.
* Then given observer will subscribe to result observable.
*
* @since 1.0.0
*/
export declare function flow$(observable: A, stepA: PipeStep, stepB: PipeStep, stepC: PipeStep, stepD: PipeStep, stepE: PipeStep, stepF: PipeStep, observer: FlowObserver): ReturnType;
/**
* Runs all steps one after another on input observable allowing to change its shape or emitted data.
* Then given observer will subscribe to result observable.
*
* @since 1.0.0
*/
export declare function flow$(observable: A, stepA: PipeStep, stepB: PipeStep, stepC: PipeStep, stepD: PipeStep, stepE: PipeStep, stepF: PipeStep, stepG: PipeStep, observer: FlowObserver): ReturnType;
/**
* Runs all steps one after another on input observable allowing to change its shape or emitted data.
* Then given observer will subscribe to result observable.
*
* @since 1.0.0
*/
export declare function flow$(observable: A, stepA: PipeStep, stepB: PipeStep, stepC: PipeStep, stepD: PipeStep, stepE: PipeStep, stepF: PipeStep, stepG: PipeStep, stepH: PipeStep, observer: FlowObserver): ReturnType;
/**
* Runs all steps one after another on input observable allowing to change its shape or emitted data.
* Then given observer will subscribe to result observable.
*
* @since 1.0.0
*/
export declare function flow$(observable: A, stepA: PipeStep, stepB: PipeStep, stepC: PipeStep, stepD: PipeStep, stepE: PipeStep, stepF: PipeStep, stepG: PipeStep, stepH: PipeStep, stepI: PipeStep, observer: FlowObserver): ReturnType;
/**
* Runs all steps one after another on input observable allowing to change its shape or emitted data.
* Then given observer will subscribe to result observable.
*
* @since 1.0.0
*/
export declare function flow$(observable: A, stepA: PipeStep, stepB: PipeStep, stepC: PipeStep, stepD: PipeStep, stepE: PipeStep, stepF: PipeStep, stepG: PipeStep, stepH: PipeStep, stepI: PipeStep, stepJ: PipeStep, observer: FlowObserver): ReturnType;
/**
* Extract Value type from {@link Subscribable} type
*
* @since 2.0.0
*/
export type FlowObserver = T extends Subscribable ? PartialObserver : never;