import type { CypherEnvironment } from "../Environment";
import type { Pattern } from "../index";
import type { PathAssign } from "../pattern/PathAssign";
import { Clause } from "./Clause";
import { WithCreate } from "./mixins/clauses/WithCreate";
import { WithFilter } from "./mixins/clauses/WithFilter";
import { WithFinish } from "./mixins/clauses/WithFinish";
import { WithNext } from "./mixins/clauses/WithNext";
import { WithLet } from "./mixins/clauses/WithLet";
import { WithMerge } from "./mixins/clauses/WithMerge";
import { WithReturn } from "./mixins/clauses/WithReturn";
import { WithWith } from "./mixins/clauses/WithWith";
import { WithDelete } from "./mixins/sub-clauses/WithDelete";
import { WithOrder } from "./mixins/sub-clauses/WithOrder";
import { WithSetRemove } from "./mixins/sub-clauses/WithSetRemove";
import type { OnCreateParam } from "./sub-clauses/OnCreate";
export interface Merge extends WithReturn, WithSetRemove, WithDelete, WithWith, WithCreate, WithFinish, WithOrder, WithLet, WithFilter, WithMerge, WithNext {
}
/**
 * @see {@link https://neo4j.com/docs/cypher-manual/current/clauses/merge/ | Cypher Documentation}
 * @group Clauses
 */
export declare class Merge extends Clause {
    private readonly pattern;
    private readonly onCreateClause;
    private readonly onMatchClause;
    constructor(pattern: Pattern | PathAssign<Pattern>);
    onCreateSet(...onCreateParams: OnCreateParam[]): this;
    onMatchSet(...onMatchParams: OnCreateParam[]): this;
    /** @internal */
    getCypher(env: CypherEnvironment): string;
}
