type OverloadProps = Pick; type OverloadUnionRecursive = TOverload extends (...args: infer TArgs) => infer TReturn ? TPartialOverload extends TOverload ? never : OverloadUnionRecursive TReturn) & OverloadProps> | ((...args: TArgs) => TReturn) : never; type OverloadUnion any> = Exclude never) & TOverload>, TOverload extends () => never ? never : () => never>; export type OverloadParameters any> = Parameters>; export {};