SuggestNarrowedModel type
type SuggestNarrowedModel<TModel, TFields> = () => (
T extends TModel ? true : false
) extends () => T extends never ? true : false
? TModel
: () => (T extends TModel ? true : false) extends () => T extends object
? true
: false
? TModel
: () => (T extends TFields ? true : false) extends () => T extends never
? true
: false
? keyof ExtractDocumentKey<TModel> extends never
? TModel
: ExtractDocumentKey<TModel>
: TFields extends SelectFields<TModel>
? NarrowedModel<TModel, TFields>
: never