import Cypher from "@neo4j/cypher-builder";
import type { InterfaceEntityAdapter } from "../../../../../schema-model/entity/model-adapters/InterfaceEntityAdapter";
import type { UnionEntityAdapter } from "../../../../../schema-model/entity/model-adapters/UnionEntityAdapter";
import { QueryASTContext } from "../../QueryASTContext";
import type { QueryASTNode } from "../../QueryASTNode";
import type { AggregationField } from "../../fields/aggregation-fields/AggregationField";
import type { Filter } from "../../filters/Filter";
import type { AuthorizationFilters } from "../../filters/authorization-filters/AuthorizationFilters";
import type { OperationTranspileResult } from "../operations";
import { Operation } from "../operations";
import type { CompositeAggregationPartial } from "./CompositeAggregationPartial";
export declare class CompositeAggregationOperation extends Operation {
    private children;
    protected directed: boolean;
    fields: AggregationField[];
    nodeFields: AggregationField[];
    edgeFields: AggregationField[];
    private entity;
    protected authFilters: AuthorizationFilters[];
    protected filters: Filter[];
    private addWith;
    private aggregationProjectionMap;
    private nodeMap;
    private edgeMap;
    constructor({ compositeEntity, children, directed, }: {
        compositeEntity: InterfaceEntityAdapter | UnionEntityAdapter;
        children: CompositeAggregationPartial[];
        directed?: boolean;
    });
    getChildren(): QueryASTNode[];
    transpile(context: QueryASTContext): OperationTranspileResult;
    setFields(fields: AggregationField[]): void;
    addFilters(...filters: Filter[]): void;
    addAuthFilters(...filter: AuthorizationFilters[]): void;
    setNodeFields(fields: AggregationField[]): void;
    setEdgeFields(fields: AggregationField[]): void;
    protected getFieldProjectionClause(target: Cypher.Variable, returnVariable: Cypher.Variable, field: AggregationField): Cypher.Clause;
    private transpileAggregationOperation;
    private getPredicates;
    private getAuthFilterPredicate;
    private createSubqueries;
    private createWithClause;
    private createNestedSubquery;
}
//# sourceMappingURL=CompositeAggregationOperation.d.ts.map