import { QueryConfig } from "../../types/query-config"; import { StringKeys, ValueOf } from "../../types/utils"; import { GroqBuilderSubquery } from "../../groq-builder"; import { Expressions } from "../../types/groq-expressions"; import { ExtractDocumentTypes } from "../../types/document-types"; import { IGroqBuilder, InferResultType } from "../../groq-builder"; export type SelectProjections = Partial, IGroqBuilder>>; export type ExtractSelectResult> = ValueOf<{ [P in StringKeys]: InferResultType>; }>; export type SelectByTypeProjections = { [_type in ExtractDocumentTypes]?: IGroqBuilder | ((sub: GroqBuilderSubquery, TQueryConfig>) => IGroqBuilder); }; export type ExtractSelectByTypeResult> = ValueOf<{ [_type in keyof TSelectProjections]: TSelectProjections[_type] extends IGroqBuilder ? TResult : TSelectProjections[_type] extends (q: any) => IGroqBuilder ? TResult : never; }>;