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