import { IFilteringCriterion, IFilteringCriterionCallback } from "../api/core/filteringApi"; import { QueryActionType, QueryParam } from "./utils"; export declare type Direction = "asc" | "desc"; declare type KeyOfObject = Extract; export interface IAggField { fn: "count" | "min" | "max" | "avg" | "sum"; field: KeyOfObject | "*"; alias?: string; } export interface ICompiledAggField { [key: string]: string; } interface ISort { fields: K[]; direction: Direction; } declare type SortedFields = Array>>; export interface ICompiledQuery { action: QueryActionType; action_resource: string; action_cond: object[]; cond: object[]; outputs: Array; order: SortedFields; range: { limit?: number; offset?: number; }; relations: { [key: string]: Partial>; }; } export declare class Query { fields: Array | IAggField>; limit: number; offset: number; private filteringConditions; private orders; private actionParams; setFilterCriteria(filter: IFilteringCriterion | IFilteringCriterionCallback): void; addSortCondition>(direction: Direction, ...fields: K[]): void; setAction(action: QueryActionType, actionResource: string, filter: IFilteringCriterion | IFilteringCriterionCallback): void; compile(): Partial>; compileToQueryParams(): QueryParam[]; private compileAggregation; } export {};