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