"""An object with a Globally Unique ID"""
interface Node {
  """The Globally Unique ID of this object"""
  id: ID!
}

"""Information to aid in pagination."""
type PageInfo {
  """When paginating forwards, are there more items?"""
  hasNextPage: Boolean!

  """When paginating backwards, are there more items?"""
  hasPreviousPage: Boolean!

  """When paginating backwards, the cursor to continue."""
  startCursor: String

  """When paginating forwards, the cursor to continue."""
  endCursor: String
}

type Query {
  booksConn(
    filters: TreeNodeBookFilter
    order: TreeNodeBookOrder

    """Returns the items in the list that come before the specified cursor."""
    before: String = null

    """Returns the items in the list that come after the specified cursor."""
    after: String = null

    """Returns the first n items from the list."""
    first: Int = null

    """Returns the items in the list that come after the specified cursor."""
    last: Int = null
  ): TreeNodeBookTypeConnection!
  booksConn2(
    filters: TreeNodeBookFilter
    order: TreeNodeBookOrder

    """Returns the items in the list that come before the specified cursor."""
    before: String = null

    """Returns the items in the list that come after the specified cursor."""
    after: String = null

    """Returns the first n items from the list."""
    first: Int = null

    """Returns the items in the list that come after the specified cursor."""
    last: Int = null
  ): TreeNodeBookTypeConnection!
  authorsConn(
    """Returns the items in the list that come before the specified cursor."""
    before: String = null

    """Returns the items in the list that come after the specified cursor."""
    after: String = null

    """Returns the first n items from the list."""
    first: Int = null

    """Returns the items in the list that come after the specified cursor."""
    last: Int = null
  ): TreeNodeAuthorTypeConnection!
  authorsConn2(
    """Returns the items in the list that come before the specified cursor."""
    before: String = null

    """Returns the items in the list that come after the specified cursor."""
    after: String = null

    """Returns the first n items from the list."""
    first: Int = null

    """Returns the items in the list that come after the specified cursor."""
    last: Int = null
  ): TreeNodeAuthorTypeConnection!
}

type TreeNodeAuthorType implements Node {
  """The Globally Unique ID of this object"""
  id: ID!
  name: String!
  books(
    filters: TreeNodeBookFilter
    order: TreeNodeBookOrder

    """Returns the items in the list that come before the specified cursor."""
    before: String = null

    """Returns the items in the list that come after the specified cursor."""
    after: String = null

    """Returns the first n items from the list."""
    first: Int = null

    """Returns the items in the list that come after the specified cursor."""
    last: Int = null
  ): TreeNodeBookTypeConnection!
  children(
    """Returns the items in the list that come before the specified cursor."""
    before: String = null

    """Returns the items in the list that come after the specified cursor."""
    after: String = null

    """Returns the first n items from the list."""
    first: Int = null

    """Returns the items in the list that come after the specified cursor."""
    last: Int = null
  ): TreeNodeAuthorTypeConnection!
}

"""A connection to a list of items."""
type TreeNodeAuthorTypeConnection {
  """Pagination data for this connection"""
  pageInfo: PageInfo!

  """Contains the nodes in this connection"""
  edges: [TreeNodeAuthorTypeEdge!]!

  """Total quantity of existing nodes."""
  totalCount: Int
}

"""An edge in a connection."""
type TreeNodeAuthorTypeEdge {
  """A cursor for use in pagination"""
  cursor: String!

  """The item at the end of the edge"""
  node: TreeNodeAuthorType!
}

input TreeNodeBookFilter {
  name: String!
  AND: TreeNodeBookFilter
  OR: TreeNodeBookFilter
  NOT: TreeNodeBookFilter
  DISTINCT: Boolean
}

input TreeNodeBookOrder {
  name: String
}

type TreeNodeBookType implements Node {
  """The Globally Unique ID of this object"""
  id: ID!
  name: String!
  author: TreeNodeAuthorType!
}

"""A connection to a list of items."""
type TreeNodeBookTypeConnection {
  """Pagination data for this connection"""
  pageInfo: PageInfo!

  """Contains the nodes in this connection"""
  edges: [TreeNodeBookTypeEdge!]!

  """Total quantity of existing nodes."""
  totalCount: Int
}

"""An edge in a connection."""
type TreeNodeBookTypeEdge {
  """A cursor for use in pagination"""
  cursor: String!

  """The item at the end of the edge"""
  node: TreeNodeBookType!
}