import type { AggregateOpts, ObjectTypeDefinition, WhereClause } from "@osdk/api";
export declare function createGroupByAggregateOptions<Q extends ObjectTypeDefinition>(propertyKey: string): AggregateOpts<Q>;
export declare function createNullCountAggregateOptions<Q extends ObjectTypeDefinition>(): AggregateOpts<Q>;
/** Shape returned by $groupBy + $count aggregations when iterated. */
export type AggregationGroupResult = Iterable<{
	$group: Record<string, unknown>
	$count?: number
}>;
export declare function createNullWhereClause<Q extends ObjectTypeDefinition>(propertyKey: string): WhereClause<Q>;
/**
* Builds the where clause for a null-count aggregation, combining the
* property null-check with the cross-filter where clause.
*
* The cross-filter clause is only included when it is non-empty. An empty
* `{}` clause inside an `$and` is rejected by the aggregation API, so when no
* cross-filter is active we return the bare null-check predicate.
*/
export declare function createNullCountWhereClause<Q extends ObjectTypeDefinition>(propertyKey: string, crossFilterWhereClause: WhereClause<Q>): WhereClause<Q>;
