declare module 'mongoose' { type VirtualPathFunctions = { get?: TVirtualPathFN; set?: TVirtualPathFN; options?: VirtualTypeOptions, DocType>; }; type TVirtualPathFN = >(this: Document & DocType, value: PathType, virtual: VirtualType, doc: Document & DocType) => TReturn; type SchemaOptionsVirtualsPropertyType, TInstanceMethods = {}> = { [K in keyof VirtualPaths]: VirtualPathFunctions extends true ? DocType : any, VirtualPaths[K], TInstanceMethods> }; }