export type AcceptPartialUnion = T | any; export type Tail = ((...args: T) => void) extends (head: any, ...tail: infer U) => any ? U : never; export type UnionToIntersection = (U extends never ? never : (arg: U) => never) extends (arg: infer I) => void ? I : never; type StrictExcludeInner = 0 extends (U extends T ? [T] extends [U] ? 0 : never : never) ? never : T; export type StrictExclude = T extends unknown ? StrictExcludeInner : never; export type UnionToTuple = UnionToIntersection T> extends (_: never) => infer W ? [...UnionToTuple>, W] : []; export type FilterMatch = T extends [infer Head, ...infer _Tail] ? ([Head] extends [V] ? [Head, ...FilterMatch<_Tail, V>] : FilterMatch<_Tail, V>) : []; export type CanAssignToAnyOf = FilterMatch, Requires> extends [] ? false : true; export type CanAssignEachTupleElemmentToAnyOf = Requires extends [infer Head, ...infer _Tail] ? CanAssignToAnyOf extends true ? (_Tail extends [] ? true : CanAssignEachTupleElemmentToAnyOf) : false : false; export type CanAssignEachToAnyOf = CanAssignEachTupleElemmentToAnyOf>; export type CanAssignSignal = CanAssignEachToAnyOf; type ReplaceTupleTypes = { [K in keyof T]: U; }; export type FilterNever = T extends [infer Head, ...infer _Tail] ? ([Head] extends [never] ? FilterNever<_Tail> : [Head, ...FilterNever<_Tail>]) : []; type KeepIfNonAssignable = CanAssignToAnyOf extends false ? T : never; export type GetAllNonValidElements = T extends [infer Head, ...infer _Tail] ? ([KeepIfNonAssignable, ...GetAllNonValidElements<_Tail, Signals>]) : []; export type GetNonAssignableElements = FilterNever, Signals>>; export type GetAssignmentReferences = ReplaceTupleTypes; export {}; //# sourceMappingURL=utility-types.d.ts.map