import { GroqBuilder } from "../../groq-builder"; import { IsNullable } from "../../types/utils"; import { QueryConfig } from "../../types/query-config"; import { Expressions } from "../../types/groq-expressions"; import { IGroqBuilder } from "../../groq-builder"; declare module "../../groq-builder" { interface GroqBuilderRoot extends CountDefinition { } interface GroqBuilderSubquery extends CountDefinition { } } interface CountDefinition { /** * Wraps the expressions with GROQ's `count(...)` function. * * The `expression` can be either a projection string, or any valid query. * * @example * q.star.filterByType("product").project(product => ({ * // Use a simple projection string: * imageCount: product.count("images[]"), * // Use any complex query: * categoryCount: product.count( * product.star.filterByType("category").filterRaw("references(^._id)") * ), * })); */ count | null>(expression: IGroqBuilder): GroqBuilder extends true ? null : never), TQueryConfig>; /** * Wraps the expressions with GROQ's `count(...)` function. * * The `expression` can be either a projection string, or any valid query. * * @example * q.star.filterByType("product").project(product => ({ * // Use a simple projection string: * imageCount: product.count("images[]"), * // Use any complex query: * categoryCount: product.count( * product.star.filterByType("category").filterRaw("references(^._id)") * ), * })); */ count>(expression: TExpression): GroqBuilder[TExpression]> extends true ? null : never), TQueryConfig>; } export {};