import { GraphQLInputType } from 'graphql'; import { Field } from '../../model'; import { PreExecQueryParms, QueryNode, SetFieldQueryNode } from '../../query-tree'; import { AnyValue } from '../../utils/utils'; import { CreateRootEntityInputType } from '../create-input-types'; import { FieldContext } from '../query-node-object-type'; import { UpdateInputField } from './input-fields'; export declare abstract class AbstractRelationUpdateInputField implements UpdateInputField { readonly field: Field; readonly name: string; readonly description: string; constructor(field: Field, name: string, description: string); abstract readonly inputType: GraphQLInputType; appliesToMissingFields(): boolean; collectAffectedFields(value: AnyValue, fields: Set, context: FieldContext): void; getProperties(value: AnyValue, context: FieldContext): ReadonlyArray; abstract getStatements(value: AnyValue, idNode: QueryNode, context: FieldContext): ReadonlyArray; } export declare class SetEdgeInputField extends AbstractRelationUpdateInputField { readonly inputType: GraphQLInputType; constructor(field: Field); getStatements(targetID: AnyValue, sourceIDNode: QueryNode): ReadonlyArray; } export declare class AddEdgesInputField extends AbstractRelationUpdateInputField { readonly inputType: GraphQLInputType; constructor(field: Field); getStatements(value: AnyValue, sourceIDNode: QueryNode): ReadonlyArray; } export declare class RemoveEdgesInputField extends AbstractRelationUpdateInputField { readonly inputType: GraphQLInputType; constructor(field: Field); getStatements(value: AnyValue, sourceIDNode: QueryNode): ReadonlyArray; } export declare class CreateAndAddEdgesInputField extends AbstractRelationUpdateInputField { readonly objectInputType: CreateRootEntityInputType; readonly inputType: GraphQLInputType; constructor(field: Field, objectInputType: CreateRootEntityInputType); getStatements(value: AnyValue, sourceIDNode: QueryNode, context: FieldContext): ReadonlyArray; } export declare class CreateAndSetEdgeInputField extends AbstractRelationUpdateInputField { readonly objectInputType: CreateRootEntityInputType; readonly inputType: GraphQLInputType; constructor(field: Field, objectInputType: CreateRootEntityInputType); getStatements(value: AnyValue, sourceIDNode: QueryNode, context: FieldContext): ReadonlyArray; } export declare function isRelationUpdateField(field: UpdateInputField): field is AbstractRelationUpdateInputField;