export type ConcreteClass = T extends abstract new (...args: infer A) => infer R ? { new (...args: A): R; } & Omit : never;