import type { Composable } from '../types.js'; declare namespace Internal { type IncompatibleArguments = { 'Incompatible arguments ': true; }; type IsIncompatible = Internal.CommonSubType extends IncompatibleArguments ? true : false; type FailToCompose = IncompatibleArguments & { argument1: A; argument2: B; }; type AnyFn = (...args: any[]) => any; type Prettify = { [K in keyof T]: T[K]; } & {}; type IsNever = (() => T extends A ? 1 : 2) extends (() => T extends never ? 1 : 2) ? true : false; type ApplyArgumentsToFns = Fns extends [Composable<(...a: any[]) => infer OA>, ...infer restA] ? ApplyArgumentsToFns OA> ]> : Output; type UnionToTuple = ((T extends any ? (t: T) => T : never) extends infer U ? (U extends any ? (u: U) => any : never) extends (v: infer V) => any ? V : never : never) extends (_: any) => infer W ? [...UnionToTuple>, W] : []; type Keys> = UnionToTuple; type RecordValuesFromKeysTuple, K extends unknown[], ValuesTuple extends unknown[] = []> = K extends [infer Head, ...infer rest] ? Head extends string ? rest extends string[] ? RecordValuesFromKeysTuple : never : ValuesTuple : ValuesTuple; type Zip = {}> = K extends [infer HeadK, ...infer restK] ? V extends [infer HeadV, ...infer restV] ? HeadK extends string ? restK extends string[] ? restV extends unknown[] ? Prettify> : V : never : never : never : O; type EveryElementTakes = T extends [ infer HEAD, ...infer TAIL ] ? U extends HEAD ? EveryElementTakes : FailToCompose : true; type SubtypesTuple = TupleA extends [] ? [...Output, ...TupleB] : TupleB extends [] ? [...Output, ...TupleA] : TupleA extends [infer headA, ...infer restA] ? TupleB extends [infer headB, ...infer restB] ? IsIncompatible extends true ? FailToCompose : SubtypesTuple]> : TupleB extends Partial<[infer headPartial, ...infer restPartial]> ? IsIncompatible extends true ? FailToCompose : SubtypesTuple, [ ...Output, CommonSubType> ]> : never : TupleB extends [infer headBNoA, ...infer restB] ? TupleA extends Partial<[infer headPartial, ...infer restPartial]> ? IsIncompatible extends true ? FailToCompose : SubtypesTuple, [ ...Output, CommonSubType> ]> : never : TupleA extends Partial<[infer headAPartial, ...infer restAPartial]> ? TupleB extends Partial<[infer headBPartial, ...infer restBPartial]> ? IsIncompatible extends true ? SubtypesTuple, Partial, [ ...Output, ...Partial<[undefined]> ]> : SubtypesTuple, Partial, [ ...Output, ...Partial<[CommonSubType]> ]> : never : never; type CommonSubType = [A] extends [B] ? A : [B] extends [A] ? B : A extends { 'Incompatible arguments ': true; } ? A : B extends { 'Incompatible arguments ': true; } ? B : A extends Record ? B extends Record ? Prettify : FailToCompose : FailToCompose; type Composables | Array> = { [K in keyof Fns]: Composable>; }; } export type { Internal }; //# sourceMappingURL=types.d.ts.map