message: Hoist some more types up into "types" package
  Want to break circular dependency of "interface" on "server". ("server"
  depends on "interface", but "interface" depends on a type in "server".)
  Specifically, "interface" depends on GraphQLCache, which depends on
  GraphQLRC, which depends on GraphQLConfig, so all three get hoisted up.
diff: * @flow
  */
  +import type {GraphQLSchema} from 'graphql';
  import type {ASTNode, FragmentDefinitionNode} from 'graphql/language';
  import type {ValidationContext} from 'graphql/validation';
  import type {
  @@ -45,6 +46,45 @@ export interface CharacterStream {
  current: () => string,
  }
  +// Cache and config-related.
  +export interface GraphQLRC {
  + getConfigDir: () => Uri,
  + getConfigNames: () => Array<string>,
  + getConfig: (name: string) => GraphQLConfig,
  + getConfigByFilePath: (filePath: Uri) => ?GraphQLConfig,
  +}
  +
  +export interface GraphQLConfig {
  + getRootDir: () => Uri,
  + getName: () => string,
  + getConfig: () => Object,
  + getInputDirs: () => Array<string>,
  + getExcludeDirs: () => Array<string>,
  + isFileInInputDirs: (fileName: string) => boolean,
  + getSchemaPath: () => ?Uri,
  + getCustomValidationRulesModulePath: () => ?Uri,
  +}
  +
  +export interface GraphQLCache {
  + getGraphQLRC: () => GraphQLRC,
  +
  + getFragmentDependencies: (
  + query: string,
  + fragmentDefinitions: ?Map<string, FragmentInfo>,
  + ) => Promise<Array<FragmentInfo>>,
  +
  + getFragmentDependenciesForAST: (
  + parsedQuery: ASTNode,
  + fragmentDefinitions: Map<string, FragmentInfo>,
  + ) => Promise<Array<FragmentInfo>>,
  +
  + getFragmentDefinitions: (
  + graphQLConfig: GraphQLConfig,
  + ) => Promise<Map<string, FragmentInfo>>,
  +
  + getSchema: (configSchemaPath: ?Uri) => Promise<?GraphQLSchema>
  +}
  +
  // online-parser related
  export interface Position {
  line: number,
  