export type UnionToIntersection = (T extends any ? (k: T) => void : never) extends (k: infer U) => void ? U : never; export type PickMethodsByReturnType = { [k in keyof T as NonNullable extends (...args: any[]) => R ? k : never]: T[k]; };