import { type PipeArguments } from "https://deno.land/x/domain_functions@v2.6.0/src/composable/types.ts";
definition: Fns extends [Composable<(...a: infer PA) => infer OA>, ...infer restA] ? restA extends [Composable<(firstParameter: infer FirstBParameter, ...b: infer PB) => any>] ? IsNever<Awaited<OA>> extends true ? ["Fail to compose, \"never\" does not fit in", FirstBParameter] : Awaited<OA> extends FirstBParameter ? EveryElementTakesUndefined<PB> extends true ? PipeArguments<restA, [...Arguments, Composable<(...a: PA) => OA>]> : EveryElementTakesUndefined<PB> :
[
: [...Arguments, Composable<(...a: PA) => OA>] : never"Fail to compose",
Awaited<OA>,
"does not fit in",
FirstBParameter,
]