packages feed

hydra-ext-0.17.4: src/main/haskell/Hydra/Graphql/Syntax.hs

-- Note: this is an automatically generated file. Do not edit.

-- | A GraphQL model. Based on the (extended) BNF at:
-- |   https://spec.graphql.org/draft/#sec-Appendix-Grammar-Summary

module Hydra.Graphql.Syntax where

import qualified Hydra.Core as Core
import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)
import qualified Data.Scientific as Sci

-- | A GraphQL field alias, immediately followed by a colon.
data Alias =
  AliasName Name |
  AliasColon
  deriving (Eq, Ord, Read, Show)

_Alias = Core.Name "hydra.graphql.syntax.Alias"

_Alias_Name = Core.Name "Name"

_Alias_Colon = Core.Name "Colon"

-- | A single GraphQL argument, consisting of a name and a value.
data Argument =
  Argument {
    argumentName :: Name,
    argumentValue :: Value}
  deriving (Eq, Ord, Read, Show)

_Argument = Core.Name "hydra.graphql.syntax.Argument"

_Argument_Name = Core.Name "Name"

_Argument_Value = Core.Name "Value"

-- | A parenthesized list of GraphQL arguments.
newtype Arguments =
  Arguments {
    unArguments :: [Argument]}
  deriving (Eq, Ord, Read, Show)

_Arguments = Core.Name "hydra.graphql.syntax.Arguments"

-- | A parenthesized list of GraphQL input value definitions for a field's arguments.
newtype ArgumentsDefinition =
  ArgumentsDefinition {
    unArgumentsDefinition :: [InputValueDefinition]}
  deriving (Eq, Ord, Read, Show)

_ArgumentsDefinition = Core.Name "hydra.graphql.syntax.ArgumentsDefinition"

-- | A GraphQL boolean literal, either true or false.
data BooleanValue =
  BooleanValueTrue |
  BooleanValueFalse
  deriving (Eq, Ord, Read, Show)

_BooleanValue = Core.Name "hydra.graphql.syntax.BooleanValue"

_BooleanValue_True = Core.Name "True"

_BooleanValue_False = Core.Name "False"

-- | A default value for a GraphQL variable or input field, introduced by an equals sign.
newtype DefaultValue =
  DefaultValue {
    unDefaultValue :: Value}
  deriving (Eq, Ord, Read, Show)

_DefaultValue = Core.Name "hydra.graphql.syntax.DefaultValue"

-- | A top-level GraphQL definition, either executable or part of the type system.
data Definition =
  DefinitionExecutable ExecutableDefinition |
  DefinitionTypeSystem TypeSystemDefinitionOrExtension
  deriving (Eq, Ord, Read, Show)

_Definition = Core.Name "hydra.graphql.syntax.Definition"

_Definition_executable = Core.Name "executable"

_Definition_typeSystem = Core.Name "typeSystem"

-- | An optional string description preceding a GraphQL type system definition.
newtype Description =
  Description {
    unDescription :: StringValue}
  deriving (Eq, Ord, Read, Show)

_Description = Core.Name "hydra.graphql.syntax.Description"

-- | A single GraphQL directive, consisting of a name and optional arguments.
data Directive =
  Directive {
    directiveName :: Name,
    directiveArguments :: (Maybe Arguments)}
  deriving (Eq, Ord, Read, Show)

_Directive = Core.Name "hydra.graphql.syntax.Directive"

_Directive_Name = Core.Name "Name"

_Directive_Arguments = Core.Name "Arguments"

-- | A GraphQL directive definition, giving its name, arguments, repeatability, and locations.
data DirectiveDefinition =
  DirectiveDefinition {
    directiveDefinitionDescription :: (Maybe Description),
    directiveDefinitionName :: Name,
    directiveDefinitionArgumentsDefinition :: (Maybe ArgumentsDefinition),
    directiveDefinitionRepeatable :: (Maybe ()),
    directiveDefinitionDirectiveLocations :: DirectiveLocations}
  deriving (Eq, Ord, Read, Show)

_DirectiveDefinition = Core.Name "hydra.graphql.syntax.DirectiveDefinition"

_DirectiveDefinition_Description = Core.Name "Description"

_DirectiveDefinition_Name = Core.Name "Name"

_DirectiveDefinition_ArgumentsDefinition = Core.Name "ArgumentsDefinition"

_DirectiveDefinition_Repeatable = Core.Name "Repeatable"

_DirectiveDefinition_DirectiveLocations = Core.Name "DirectiveLocations"

-- | A location at which a GraphQL directive may be applied, either executable or type-system.
data DirectiveLocation =
  DirectiveLocationExecutable ExecutableDirectiveLocation |
  DirectiveLocationTypeSystem TypeSystemDirectiveLocation
  deriving (Eq, Ord, Read, Show)

_DirectiveLocation = Core.Name "hydra.graphql.syntax.DirectiveLocation"

_DirectiveLocation_executable = Core.Name "executable"

_DirectiveLocation_typeSystem = Core.Name "typeSystem"

-- | A pipe-separated list of GraphQL directive locations.
data DirectiveLocations =
  DirectiveLocationsSeq DirectiveLocationsSequence |
  DirectiveLocationsSeq2 DirectiveLocationsSequence2
  deriving (Eq, Ord, Read, Show)

_DirectiveLocations = Core.Name "hydra.graphql.syntax.DirectiveLocations"

_DirectiveLocations_seq = Core.Name "seq"

_DirectiveLocations_seq2 = Core.Name "seq2"

-- | A non-empty DirectiveLocations sequence with a leading list of locations.
data DirectiveLocationsSequence =
  DirectiveLocationsSequence {
    directiveLocationsSequenceDirectiveLocations :: DirectiveLocations,
    directiveLocationsSequenceDirectiveLocation :: DirectiveLocation}
  deriving (Eq, Ord, Read, Show)

_DirectiveLocationsSequence = Core.Name "hydra.graphql.syntax.DirectiveLocationsSequence"

_DirectiveLocationsSequence_DirectiveLocations = Core.Name "DirectiveLocations"

_DirectiveLocationsSequence_DirectiveLocation = Core.Name "DirectiveLocation"

-- | The base case of a DirectiveLocations sequence: a single, optionally pipe-prefixed location.
data DirectiveLocationsSequence2 =
  DirectiveLocationsSequence2 {
    directiveLocationsSequence2Or :: (Maybe ()),
    directiveLocationsSequence2DirectiveLocation :: DirectiveLocation}
  deriving (Eq, Ord, Read, Show)

_DirectiveLocationsSequence2 = Core.Name "hydra.graphql.syntax.DirectiveLocationsSequence2"

_DirectiveLocationsSequence2_Or = Core.Name "Or"

_DirectiveLocationsSequence2_DirectiveLocation = Core.Name "DirectiveLocation"

-- | A list of GraphQL directives applied to a definition or selection.
newtype Directives =
  Directives {
    unDirectives :: [Directive]}
  deriving (Eq, Ord, Read, Show)

_Directives = Core.Name "hydra.graphql.syntax.Directives"

-- | A GraphQL document, consisting of a list of definitions.
newtype Document =
  Document {
    unDocument :: [Definition]}
  deriving (Eq, Ord, Read, Show)

_Document = Core.Name "hydra.graphql.syntax.Document"

-- | A GraphQL enum type definition, giving its name, directives, and enum values.
data EnumTypeDefinition =
  EnumTypeDefinition {
    enumTypeDefinitionDescription :: (Maybe Description),
    enumTypeDefinitionName :: Name,
    enumTypeDefinitionDirectives :: (Maybe Directives),
    enumTypeDefinitionEnumValuesDefinition :: (Maybe EnumValuesDefinition)}
  deriving (Eq, Ord, Read, Show)

_EnumTypeDefinition = Core.Name "hydra.graphql.syntax.EnumTypeDefinition"

_EnumTypeDefinition_Description = Core.Name "Description"

_EnumTypeDefinition_Name = Core.Name "Name"

_EnumTypeDefinition_Directives = Core.Name "Directives"

_EnumTypeDefinition_EnumValuesDefinition = Core.Name "EnumValuesDefinition"

-- | An extension of a GraphQL enum type, either adding enum values or only directives.
data EnumTypeExtension =
  EnumTypeExtensionSeq EnumTypeExtensionSequence |
  EnumTypeExtensionSeq2 EnumTypeExtensionSequence2
  deriving (Eq, Ord, Read, Show)

_EnumTypeExtension = Core.Name "hydra.graphql.syntax.EnumTypeExtension"

_EnumTypeExtension_seq = Core.Name "seq"

_EnumTypeExtension_seq2 = Core.Name "seq2"

-- | An enum type extension that adds new enum values, with optional directives.
data EnumTypeExtensionSequence =
  EnumTypeExtensionSequence {
    enumTypeExtensionSequenceName :: Name,
    enumTypeExtensionSequenceDirectives :: (Maybe Directives),
    enumTypeExtensionSequenceEnumValuesDefinition :: EnumValuesDefinition}
  deriving (Eq, Ord, Read, Show)

_EnumTypeExtensionSequence = Core.Name "hydra.graphql.syntax.EnumTypeExtensionSequence"

_EnumTypeExtensionSequence_Name = Core.Name "Name"

_EnumTypeExtensionSequence_Directives = Core.Name "Directives"

_EnumTypeExtensionSequence_EnumValuesDefinition = Core.Name "EnumValuesDefinition"

-- | An enum type extension consisting of directives only, with no new enum values.
data EnumTypeExtensionSequence2 =
  EnumTypeExtensionSequence2 {
    enumTypeExtensionSequence2Name :: Name,
    enumTypeExtensionSequence2Directives :: Directives}
  deriving (Eq, Ord, Read, Show)

_EnumTypeExtensionSequence2 = Core.Name "hydra.graphql.syntax.EnumTypeExtensionSequence2"

_EnumTypeExtensionSequence2_Name = Core.Name "Name"

_EnumTypeExtensionSequence2_Directives = Core.Name "Directives"

-- | A GraphQL enum value, represented as a name (excluding true, false, and null).
newtype EnumValue =
  EnumValue {
    unEnumValue :: Name}
  deriving (Eq, Ord, Read, Show)

_EnumValue = Core.Name "hydra.graphql.syntax.EnumValue"

-- | A single value definition within a GraphQL enum type, with optional description and directives.
data EnumValueDefinition =
  EnumValueDefinition {
    enumValueDefinitionDescription :: (Maybe Description),
    enumValueDefinitionEnumValue :: EnumValue,
    enumValueDefinitionDirectives :: (Maybe Directives)}
  deriving (Eq, Ord, Read, Show)

_EnumValueDefinition = Core.Name "hydra.graphql.syntax.EnumValueDefinition"

_EnumValueDefinition_Description = Core.Name "Description"

_EnumValueDefinition_EnumValue = Core.Name "EnumValue"

_EnumValueDefinition_Directives = Core.Name "Directives"

-- | The braced list of enum value definitions in a GraphQL enum type.
newtype EnumValuesDefinition =
  EnumValuesDefinition {
    unEnumValuesDefinition :: [EnumValueDefinition]}
  deriving (Eq, Ord, Read, Show)

_EnumValuesDefinition = Core.Name "hydra.graphql.syntax.EnumValuesDefinition"

-- | A GraphQL executable definition, either an operation or a fragment definition.
data ExecutableDefinition =
  ExecutableDefinitionOperation OperationDefinition |
  ExecutableDefinitionFragment FragmentDefinition
  deriving (Eq, Ord, Read, Show)

_ExecutableDefinition = Core.Name "hydra.graphql.syntax.ExecutableDefinition"

_ExecutableDefinition_operation = Core.Name "operation"

_ExecutableDefinition_fragment = Core.Name "fragment"

-- | A directive location valid on GraphQL executable definitions (queries, fields, fragments, etc.).
data ExecutableDirectiveLocation =
  ExecutableDirectiveLocationQUERY |
  ExecutableDirectiveLocationMUTATION |
  ExecutableDirectiveLocationSUBSCRIPTION |
  ExecutableDirectiveLocationFIELD |
  ExecutableDirectiveLocationFRAGMENT_DEFINITION |
  ExecutableDirectiveLocationFRAGMENT_SPREAD |
  ExecutableDirectiveLocationINLINE_FRAGMENT |
  ExecutableDirectiveLocationVARIABLE_DEFINITION
  deriving (Eq, Ord, Read, Show)

_ExecutableDirectiveLocation = Core.Name "hydra.graphql.syntax.ExecutableDirectiveLocation"

_ExecutableDirectiveLocation_QUERY = Core.Name "QUERY"

_ExecutableDirectiveLocation_MUTATION = Core.Name "MUTATION"

_ExecutableDirectiveLocation_SUBSCRIPTION = Core.Name "SUBSCRIPTION"

_ExecutableDirectiveLocation_FIELD = Core.Name "FIELD"

_ExecutableDirectiveLocation_FRAGMENT_DEFINITION = Core.Name "FRAGMENT_DEFINITION"

_ExecutableDirectiveLocation_FRAGMENT_SPREAD = Core.Name "FRAGMENT_SPREAD"

_ExecutableDirectiveLocation_INLINE_FRAGMENT = Core.Name "INLINE_FRAGMENT"

_ExecutableDirectiveLocation_VARIABLE_DEFINITION = Core.Name "VARIABLE_DEFINITION"

-- | A GraphQL document consisting only of executable definitions.
newtype ExecutableDocument =
  ExecutableDocument {
    unExecutableDocument :: [ExecutableDefinition]}
  deriving (Eq, Ord, Read, Show)

_ExecutableDocument = Core.Name "hydra.graphql.syntax.ExecutableDocument"

-- | A GraphQL field selection, with optional alias, arguments, directives, and sub-selection set.
data Field =
  Field {
    fieldAlias :: (Maybe Alias),
    fieldName :: Name,
    fieldArguments :: (Maybe Arguments),
    fieldDirectives :: (Maybe Directives),
    fieldSelectionSet :: (Maybe SelectionSet)}
  deriving (Eq, Ord, Read, Show)

_Field = Core.Name "hydra.graphql.syntax.Field"

_Field_Alias = Core.Name "Alias"

_Field_Name = Core.Name "Name"

_Field_Arguments = Core.Name "Arguments"

_Field_Directives = Core.Name "Directives"

_Field_SelectionSet = Core.Name "SelectionSet"

-- | A field definition within a GraphQL object or interface type.
data FieldDefinition =
  FieldDefinition {
    fieldDefinitionDescription :: (Maybe Description),
    fieldDefinitionName :: Name,
    fieldDefinitionArgumentsDefinition :: (Maybe ArgumentsDefinition),
    fieldDefinitionType :: Type,
    fieldDefinitionDirectives :: (Maybe Directives)}
  deriving (Eq, Ord, Read, Show)

_FieldDefinition = Core.Name "hydra.graphql.syntax.FieldDefinition"

_FieldDefinition_Description = Core.Name "Description"

_FieldDefinition_Name = Core.Name "Name"

_FieldDefinition_ArgumentsDefinition = Core.Name "ArgumentsDefinition"

_FieldDefinition_Type = Core.Name "Type"

_FieldDefinition_Directives = Core.Name "Directives"

-- | The braced list of field definitions in a GraphQL object or interface type.
newtype FieldsDefinition =
  FieldsDefinition {
    unFieldsDefinition :: [FieldDefinition]}
  deriving (Eq, Ord, Read, Show)

_FieldsDefinition = Core.Name "hydra.graphql.syntax.FieldsDefinition"

-- | A GraphQL floating-point literal.
newtype FloatValue =
  FloatValue {
    unFloatValue :: String}
  deriving (Eq, Ord, Read, Show)

_FloatValue = Core.Name "hydra.graphql.syntax.FloatValue"

-- | A GraphQL fragment definition, naming a type condition and a selection set.
data FragmentDefinition =
  FragmentDefinition {
    fragmentDefinitionFragmentName :: FragmentName,
    fragmentDefinitionTypeCondition :: TypeCondition,
    fragmentDefinitionDirectives :: (Maybe Directives),
    fragmentDefinitionSelectionSet :: SelectionSet}
  deriving (Eq, Ord, Read, Show)

_FragmentDefinition = Core.Name "hydra.graphql.syntax.FragmentDefinition"

_FragmentDefinition_FragmentName = Core.Name "FragmentName"

_FragmentDefinition_TypeCondition = Core.Name "TypeCondition"

_FragmentDefinition_Directives = Core.Name "Directives"

_FragmentDefinition_SelectionSet = Core.Name "SelectionSet"

-- | The name of a GraphQL fragment (any name other than "on").
newtype FragmentName =
  FragmentName {
    unFragmentName :: Name}
  deriving (Eq, Ord, Read, Show)

_FragmentName = Core.Name "hydra.graphql.syntax.FragmentName"

-- | A GraphQL fragment spread, referencing a named fragment with optional directives.
data FragmentSpread =
  FragmentSpread {
    fragmentSpreadFragmentName :: FragmentName,
    fragmentSpreadDirectives :: (Maybe Directives)}
  deriving (Eq, Ord, Read, Show)

_FragmentSpread = Core.Name "hydra.graphql.syntax.FragmentSpread"

_FragmentSpread_FragmentName = Core.Name "FragmentName"

_FragmentSpread_Directives = Core.Name "Directives"

-- | A clause declaring the interfaces implemented by a GraphQL object or interface type.
data ImplementsInterfaces =
  ImplementsInterfacesSeq ImplementsInterfacesSequence |
  ImplementsInterfacesSeq2 ImplementsInterfacesSequence2
  deriving (Eq, Ord, Read, Show)

_ImplementsInterfaces = Core.Name "hydra.graphql.syntax.ImplementsInterfaces"

_ImplementsInterfaces_seq = Core.Name "seq"

_ImplementsInterfaces_seq2 = Core.Name "seq2"

-- | A non-empty ImplementsInterfaces list with a leading list of interfaces.
data ImplementsInterfacesSequence =
  ImplementsInterfacesSequence {
    implementsInterfacesSequenceImplementsInterfaces :: ImplementsInterfaces,
    implementsInterfacesSequenceNamedType :: NamedType}
  deriving (Eq, Ord, Read, Show)

_ImplementsInterfacesSequence = Core.Name "hydra.graphql.syntax.ImplementsInterfacesSequence"

_ImplementsInterfacesSequence_ImplementsInterfaces = Core.Name "ImplementsInterfaces"

_ImplementsInterfacesSequence_NamedType = Core.Name "NamedType"

-- | The base case of an ImplementsInterfaces list: a single, optionally ampersand-prefixed interface.
data ImplementsInterfacesSequence2 =
  ImplementsInterfacesSequence2 {
    implementsInterfacesSequence2Amp :: (Maybe ()),
    implementsInterfacesSequence2NamedType :: NamedType}
  deriving (Eq, Ord, Read, Show)

_ImplementsInterfacesSequence2 = Core.Name "hydra.graphql.syntax.ImplementsInterfacesSequence2"

_ImplementsInterfacesSequence2_Amp = Core.Name "Amp"

_ImplementsInterfacesSequence2_NamedType = Core.Name "NamedType"

-- | A GraphQL inline fragment, with optional type condition, directives, and a selection set.
data InlineFragment =
  InlineFragment {
    inlineFragmentTypeCondition :: (Maybe TypeCondition),
    inlineFragmentDirectives :: (Maybe Directives),
    inlineFragmentSelectionSet :: SelectionSet}
  deriving (Eq, Ord, Read, Show)

_InlineFragment = Core.Name "hydra.graphql.syntax.InlineFragment"

_InlineFragment_TypeCondition = Core.Name "TypeCondition"

_InlineFragment_Directives = Core.Name "Directives"

_InlineFragment_SelectionSet = Core.Name "SelectionSet"

-- | The braced list of input field definitions in a GraphQL input object type.
newtype InputFieldsDefinition =
  InputFieldsDefinition {
    unInputFieldsDefinition :: [InputValueDefinition]}
  deriving (Eq, Ord, Read, Show)

_InputFieldsDefinition = Core.Name "hydra.graphql.syntax.InputFieldsDefinition"

-- | A GraphQL input object type definition, either with or without input fields.
data InputObjectTypeDefinition =
  InputObjectTypeDefinitionSeq InputObjectTypeDefinitionSequence |
  InputObjectTypeDefinitionSeq2 InputObjectTypeDefinitionSequence2
  deriving (Eq, Ord, Read, Show)

_InputObjectTypeDefinition = Core.Name "hydra.graphql.syntax.InputObjectTypeDefinition"

_InputObjectTypeDefinition_seq = Core.Name "seq"

_InputObjectTypeDefinition_seq2 = Core.Name "seq2"

-- | An input object type definition that includes an input fields definition.
data InputObjectTypeDefinitionSequence =
  InputObjectTypeDefinitionSequence {
    inputObjectTypeDefinitionSequenceDescription :: (Maybe Description),
    inputObjectTypeDefinitionSequenceName :: Name,
    inputObjectTypeDefinitionSequenceDirectives :: (Maybe Directives),
    inputObjectTypeDefinitionSequenceInputFieldsDefinition :: InputFieldsDefinition}
  deriving (Eq, Ord, Read, Show)

_InputObjectTypeDefinitionSequence = Core.Name "hydra.graphql.syntax.InputObjectTypeDefinitionSequence"

_InputObjectTypeDefinitionSequence_Description = Core.Name "Description"

_InputObjectTypeDefinitionSequence_Name = Core.Name "Name"

_InputObjectTypeDefinitionSequence_Directives = Core.Name "Directives"

_InputObjectTypeDefinitionSequence_InputFieldsDefinition = Core.Name "InputFieldsDefinition"

-- | An input object type definition with no input fields definition.
data InputObjectTypeDefinitionSequence2 =
  InputObjectTypeDefinitionSequence2 {
    inputObjectTypeDefinitionSequence2Description :: (Maybe Description),
    inputObjectTypeDefinitionSequence2Name :: Name,
    inputObjectTypeDefinitionSequence2Directives :: (Maybe Directives)}
  deriving (Eq, Ord, Read, Show)

_InputObjectTypeDefinitionSequence2 = Core.Name "hydra.graphql.syntax.InputObjectTypeDefinitionSequence2"

_InputObjectTypeDefinitionSequence2_Description = Core.Name "Description"

_InputObjectTypeDefinitionSequence2_Name = Core.Name "Name"

_InputObjectTypeDefinitionSequence2_Directives = Core.Name "Directives"

-- | An extension of a GraphQL input object type, either with or without input fields.
data InputObjectTypeExtension =
  InputObjectTypeExtensionSeq InputObjectTypeExtensionSequence |
  InputObjectTypeExtensionSeq2 InputObjectTypeExtensionSequence2
  deriving (Eq, Ord, Read, Show)

_InputObjectTypeExtension = Core.Name "hydra.graphql.syntax.InputObjectTypeExtension"

_InputObjectTypeExtension_seq = Core.Name "seq"

_InputObjectTypeExtension_seq2 = Core.Name "seq2"

-- | An input object type extension that adds an input fields definition.
data InputObjectTypeExtensionSequence =
  InputObjectTypeExtensionSequence {
    inputObjectTypeExtensionSequenceName :: Name,
    inputObjectTypeExtensionSequenceDirectives :: (Maybe Directives),
    inputObjectTypeExtensionSequenceInputFieldsDefinition :: InputFieldsDefinition}
  deriving (Eq, Ord, Read, Show)

_InputObjectTypeExtensionSequence = Core.Name "hydra.graphql.syntax.InputObjectTypeExtensionSequence"

_InputObjectTypeExtensionSequence_Name = Core.Name "Name"

_InputObjectTypeExtensionSequence_Directives = Core.Name "Directives"

_InputObjectTypeExtensionSequence_InputFieldsDefinition = Core.Name "InputFieldsDefinition"

-- | An input object type extension consisting of directives only.
data InputObjectTypeExtensionSequence2 =
  InputObjectTypeExtensionSequence2 {
    inputObjectTypeExtensionSequence2Name :: Name,
    inputObjectTypeExtensionSequence2Directives :: Directives}
  deriving (Eq, Ord, Read, Show)

_InputObjectTypeExtensionSequence2 = Core.Name "hydra.graphql.syntax.InputObjectTypeExtensionSequence2"

_InputObjectTypeExtensionSequence2_Name = Core.Name "Name"

_InputObjectTypeExtensionSequence2_Directives = Core.Name "Directives"

-- | A single input value definition, used for field arguments and input object fields.
data InputValueDefinition =
  InputValueDefinition {
    inputValueDefinitionDescription :: (Maybe Description),
    inputValueDefinitionName :: Name,
    inputValueDefinitionType :: Type,
    inputValueDefinitionDefaultValue :: (Maybe DefaultValue),
    inputValueDefinitionDirectives :: (Maybe Directives)}
  deriving (Eq, Ord, Read, Show)

_InputValueDefinition = Core.Name "hydra.graphql.syntax.InputValueDefinition"

_InputValueDefinition_Description = Core.Name "Description"

_InputValueDefinition_Name = Core.Name "Name"

_InputValueDefinition_Type = Core.Name "Type"

_InputValueDefinition_DefaultValue = Core.Name "DefaultValue"

_InputValueDefinition_Directives = Core.Name "Directives"

-- | A GraphQL integer literal.
newtype IntValue =
  IntValue {
    unIntValue :: String}
  deriving (Eq, Ord, Read, Show)

_IntValue = Core.Name "hydra.graphql.syntax.IntValue"

-- | A GraphQL interface type definition, either with or without a fields definition.
data InterfaceTypeDefinition =
  InterfaceTypeDefinitionSeq InterfaceTypeDefinitionSequence |
  InterfaceTypeDefinitionSeq2 InterfaceTypeDefinitionSequence2
  deriving (Eq, Ord, Read, Show)

_InterfaceTypeDefinition = Core.Name "hydra.graphql.syntax.InterfaceTypeDefinition"

_InterfaceTypeDefinition_seq = Core.Name "seq"

_InterfaceTypeDefinition_seq2 = Core.Name "seq2"

-- | An interface type definition that includes a fields definition.
data InterfaceTypeDefinitionSequence =
  InterfaceTypeDefinitionSequence {
    interfaceTypeDefinitionSequenceDescription :: (Maybe Description),
    interfaceTypeDefinitionSequenceName :: Name,
    interfaceTypeDefinitionSequenceImplementsInterfaces :: (Maybe ImplementsInterfaces),
    interfaceTypeDefinitionSequenceDirectives :: (Maybe Directives),
    interfaceTypeDefinitionSequenceFieldsDefinition :: FieldsDefinition}
  deriving (Eq, Ord, Read, Show)

_InterfaceTypeDefinitionSequence = Core.Name "hydra.graphql.syntax.InterfaceTypeDefinitionSequence"

_InterfaceTypeDefinitionSequence_Description = Core.Name "Description"

_InterfaceTypeDefinitionSequence_Name = Core.Name "Name"

_InterfaceTypeDefinitionSequence_ImplementsInterfaces = Core.Name "ImplementsInterfaces"

_InterfaceTypeDefinitionSequence_Directives = Core.Name "Directives"

_InterfaceTypeDefinitionSequence_FieldsDefinition = Core.Name "FieldsDefinition"

-- | An interface type definition with no fields definition.
data InterfaceTypeDefinitionSequence2 =
  InterfaceTypeDefinitionSequence2 {
    interfaceTypeDefinitionSequence2Description :: (Maybe Description),
    interfaceTypeDefinitionSequence2Name :: Name,
    interfaceTypeDefinitionSequence2ImplementsInterfaces :: ImplementsInterfaces,
    interfaceTypeDefinitionSequence2Directives :: (Maybe Directives)}
  deriving (Eq, Ord, Read, Show)

_InterfaceTypeDefinitionSequence2 = Core.Name "hydra.graphql.syntax.InterfaceTypeDefinitionSequence2"

_InterfaceTypeDefinitionSequence2_Description = Core.Name "Description"

_InterfaceTypeDefinitionSequence2_Name = Core.Name "Name"

_InterfaceTypeDefinitionSequence2_ImplementsInterfaces = Core.Name "ImplementsInterfaces"

_InterfaceTypeDefinitionSequence2_Directives = Core.Name "Directives"

-- | An extension of a GraphQL interface type, in one of three forms.
data InterfaceTypeExtension =
  InterfaceTypeExtensionSeq InterfaceTypeExtensionSequence |
  InterfaceTypeExtensionSeq2 InterfaceTypeExtensionSequence2 |
  InterfaceTypeExtensionSeq3 InterfaceTypeExtensionSequence3
  deriving (Eq, Ord, Read, Show)

_InterfaceTypeExtension = Core.Name "hydra.graphql.syntax.InterfaceTypeExtension"

_InterfaceTypeExtension_seq = Core.Name "seq"

_InterfaceTypeExtension_seq2 = Core.Name "seq2"

_InterfaceTypeExtension_seq3 = Core.Name "seq3"

-- | An interface type extension that adds a fields definition.
data InterfaceTypeExtensionSequence =
  InterfaceTypeExtensionSequence {
    interfaceTypeExtensionSequenceName :: Name,
    interfaceTypeExtensionSequenceImplementsInterfaces :: (Maybe ImplementsInterfaces),
    interfaceTypeExtensionSequenceDirectives :: (Maybe Directives),
    interfaceTypeExtensionSequenceFieldsDefinition :: FieldsDefinition}
  deriving (Eq, Ord, Read, Show)

_InterfaceTypeExtensionSequence = Core.Name "hydra.graphql.syntax.InterfaceTypeExtensionSequence"

_InterfaceTypeExtensionSequence_Name = Core.Name "Name"

_InterfaceTypeExtensionSequence_ImplementsInterfaces = Core.Name "ImplementsInterfaces"

_InterfaceTypeExtensionSequence_Directives = Core.Name "Directives"

_InterfaceTypeExtensionSequence_FieldsDefinition = Core.Name "FieldsDefinition"

-- | An interface type extension that adds directives but no fields definition.
data InterfaceTypeExtensionSequence2 =
  InterfaceTypeExtensionSequence2 {
    interfaceTypeExtensionSequence2Name :: Name,
    interfaceTypeExtensionSequence2ImplementsInterfaces :: (Maybe ImplementsInterfaces),
    interfaceTypeExtensionSequence2Directives :: Directives}
  deriving (Eq, Ord, Read, Show)

_InterfaceTypeExtensionSequence2 = Core.Name "hydra.graphql.syntax.InterfaceTypeExtensionSequence2"

_InterfaceTypeExtensionSequence2_Name = Core.Name "Name"

_InterfaceTypeExtensionSequence2_ImplementsInterfaces = Core.Name "ImplementsInterfaces"

_InterfaceTypeExtensionSequence2_Directives = Core.Name "Directives"

-- | An interface type extension that adds only implemented interfaces.
data InterfaceTypeExtensionSequence3 =
  InterfaceTypeExtensionSequence3 {
    interfaceTypeExtensionSequence3Name :: Name,
    interfaceTypeExtensionSequence3ImplementsInterfaces :: ImplementsInterfaces}
  deriving (Eq, Ord, Read, Show)

_InterfaceTypeExtensionSequence3 = Core.Name "hydra.graphql.syntax.InterfaceTypeExtensionSequence3"

_InterfaceTypeExtensionSequence3_Name = Core.Name "Name"

_InterfaceTypeExtensionSequence3_ImplementsInterfaces = Core.Name "ImplementsInterfaces"

-- | A GraphQL list type, wrapping an inner type in square brackets.
newtype ListType =
  ListType {
    unListType :: Type}
  deriving (Eq, Ord, Read, Show)

_ListType = Core.Name "hydra.graphql.syntax.ListType"

-- | A GraphQL list literal, either empty or containing a sequence of values.
data ListValue =
  ListValueSeq ListValueSequence |
  ListValueSequence2 [Value]
  deriving (Eq, Ord, Read, Show)

_ListValue = Core.Name "hydra.graphql.syntax.ListValue"

_ListValue_seq = Core.Name "seq"

_ListValue_sequence2 = Core.Name "sequence2"

-- | The empty-list form of a GraphQL ListValue.
type ListValueSequence = ()

_ListValueSequence = Core.Name "hydra.graphql.syntax.ListValueSequence"

-- | A GraphQL name: an identifier matching [_A-Za-z][_0-9A-Za-z]*.
newtype Name =
  Name {
    unName :: String}
  deriving (Eq, Ord, Read, Show)

_Name = Core.Name "hydra.graphql.syntax.Name"

-- | A GraphQL named type, referencing a type by its name.
newtype NamedType =
  NamedType {
    unNamedType :: Name}
  deriving (Eq, Ord, Read, Show)

_NamedType = Core.Name "hydra.graphql.syntax.NamedType"

-- | A GraphQL non-null type, wrapping a named or list type with a trailing exclamation mark.
data NonNullType =
  NonNullTypeNamed NamedType |
  NonNullTypeList ListType
  deriving (Eq, Ord, Read, Show)

_NonNullType = Core.Name "hydra.graphql.syntax.NonNullType"

_NonNullType_named = Core.Name "named"

_NonNullType_list = Core.Name "list"

-- | The GraphQL null literal.
newtype NullValue =
  NullValue {
    unNullValue :: ()}
  deriving (Eq, Ord, Read, Show)

_NullValue = Core.Name "hydra.graphql.syntax.NullValue"

-- | A single field of a GraphQL object literal, consisting of a name and a value.
data ObjectField =
  ObjectField {
    objectFieldName :: Name,
    objectFieldValue :: Value}
  deriving (Eq, Ord, Read, Show)

_ObjectField = Core.Name "hydra.graphql.syntax.ObjectField"

_ObjectField_Name = Core.Name "Name"

_ObjectField_Value = Core.Name "Value"

-- | A GraphQL object type definition, giving its name, interfaces, directives, and fields.
data ObjectTypeDefinition =
  ObjectTypeDefinition {
    objectTypeDefinitionDescription :: (Maybe Description),
    objectTypeDefinitionName :: Name,
    objectTypeDefinitionImplementsInterfaces :: (Maybe ImplementsInterfaces),
    objectTypeDefinitionDirectives :: (Maybe Directives),
    objectTypeDefinitionFieldsDefinition :: (Maybe FieldsDefinition)}
  deriving (Eq, Ord, Read, Show)

_ObjectTypeDefinition = Core.Name "hydra.graphql.syntax.ObjectTypeDefinition"

_ObjectTypeDefinition_Description = Core.Name "Description"

_ObjectTypeDefinition_Name = Core.Name "Name"

_ObjectTypeDefinition_ImplementsInterfaces = Core.Name "ImplementsInterfaces"

_ObjectTypeDefinition_Directives = Core.Name "Directives"

_ObjectTypeDefinition_FieldsDefinition = Core.Name "FieldsDefinition"

-- | An extension of a GraphQL object type, in one of three forms.
data ObjectTypeExtension =
  ObjectTypeExtensionSeq ObjectTypeExtensionSequence |
  ObjectTypeExtensionSeq2 ObjectTypeExtensionSequence2 |
  ObjectTypeExtensionSeq3 ObjectTypeExtensionSequence3
  deriving (Eq, Ord, Read, Show)

_ObjectTypeExtension = Core.Name "hydra.graphql.syntax.ObjectTypeExtension"

_ObjectTypeExtension_seq = Core.Name "seq"

_ObjectTypeExtension_seq2 = Core.Name "seq2"

_ObjectTypeExtension_seq3 = Core.Name "seq3"

-- | An object type extension that adds a fields definition.
data ObjectTypeExtensionSequence =
  ObjectTypeExtensionSequence {
    objectTypeExtensionSequenceName :: Name,
    objectTypeExtensionSequenceImplementsInterfaces :: (Maybe ImplementsInterfaces),
    objectTypeExtensionSequenceDirectives :: (Maybe Directives),
    objectTypeExtensionSequenceFieldsDefinition :: FieldsDefinition}
  deriving (Eq, Ord, Read, Show)

_ObjectTypeExtensionSequence = Core.Name "hydra.graphql.syntax.ObjectTypeExtensionSequence"

_ObjectTypeExtensionSequence_Name = Core.Name "Name"

_ObjectTypeExtensionSequence_ImplementsInterfaces = Core.Name "ImplementsInterfaces"

_ObjectTypeExtensionSequence_Directives = Core.Name "Directives"

_ObjectTypeExtensionSequence_FieldsDefinition = Core.Name "FieldsDefinition"

-- | An object type extension that adds directives but no fields definition.
data ObjectTypeExtensionSequence2 =
  ObjectTypeExtensionSequence2 {
    objectTypeExtensionSequence2Name :: Name,
    objectTypeExtensionSequence2ImplementsInterfaces :: (Maybe ImplementsInterfaces),
    objectTypeExtensionSequence2Directives :: (Maybe Directives)}
  deriving (Eq, Ord, Read, Show)

_ObjectTypeExtensionSequence2 = Core.Name "hydra.graphql.syntax.ObjectTypeExtensionSequence2"

_ObjectTypeExtensionSequence2_Name = Core.Name "Name"

_ObjectTypeExtensionSequence2_ImplementsInterfaces = Core.Name "ImplementsInterfaces"

_ObjectTypeExtensionSequence2_Directives = Core.Name "Directives"

-- | An object type extension that adds only implemented interfaces.
data ObjectTypeExtensionSequence3 =
  ObjectTypeExtensionSequence3 {
    objectTypeExtensionSequence3Name :: Name,
    objectTypeExtensionSequence3ImplementsInterfaces :: ImplementsInterfaces}
  deriving (Eq, Ord, Read, Show)

_ObjectTypeExtensionSequence3 = Core.Name "hydra.graphql.syntax.ObjectTypeExtensionSequence3"

_ObjectTypeExtensionSequence3_Name = Core.Name "Name"

_ObjectTypeExtensionSequence3_ImplementsInterfaces = Core.Name "ImplementsInterfaces"

-- | A GraphQL object literal, either empty or containing a sequence of object fields.
data ObjectValue =
  ObjectValueSeq ObjectValueSequence |
  ObjectValueSequence2 [ObjectField]
  deriving (Eq, Ord, Read, Show)

_ObjectValue = Core.Name "hydra.graphql.syntax.ObjectValue"

_ObjectValue_seq = Core.Name "seq"

_ObjectValue_sequence2 = Core.Name "sequence2"

-- | The empty-object form of a GraphQL ObjectValue.
type ObjectValueSequence = ()

_ObjectValueSequence = Core.Name "hydra.graphql.syntax.ObjectValueSequence"

-- | A GraphQL operation definition, either a shorthand query or an explicit operation.
data OperationDefinition =
  OperationDefinitionSeq OperationDefinitionSequence |
  OperationDefinitionSelectionSet SelectionSet
  deriving (Eq, Ord, Read, Show)

_OperationDefinition = Core.Name "hydra.graphql.syntax.OperationDefinition"

_OperationDefinition_seq = Core.Name "seq"

_OperationDefinition_SelectionSet = Core.Name "SelectionSet"

-- | An explicit GraphQL operation definition with a type, optional name, variables, and directives.
data OperationDefinitionSequence =
  OperationDefinitionSequence {
    operationDefinitionSequenceOperationType :: OperationType,
    operationDefinitionSequenceName :: (Maybe Name),
    operationDefinitionSequenceVariablesDefinition :: (Maybe VariablesDefinition),
    operationDefinitionSequenceDirectives :: (Maybe Directives),
    operationDefinitionSequenceSelectionSet :: SelectionSet}
  deriving (Eq, Ord, Read, Show)

_OperationDefinitionSequence = Core.Name "hydra.graphql.syntax.OperationDefinitionSequence"

_OperationDefinitionSequence_OperationType = Core.Name "OperationType"

_OperationDefinitionSequence_Name = Core.Name "Name"

_OperationDefinitionSequence_VariablesDefinition = Core.Name "VariablesDefinition"

_OperationDefinitionSequence_Directives = Core.Name "Directives"

_OperationDefinitionSequence_SelectionSet = Core.Name "SelectionSet"

-- | The type of a GraphQL operation: query, mutation, or subscription.
data OperationType =
  OperationTypeQuery |
  OperationTypeMutation |
  OperationTypeSubscription
  deriving (Eq, Ord, Read, Show)

_OperationType = Core.Name "hydra.graphql.syntax.OperationType"

_OperationType_Query = Core.Name "Query"

_OperationType_Mutation = Core.Name "Mutation"

_OperationType_Subscription = Core.Name "Subscription"

-- | A mapping from a GraphQL operation type to its root object type.
data RootOperationTypeDefinition =
  RootOperationTypeDefinition {
    rootOperationTypeDefinitionOperationType :: OperationType,
    rootOperationTypeDefinitionNamedType :: NamedType}
  deriving (Eq, Ord, Read, Show)

_RootOperationTypeDefinition = Core.Name "hydra.graphql.syntax.RootOperationTypeDefinition"

_RootOperationTypeDefinition_OperationType = Core.Name "OperationType"

_RootOperationTypeDefinition_NamedType = Core.Name "NamedType"

-- | A GraphQL scalar type definition, with optional description and directives.
data ScalarTypeDefinition =
  ScalarTypeDefinition {
    scalarTypeDefinitionDescription :: (Maybe Description),
    scalarTypeDefinitionName :: Name,
    scalarTypeDefinitionDirectives :: (Maybe Directives)}
  deriving (Eq, Ord, Read, Show)

_ScalarTypeDefinition = Core.Name "hydra.graphql.syntax.ScalarTypeDefinition"

_ScalarTypeDefinition_Description = Core.Name "Description"

_ScalarTypeDefinition_Name = Core.Name "Name"

_ScalarTypeDefinition_Directives = Core.Name "Directives"

-- | An extension of a GraphQL scalar type, adding directives.
data ScalarTypeExtension =
  ScalarTypeExtension {
    scalarTypeExtensionName :: Name,
    scalarTypeExtensionDirectives :: Directives}
  deriving (Eq, Ord, Read, Show)

_ScalarTypeExtension = Core.Name "hydra.graphql.syntax.ScalarTypeExtension"

_ScalarTypeExtension_Name = Core.Name "Name"

_ScalarTypeExtension_Directives = Core.Name "Directives"

-- | A GraphQL schema definition, declaring its root operation types.
data SchemaDefinition =
  SchemaDefinition {
    schemaDefinitionDescription :: (Maybe Description),
    schemaDefinitionDirectives :: (Maybe Directives),
    schemaDefinitionRootOperationTypeDefinition :: RootOperationTypeDefinition}
  deriving (Eq, Ord, Read, Show)

_SchemaDefinition = Core.Name "hydra.graphql.syntax.SchemaDefinition"

_SchemaDefinition_Description = Core.Name "Description"

_SchemaDefinition_Directives = Core.Name "Directives"

_SchemaDefinition_RootOperationTypeDefinition = Core.Name "RootOperationTypeDefinition"

-- | An extension of a GraphQL schema, adding root operation types or directives.
data SchemaExtension =
  SchemaExtensionSeq SchemaExtensionSequence |
  SchemaExtensionSequence2 Directives
  deriving (Eq, Ord, Read, Show)

_SchemaExtension = Core.Name "hydra.graphql.syntax.SchemaExtension"

_SchemaExtension_seq = Core.Name "seq"

_SchemaExtension_sequence2 = Core.Name "sequence2"

-- | A schema extension that adds a root operation type definition.
data SchemaExtensionSequence =
  SchemaExtensionSequence {
    schemaExtensionSequenceDirectives :: (Maybe Directives),
    schemaExtensionSequenceRootOperationTypeDefinition :: RootOperationTypeDefinition}
  deriving (Eq, Ord, Read, Show)

_SchemaExtensionSequence = Core.Name "hydra.graphql.syntax.SchemaExtensionSequence"

_SchemaExtensionSequence_Directives = Core.Name "Directives"

_SchemaExtensionSequence_RootOperationTypeDefinition = Core.Name "RootOperationTypeDefinition"

-- | A single selection within a GraphQL selection set: a field, fragment spread, or inline fragment.
data Selection =
  SelectionField Field |
  SelectionFragmentSpread FragmentSpread |
  SelectionInlineFragment InlineFragment
  deriving (Eq, Ord, Read, Show)

_Selection = Core.Name "hydra.graphql.syntax.Selection"

_Selection_Field = Core.Name "Field"

_Selection_FragmentSpread = Core.Name "FragmentSpread"

_Selection_InlineFragment = Core.Name "InlineFragment"

-- | A braced list of GraphQL selections.
newtype SelectionSet =
  SelectionSet {
    unSelectionSet :: [Selection]}
  deriving (Eq, Ord, Read, Show)

_SelectionSet = Core.Name "hydra.graphql.syntax.SelectionSet"

-- | A GraphQL string literal.
newtype StringValue =
  StringValue {
    unStringValue :: String}
  deriving (Eq, Ord, Read, Show)

_StringValue = Core.Name "hydra.graphql.syntax.StringValue"

-- | A GraphQL type reference: named, list, or non-null.
data Type =
  TypeNamed NamedType |
  TypeList ListType |
  TypeNonNull NonNullType
  deriving (Eq, Ord, Read, Show)

_Type = Core.Name "hydra.graphql.syntax.Type"

_Type_named = Core.Name "named"

_Type_list = Core.Name "list"

_Type_nonNull = Core.Name "nonNull"

-- | A GraphQL type condition, naming the type a fragment applies to.
data TypeCondition =
  TypeConditionOn |
  TypeConditionNamedType NamedType
  deriving (Eq, Ord, Read, Show)

_TypeCondition = Core.Name "hydra.graphql.syntax.TypeCondition"

_TypeCondition_On = Core.Name "On"

_TypeCondition_NamedType = Core.Name "NamedType"

-- | A GraphQL type system definition for a single named type.
data TypeDefinition =
  TypeDefinitionScalar ScalarTypeDefinition |
  TypeDefinitionObject ObjectTypeDefinition |
  TypeDefinitionInterface InterfaceTypeDefinition |
  TypeDefinitionUnion UnionTypeDefinition |
  TypeDefinitionEnum EnumTypeDefinition |
  TypeDefinitionInputObject InputObjectTypeDefinition
  deriving (Eq, Ord, Read, Show)

_TypeDefinition = Core.Name "hydra.graphql.syntax.TypeDefinition"

_TypeDefinition_scalar = Core.Name "scalar"

_TypeDefinition_object = Core.Name "object"

_TypeDefinition_interface = Core.Name "interface"

_TypeDefinition_union = Core.Name "union"

_TypeDefinition_enum = Core.Name "enum"

_TypeDefinition_inputObject = Core.Name "inputObject"

-- | An extension of a GraphQL named type.
data TypeExtension =
  TypeExtensionScalar ScalarTypeExtension |
  TypeExtensionObject ObjectTypeExtension |
  TypeExtensionInterface InterfaceTypeExtension |
  TypeExtensionUnion UnionTypeExtension |
  TypeExtensionEnum EnumTypeExtension |
  TypeExtensionInputObject InputObjectTypeExtension
  deriving (Eq, Ord, Read, Show)

_TypeExtension = Core.Name "hydra.graphql.syntax.TypeExtension"

_TypeExtension_scalar = Core.Name "scalar"

_TypeExtension_object = Core.Name "object"

_TypeExtension_interface = Core.Name "interface"

_TypeExtension_union = Core.Name "union"

_TypeExtension_enum = Core.Name "enum"

_TypeExtension_inputObject = Core.Name "inputObject"

-- | A GraphQL type system definition: schema, type, or directive.
data TypeSystemDefinition =
  TypeSystemDefinitionSchema SchemaDefinition |
  TypeSystemDefinitionType TypeDefinition |
  TypeSystemDefinitionDirective DirectiveDefinition
  deriving (Eq, Ord, Read, Show)

_TypeSystemDefinition = Core.Name "hydra.graphql.syntax.TypeSystemDefinition"

_TypeSystemDefinition_schema = Core.Name "schema"

_TypeSystemDefinition_type = Core.Name "type"

_TypeSystemDefinition_directive = Core.Name "directive"

-- | Either a GraphQL type system definition or an extension of one.
data TypeSystemDefinitionOrExtension =
  TypeSystemDefinitionOrExtensionDefinition TypeSystemDefinition |
  TypeSystemDefinitionOrExtensionExtension TypeSystemExtension
  deriving (Eq, Ord, Read, Show)

_TypeSystemDefinitionOrExtension = Core.Name "hydra.graphql.syntax.TypeSystemDefinitionOrExtension"

_TypeSystemDefinitionOrExtension_definition = Core.Name "definition"

_TypeSystemDefinitionOrExtension_extension = Core.Name "extension"

-- | A directive location valid on GraphQL type system definitions.
data TypeSystemDirectiveLocation =
  TypeSystemDirectiveLocationSCHEMA |
  TypeSystemDirectiveLocationSCALAR |
  TypeSystemDirectiveLocationOBJECT |
  TypeSystemDirectiveLocationFIELD_DEFINITION |
  TypeSystemDirectiveLocationARGUMENT_DEFINITION |
  TypeSystemDirectiveLocationINTERFACE |
  TypeSystemDirectiveLocationUNION |
  TypeSystemDirectiveLocationENUM |
  TypeSystemDirectiveLocationENUM_VALUE |
  TypeSystemDirectiveLocationINPUT_OBJECT |
  TypeSystemDirectiveLocationINPUT_FIELD_DEFINITION
  deriving (Eq, Ord, Read, Show)

_TypeSystemDirectiveLocation = Core.Name "hydra.graphql.syntax.TypeSystemDirectiveLocation"

_TypeSystemDirectiveLocation_SCHEMA = Core.Name "SCHEMA"

_TypeSystemDirectiveLocation_SCALAR = Core.Name "SCALAR"

_TypeSystemDirectiveLocation_OBJECT = Core.Name "OBJECT"

_TypeSystemDirectiveLocation_FIELD_DEFINITION = Core.Name "FIELD_DEFINITION"

_TypeSystemDirectiveLocation_ARGUMENT_DEFINITION = Core.Name "ARGUMENT_DEFINITION"

_TypeSystemDirectiveLocation_INTERFACE = Core.Name "INTERFACE"

_TypeSystemDirectiveLocation_UNION = Core.Name "UNION"

_TypeSystemDirectiveLocation_ENUM = Core.Name "ENUM"

_TypeSystemDirectiveLocation_ENUM_VALUE = Core.Name "ENUM_VALUE"

_TypeSystemDirectiveLocation_INPUT_OBJECT = Core.Name "INPUT_OBJECT"

_TypeSystemDirectiveLocation_INPUT_FIELD_DEFINITION = Core.Name "INPUT_FIELD_DEFINITION"

-- | A GraphQL document consisting only of type system definitions.
newtype TypeSystemDocment =
  TypeSystemDocment {
    unTypeSystemDocment :: [TypeSystemDefinition]}
  deriving (Eq, Ord, Read, Show)

_TypeSystemDocment = Core.Name "hydra.graphql.syntax.TypeSystemDocment"

-- | An extension of a GraphQL schema or type.
data TypeSystemExtension =
  TypeSystemExtensionSchema SchemaExtension |
  TypeSystemExtensionType TypeExtension
  deriving (Eq, Ord, Read, Show)

_TypeSystemExtension = Core.Name "hydra.graphql.syntax.TypeSystemExtension"

_TypeSystemExtension_schema = Core.Name "schema"

_TypeSystemExtension_type = Core.Name "type"

-- | A GraphQL document consisting of type system definitions and extensions.
newtype TypeSystemExtensionDocument =
  TypeSystemExtensionDocument {
    unTypeSystemExtensionDocument :: [TypeSystemDefinitionOrExtension]}
  deriving (Eq, Ord, Read, Show)

_TypeSystemExtensionDocument = Core.Name "hydra.graphql.syntax.TypeSystemExtensionDocument"

-- | The list of member types of a GraphQL union type, introduced by an equals sign.
data UnionMemberTypes =
  UnionMemberTypesSeq UnionMemberTypesSequence |
  UnionMemberTypesSeq2 UnionMemberTypesSequence2
  deriving (Eq, Ord, Read, Show)

_UnionMemberTypes = Core.Name "hydra.graphql.syntax.UnionMemberTypes"

_UnionMemberTypes_seq = Core.Name "seq"

_UnionMemberTypes_seq2 = Core.Name "seq2"

-- | A non-empty UnionMemberTypes list with a leading list of member types.
data UnionMemberTypesSequence =
  UnionMemberTypesSequence {
    unionMemberTypesSequenceUnionMemberTypes :: UnionMemberTypes,
    unionMemberTypesSequenceNamedType :: NamedType}
  deriving (Eq, Ord, Read, Show)

_UnionMemberTypesSequence = Core.Name "hydra.graphql.syntax.UnionMemberTypesSequence"

_UnionMemberTypesSequence_UnionMemberTypes = Core.Name "UnionMemberTypes"

_UnionMemberTypesSequence_NamedType = Core.Name "NamedType"

-- | The base case of a UnionMemberTypes list: a single, optionally pipe-prefixed member type.
data UnionMemberTypesSequence2 =
  UnionMemberTypesSequence2 {
    unionMemberTypesSequence2Or :: (Maybe ()),
    unionMemberTypesSequence2NamedType :: NamedType}
  deriving (Eq, Ord, Read, Show)

_UnionMemberTypesSequence2 = Core.Name "hydra.graphql.syntax.UnionMemberTypesSequence2"

_UnionMemberTypesSequence2_Or = Core.Name "Or"

_UnionMemberTypesSequence2_NamedType = Core.Name "NamedType"

-- | A GraphQL union type definition, giving its name, directives, and member types.
data UnionTypeDefinition =
  UnionTypeDefinition {
    unionTypeDefinitionDescription :: (Maybe Description),
    unionTypeDefinitionName :: Name,
    unionTypeDefinitionDirectives :: (Maybe Directives),
    unionTypeDefinitionUnionMemberTypes :: (Maybe UnionMemberTypes)}
  deriving (Eq, Ord, Read, Show)

_UnionTypeDefinition = Core.Name "hydra.graphql.syntax.UnionTypeDefinition"

_UnionTypeDefinition_Description = Core.Name "Description"

_UnionTypeDefinition_Name = Core.Name "Name"

_UnionTypeDefinition_Directives = Core.Name "Directives"

_UnionTypeDefinition_UnionMemberTypes = Core.Name "UnionMemberTypes"

-- | An extension of a GraphQL union type, either adding member types or only directives.
data UnionTypeExtension =
  UnionTypeExtensionSeq UnionTypeExtensionSequence |
  UnionTypeExtensionSeq2 UnionTypeExtensionSequence2
  deriving (Eq, Ord, Read, Show)

_UnionTypeExtension = Core.Name "hydra.graphql.syntax.UnionTypeExtension"

_UnionTypeExtension_seq = Core.Name "seq"

_UnionTypeExtension_seq2 = Core.Name "seq2"

-- | A union type extension that adds new member types.
data UnionTypeExtensionSequence =
  UnionTypeExtensionSequence {
    unionTypeExtensionSequenceName :: Name,
    unionTypeExtensionSequenceDirectives :: (Maybe Directives),
    unionTypeExtensionSequenceUnionMemberTypes :: UnionMemberTypes}
  deriving (Eq, Ord, Read, Show)

_UnionTypeExtensionSequence = Core.Name "hydra.graphql.syntax.UnionTypeExtensionSequence"

_UnionTypeExtensionSequence_Name = Core.Name "Name"

_UnionTypeExtensionSequence_Directives = Core.Name "Directives"

_UnionTypeExtensionSequence_UnionMemberTypes = Core.Name "UnionMemberTypes"

-- | A union type extension consisting of directives only.
data UnionTypeExtensionSequence2 =
  UnionTypeExtensionSequence2 {
    unionTypeExtensionSequence2Name :: Name,
    unionTypeExtensionSequence2Directives :: Directives}
  deriving (Eq, Ord, Read, Show)

_UnionTypeExtensionSequence2 = Core.Name "hydra.graphql.syntax.UnionTypeExtensionSequence2"

_UnionTypeExtensionSequence2_Name = Core.Name "Name"

_UnionTypeExtensionSequence2_Directives = Core.Name "Directives"

-- | A GraphQL value: a variable, literal, list, or object.
data Value =
  ValueVariable Variable |
  ValueInt IntValue |
  ValueFloat FloatValue |
  ValueString StringValue |
  ValueBoolean BooleanValue |
  ValueNull NullValue |
  ValueEnum EnumValue |
  ValueList ListValue |
  ValueObject ObjectValue
  deriving (Eq, Ord, Read, Show)

_Value = Core.Name "hydra.graphql.syntax.Value"

_Value_Variable = Core.Name "Variable"

_Value_int = Core.Name "int"

_Value_float = Core.Name "float"

_Value_string = Core.Name "string"

_Value_boolean = Core.Name "boolean"

_Value_null = Core.Name "null"

_Value_enum = Core.Name "enum"

_Value_list = Core.Name "list"

_Value_object = Core.Name "object"

-- | A GraphQL variable reference, introduced by a dollar sign.
newtype Variable =
  Variable {
    unVariable :: Name}
  deriving (Eq, Ord, Read, Show)

_Variable = Core.Name "hydra.graphql.syntax.Variable"

-- | A single variable definition in a GraphQL operation's variable list.
data VariablesDefinition =
  VariablesDefinition {
    variablesDefinitionVariable :: Variable,
    variablesDefinitionType :: Type,
    variablesDefinitionDefaultValue :: (Maybe DefaultValue),
    variablesDefinitionDirectives :: (Maybe Directives)}
  deriving (Eq, Ord, Read, Show)

_VariablesDefinition = Core.Name "hydra.graphql.syntax.VariablesDefinition"

_VariablesDefinition_Variable = Core.Name "Variable"

_VariablesDefinition_Type = Core.Name "Type"

_VariablesDefinition_DefaultValue = Core.Name "DefaultValue"

_VariablesDefinition_Directives = Core.Name "Directives"