import { FlowResult } from './runtime/flowieResult'; import { FlowieContainer } from './container/createFlowieContainer'; import { PreparedFlowie } from './prepared.types'; import { FlowFunctionResult } from './reporter/reporter.types'; export interface Flowie extends FlowieExtender { (parameter: InitialArgument, context?: Context): FlowResult | Promise>; } export interface InitializeFlowie { (flowItem: FlowItem): Flowie; (flowItem1: FlowItem, flowItem2: FlowItem): Flowie; (flowItem1: FlowItem, flowItem2: FlowItem, flowItem3: FlowItem): Flowie; (flowItem1: FlowItem, flowItem2: FlowItem, flowItem3: FlowItem, flowItem4: FlowItem): Flowie; (flowItem1: FlowItem, flowItem2: FlowItem, flowItem3: FlowItem, flowItem4: FlowItem, flowItem5: FlowItem): Flowie; (flowItem1: FlowItem, flowItem2: FlowItem, flowItem3: FlowItem, flowItem4: FlowItem, flowItem5: FlowItem, flowItem6: FlowItem): Flowie; (flowItem1: FlowItem, flowItem2: FlowItem, flowItem3: FlowItem, flowItem4: FlowItem, flowItem5: FlowItem, flowItem6: FlowItem, flowItem7: FlowItem): Flowie; (flowItem1: FlowItem, flowItem2: FlowItem, flowItem3: FlowItem, flowItem4: FlowItem, flowItem5: FlowItem, flowItem6: FlowItem, flowItem7: FlowItem, flowItem8: FlowItem): Flowie; (...flowItemsList: readonly FlowItem[]): Flowie; (flowieContainer: FlowieContainer, preparedFlowie: PreparedFlowie): Flowie; } export interface FlowieExtender { readonly split: SplitFlowFunction; readonly pipe: PipeFlowFunction; } export interface PipeFlowFunction { (flowItem: FlowItem): Flowie; } export interface SplitFlowFunction { (flowItem1: FlowItem, flowItem2: FlowItem): Flowie; (flowItem1: FlowItem, flowItem2: FlowItem, flowItem3: FlowItem): Flowie; (flowItem1: FlowItem, flowItem2: FlowItem, flowItem3: FlowItem, flowItem4: FlowItem): Flowie; (flowItem1: FlowItem, flowItem2: FlowItem, flowItem3: FlowItem, flowItem4: FlowItem, flowItem5: FlowItem): Flowie; (flowItem1: FlowItem, flowItem2: FlowItem, flowItem3: FlowItem, flowItem4: FlowItem, flowItem5: FlowItem, flowItem6: FlowItem): Flowie; (flowItem1: FlowItem, flowItem2: FlowItem, flowItem3: FlowItem, flowItem4: FlowItem, flowItem5: FlowItem, flowItem6: FlowItem, flowItem7: FlowItem): Flowie; (flowItem1: FlowItem, flowItem2: FlowItem, flowItem3: FlowItem, flowItem4: FlowItem, flowItem5: FlowItem, flowItem6: FlowItem, flowItem7: FlowItem, flowItem8: FlowItem): Flowie; (...flowItemsList: readonly FlowItem[]): Flowie; } export declare type FlowItem = FlowFunction | Flowie; export declare type FlowFunction = GeneratorFlowFunction | ((argument: Argument, context: Context) => Promise) | ((argument: Argument, context: Context) => Result); export declare type GeneratorFlowFunction = ((argument: Argument, context: Context) => AsyncGenerator) | ((argument: Argument, context: Context) => Generator); export interface FlowFunctionDetails { readonly name: string; readonly isAsync: boolean; readonly isGenerator: boolean; } export interface FlowFunctionDetailsWithItem extends FlowFunctionDetails { readonly flowFunction: FlowFunction; } export interface FunctionReport { readonly result: Result; readonly functionsReport: ReadonlyMap; } export declare type NoTypedFlowie = Flowie; export declare type Unpacked = T extends Promise ? U : T; export interface RootFlowieCreator { (flowFunction: FlowFunction): Flowie; } export interface FlowieCreator { (flowFunction: FlowFunction, createFlowieRecursion: RootFlowieCreator): Flowie; }