import { ProjectionPathEntries } from "../../types/projection-paths"; import { IGroqBuilder } from "../../groq-builder"; export declare namespace CoalesceExpressions { /** * Represents the array of args that can be * passed to the `coalesce` method */ export type CoalesceArgs = ArrayMin2>; type ArrayMin2 = [T, T, ...Array]; type CoalesceArg = keyof ProjectionPathEntries | IGroqBuilder; /** * Extracts the result type from the `coalesce` method */ export type CoalesceResult> = CoalesceValues extends [ ...Array, infer TFinalValue ] ? NonNullable | TFinalValue : never; type CoalesceValues, _PathEntries = ProjectionPathEntries> = { [Index in keyof TExpressions]: CoalesceExpressionValue<_PathEntries, TExpressions[Index]>; }; type CoalesceExpressionValue = TExpression extends IGroqBuilder ? ExpressionResult : TExpression extends keyof PathEntries ? PathEntries[TExpression] : never; export {}; }