import Cypher from "@neo4j/cypher-builder";
import type { ConcreteEntityAdapter } from "../../../../schema-model/entity/model-adapters/ConcreteEntityAdapter";
import type { RelationshipAdapter } from "../../../../schema-model/relationship/model-adapters/RelationshipAdapter";
import type { QueryASTContext } from "../QueryASTContext";
import type { QueryASTNode } from "../QueryASTNode";
import type { Filter } from "../filters/Filter";
import type { AuthorizationFilters } from "../filters/authorization-filters/AuthorizationFilters";
import type { InputField } from "../input-fields/InputField";
import type { SelectionPattern } from "../selection/SelectionPattern/SelectionPattern";
import type { ReadOperation } from "./ReadOperation";
import { MutationOperation, type OperationTranspileResult } from "./operations";
export declare class ConnectOperation extends MutationOperation {
    readonly target: ConcreteEntityAdapter;
    readonly relationship: RelationshipAdapter;
    private selectionPattern;
    protected readonly authFilters: AuthorizationFilters[];
    projectionOperations: ReadOperation[];
    readonly inputFields: Map<string, InputField>;
    private filters;
    private nestedContext;
    constructor({ target, relationship, selectionPattern, }: {
        target: ConcreteEntityAdapter;
        selectionPattern: SelectionPattern;
        relationship: RelationshipAdapter;
    });
    getChildren(): QueryASTNode[];
    print(): string;
    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;
    addFilters(...filters: Filter[]): void;
    addProjectionOperations(operations: ReadOperation[]): void;
    getAuthorizationSubqueries(_context: QueryASTContext): Cypher.Clause[];
    transpile(context: QueryASTContext): OperationTranspileResult;
    private getProjectionClause;
    private getAuthorizationClauses;
    private getAuthorizationClausesAfter;
    private transpileAuthClauses;
}
//# sourceMappingURL=ConnectOperation.d.ts.map