import Cypher from "@neo4j/cypher-builder";
import type { ConcreteEntityAdapter } from "../../../../schema-model/entity/model-adapters/ConcreteEntityAdapter";
import { RelationshipAdapter } from "../../../../schema-model/relationship/model-adapters/RelationshipAdapter";
import { QueryASTContext } from "../QueryASTContext";
import type { QueryASTNode } from "../QueryASTNode";
import type { AuthorizationFilters } from "../filters/authorization-filters/AuthorizationFilters";
import type { InputField } from "../input-fields/InputField";
import type { ReadOperation } from "./ReadOperation";
import type { OperationTranspileResult } from "./operations";
import { MutationOperation } from "./operations";
export declare class UnwindCreateOperation extends MutationOperation {
    readonly inputFields: Map<string, InputField>;
    readonly target: ConcreteEntityAdapter | RelationshipAdapter;
    readonly projectionOperations: ReadOperation[];
    protected readonly authFilters: AuthorizationFilters[];
    private readonly argumentToUnwind;
    private readonly unwindVariable;
    private isNested;
    constructor({ target, argumentToUnwind, }: {
        target: ConcreteEntityAdapter | RelationshipAdapter;
        argumentToUnwind: Cypher.Param | Cypher.Property;
    });
    getChildren(): QueryASTNode[];
    addAuthFilters(...filter: AuthorizationFilters[]): void;
    /**
     * Get and set field methods are utilities to remove duplicate fields between separate inputs
     * TODO: This logic should be handled in the factory.
     */
    getField(key: string, attachedTo: "node" | "relationship"): InputField | undefined;
    addField(field: InputField, attachedTo: "node" | "relationship"): void;
    getCypherVariable(): Cypher.Variable;
    addProjectionOperations(operations: ReadOperation[]): void;
    getAuthorizationSubqueries(_context: QueryASTContext): Cypher.Clause[];
    transpile(context: QueryASTContext): OperationTranspileResult;
    private getMergeClause;
    private getTarget;
    protected getNestedContext(context: QueryASTContext): QueryASTContext;
    private getAuthorizationClauses;
    private transpileAuthClauses;
    private getProjectionClause;
}
//# sourceMappingURL=UnwindCreateOperation.d.ts.map