type
test.Mocked
type Mocked<T> = T extends new (...args: infer Args) => infer Instance ? Mock<(...args: Args) => Mocked<Instance>> & { prototype: Mocked<Instance> } & { [K in Exclude<keyof T, 'prototype'>]: Mocked<T[K]> } : T extends (...args: any[]) => any ? Mock<T> & { [K in keyof T]: Mocked<T[K]> } : T extends object ? { [K in keyof T]: Mocked<T[K]> } : T
T with every nested function and class typed as a Mock.