fragment NodeInfo on Node {
  kind
  rawText(skip: [ClassDeclaration, InterfaceDeclaration])
}

fragment MethodInfo on MethodDeclaration {
  nameText
  # parameters {
  #   nameText
  #   type {
  #     ...NodeInfo
  #   }
  # }
  type {
    ...NodeInfo
  }
}

fragment StatementInfo on SourceFile {
  statements {
    ...NodeInfo
    ... on ClassDeclaration {
      nameText
      members {
        ...NodeInfo
        ...MethodInfo
      }
    }
    ... on PropertyDeclaration {
      kind
    }
  }
}

{
  api: parseFile(
    file: "/Users/tgriesser/Github/oss/gqliteral/gqliteral/dist/definitions.d.ts"
  ) {
    ...StatementInfo
  }
  core: parseFile(
    file: "/Users/tgriesser/Github/oss/gqliteral/gqliteral/dist/core.d.ts"
  ) {
    ...StatementInfo
  }
  types: parseFile(
    file: "/Users/tgriesser/Github/oss/gqliteral/gqliteral/dist/types.d.ts"
  ) {
    ...StatementInfo
  }
}
