import { IEntityServiceResponse } from "./entity.utils.interface"; export declare enum AggregationOperation { SUM = "sum", MAX = "max", MIN = "min", COUNT = "count", AVG = "avg" } export declare enum RetainEntities { YES = "yes", NO = "no" } export type NumericKeys = { [K in keyof T]: T[K] extends number ? K : never; }[keyof T]; export type AggregationFields = { [K in NumericKeys as `sum_${string & K}`]?: number; } & { [K in NumericKeys as `avg_${string & K}`]?: number; } & { [K in keyof T as `max_${string & K}`]?: number; } & { [K in keyof T as `min_${string & K}`]?: number; } & { [K in keyof T as `count_${string & K}`]?: number; }; export interface IEntityAggregationConfig { retainEntities: boolean; groupingBy: (keyof T)[]; sum?: NumericKeys[]; max?: (keyof T)[]; min?: (keyof T)[]; count?: (keyof T)[]; avg?: NumericKeys[]; } export interface IBaseEntityServiceResponseWithAggregation { baseEntities: (T & AggregationFields)[] | T[]; relatedEntities?: IEntityServiceResponse; }