import { IGenericObserverPipe } from '../../../observer/pipes/type/observer-pipe.type';
import { IGenericObserver } from '../../../observer/type/observer.type';
import { IInferComposeNowReturn } from '../../../misc/functional/compose/types/infer-compose-now-return.type';
import { IComposeConstraint } from '../../../misc/functional/compose/types/compose-constraint.type';
import { IComposeNowValueConstraint } from '../../../misc/functional/compose/types/compose-now-value-constraint.type';
export declare type IObserverComposeConstraint<// generics
GFunctions extends readonly IGenericObserverPipe[]> = IComposeConstraint<GFunctions, any, IGenericObserverPipe>;
declare type IGenericObserverConstraint<GValue> = GValue extends IGenericObserver ? GValue : never;
export declare type IObserverComposeValueConstraint<// generics
GFunctions extends readonly IGenericObserverPipe[]> = IGenericObserverConstraint<IComposeNowValueConstraint<GFunctions, IGenericObserverPipe>>;
export declare type IObserverComposeReturn<// generics
GFunctions extends readonly IGenericObserverPipe[], GObserver extends IGenericObserver> = IInferComposeNowReturn<GFunctions, GObserver>;
export declare function composeObserver<// generics
GFunctions extends IObserverComposeConstraint<GFunctions>, GObserver extends IObserverComposeValueConstraint<GFunctions>>(fns: GFunctions, Observer: GObserver): IObserverComposeReturn<GFunctions, GObserver>;
export {};
