/** * @since 2.0.0 */ /** * @since 2.0.0 */ export declare const unifySymbol: unique symbol; /** * @since 2.0.0 */ export type unifySymbol = typeof unifySymbol; /** * @since 2.0.0 */ export declare const typeSymbol: unique symbol; /** * @since 2.0.0 */ export type typeSymbol = typeof typeSymbol; /** * @since 2.0.0 */ export declare const ignoreSymbol: unique symbol; /** * @since 2.0.0 */ export type ignoreSymbol = typeof ignoreSymbol; type MaybeReturn = F extends () => infer R ? R : NonNullable; type Values = X extends [infer A, infer Ignore] ? Exclude extends infer k ? k extends keyof A ? MaybeReturn : never : never : never; type Ignore = X extends { [ignoreSymbol]?: infer Obj; } ? keyof NonNullable : never; type ExtractTypes = X extends { [typeSymbol]?: infer _Type; [unifySymbol]?: infer _Unify; } ? [NonNullable<_Unify>, Ignore] : never; type FilterIn = A extends any ? typeSymbol extends keyof A ? A : never : never; type FilterOut = A extends any ? typeSymbol extends keyof A ? never : A : never; /** * @since 2.0.0 */ export type Unify = Values & { [typeSymbol]: A; })>> extends infer Z ? Z | Exclude | FilterOut : never; /** * @since 2.0.0 */ export declare const unify: { /** * @since 2.0.0 */ , Args2 extends Array, Args3 extends Array, Args4 extends Array, Args5 extends Array, T>(x: (...args: Args) => (...args: Args2) => (...args: Args3) => (...args: Args4) => (...args: Args5) => T): (...args: Args) => (...args: Args2) => (...args: Args3) => (...args: Args4) => (...args: Args5) => Unify; /** * @since 2.0.0 */ , Args2 extends Array, Args3 extends Array, Args4 extends Array, T>(x: (...args: Args) => (...args: Args2) => (...args: Args3) => (...args: Args4) => T): (...args: Args) => (...args: Args2) => (...args: Args3) => (...args: Args4) => Unify; /** * @since 2.0.0 */ , Args2 extends Array, Args3 extends Array, T>(x: (...args: Args) => (...args: Args2) => (...args: Args3) => T): (...args: Args) => (...args: Args2) => (...args: Args3) => Unify; /** * @since 2.0.0 */ , Args2 extends Array, T>(x: (...args: Args) => (...args: Args2) => T): (...args: Args) => (...args: Args2) => Unify; /** * @since 2.0.0 */ , T>(x: (...args: Args) => T): (...args: Args) => Unify; /** * @since 2.0.0 */ (x: T): Unify; }; export {}; //# sourceMappingURL=Unify.d.ts.map