export type PrepareOptionsFromClass = { [TKey in keyof T]?: UnboxReturnTypeFromClassItem; }; export type UnboxReturnTypeFromClassItem = /** * Unbox return type from class method. */ T extends (...args: unknown[]) => infer TReturnType ? TReturnType : /** * Unbox return type from class property. */ T extends (infer TReturnType) ? TReturnType : /** * Default branch. Potentially impossible case. */ T;