import { GraphQLInputType } from 'graphql'; import { Field } from '../../model'; import { PreExecQueryParms, QueryNode } from '../../query-tree'; import { AnyValue, PlainObject } from '../../utils/utils'; import { FieldContext } from '../query-node-object-type'; import { CreateInputField, FieldValidationContext } from './input-fields'; import { CreateRootEntityInputType } from './input-types'; export declare abstract class AbstractRelationCreateInputField implements CreateInputField { 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): void; getProperties(value: AnyValue): PlainObject; validateInContext(value: AnyValue, context: FieldValidationContext): void; abstract getStatements(value: AnyValue, idNode: QueryNode, context: FieldContext): ReadonlyArray; } export declare class SetEdgeCreateInputField extends AbstractRelationCreateInputField { readonly inputType: GraphQLInputType; constructor(field: Field); getStatements(targetID: AnyValue, sourceIDNode: QueryNode): ReadonlyArray; } export declare class AddEdgesCreateInputField extends AbstractRelationCreateInputField { readonly inputType: GraphQLInputType; constructor(field: Field); getStatements(value: AnyValue, sourceIDNode: QueryNode): ReadonlyArray; } export declare class CreateAndAddEdgesCreateInputField extends AbstractRelationCreateInputField { readonly objectInputType: CreateRootEntityInputType; readonly inputType: GraphQLInputType; constructor(field: Field, objectInputType: CreateRootEntityInputType); getStatements(value: AnyValue, sourceIDNode: QueryNode, context: FieldContext): ReadonlyArray; } export declare class CreateAndSetEdgeCreateInputField extends AbstractRelationCreateInputField { readonly objectInputType: CreateRootEntityInputType; readonly inputType: GraphQLInputType; constructor(field: Field, objectInputType: CreateRootEntityInputType); getStatements(value: AnyValue, sourceIDNode: QueryNode, context: FieldContext): ReadonlyArray; } export declare function isRelationCreateField(field: CreateInputField): field is AbstractRelationCreateInputField;