/** This file was generated by Nexus Schema Do not make changes to this file directly */

declare global {
  interface NexusGen extends NexusGenTypes {}
}

export interface NexusGenInputs {}

export interface NexusGenEnums {
  FeedType: 'HOT' | 'NEW' | 'TOP'
  VoteType: 'CANCEL' | 'DOWN' | 'UP'
}

export interface NexusGenScalars {
  String: string
  Int: number
  Float: number
  Boolean: boolean
  ID: string
}

export interface NexusGenObjects {
  Comment: {
    // root type
    content?: string | null // String
    createdAt?: number | null // Float
    id?: number | null // Int
    postedBy?: NexusGenRootTypes['User'] | null // User
    repoName?: string | null // String
  }
  Entry: {
    // root type
    commentCount?: number | null // Int
    comments?: Array<NexusGenRootTypes['Comment'] | null> | null // [Comment]
    createdAt?: number | null // Float
    hotScore?: number | null // Float
    id?: number | null // Int
    postedBy?: NexusGenRootTypes['User'] | null // User
    repository?: NexusGenRootTypes['Repository'] | null // Repository
    score?: number | null // Int
    vote?: NexusGenRootTypes['Vote'] | null // Vote
  }
  Mutation: {}
  Query: {}
  Repository: {
    // root type
    description?: string | null // String
    full_name?: string | null // String
    html_url?: string | null // String
    name?: string | null // String
    open_issues_count?: number | null // Int
    owner?: NexusGenRootTypes['User'] | null // User
    stargazers_count?: number | null // Int
  }
  User: {
    // root type
    avatar_url?: string | null // String
    html_url?: string | null // String
    login?: string | null // String
  }
  Vote: {
    // root type
    vote_value?: number | null // Int
  }
}

export interface NexusGenInterfaces {}

export interface NexusGenUnions {}

export type NexusGenRootTypes = NexusGenObjects

export type NexusGenAllTypes = NexusGenRootTypes & NexusGenScalars & NexusGenEnums

export interface NexusGenFieldTypes {
  Comment: {
    // field return type
    content: string | null // String
    createdAt: number | null // Float
    id: number | null // Int
    postedBy: NexusGenRootTypes['User'] | null // User
    repoName: string | null // String
  }
  Entry: {
    // field return type
    commentCount: number | null // Int
    comments: Array<NexusGenRootTypes['Comment'] | null> | null // [Comment]
    createdAt: number | null // Float
    hotScore: number | null // Float
    id: number | null // Int
    postedBy: NexusGenRootTypes['User'] | null // User
    repository: NexusGenRootTypes['Repository'] | null // Repository
    score: number | null // Int
    vote: NexusGenRootTypes['Vote'] | null // Vote
  }
  Mutation: {
    // field return type
    submitComment: NexusGenRootTypes['Comment'] | null // Comment
    submitRepository: NexusGenRootTypes['Entry'] | null // Entry
    vote: NexusGenRootTypes['Entry'] | null // Entry
  }
  Query: {
    // field return type
    currentUser: NexusGenRootTypes['User'] | null // User
    entry: NexusGenRootTypes['Entry'] | null // Entry
    feed: Array<NexusGenRootTypes['Entry'] | null> | null // [Entry]
  }
  Repository: {
    // field return type
    description: string | null // String
    full_name: string | null // String
    html_url: string | null // String
    name: string | null // String
    open_issues_count: number | null // Int
    owner: NexusGenRootTypes['User'] | null // User
    stargazers_count: number | null // Int
  }
  User: {
    // field return type
    avatar_url: string | null // String
    html_url: string | null // String
    login: string | null // String
  }
  Vote: {
    // field return type
    vote_value: number | null // Int
  }
}

export interface NexusGenFieldTypeNames {
  Comment: {
    // field return type name
    content: 'String'
    createdAt: 'Float'
    id: 'Int'
    postedBy: 'User'
    repoName: 'String'
  }
  Entry: {
    // field return type name
    commentCount: 'Int'
    comments: 'Comment'
    createdAt: 'Float'
    hotScore: 'Float'
    id: 'Int'
    postedBy: 'User'
    repository: 'Repository'
    score: 'Int'
    vote: 'Vote'
  }
  Mutation: {
    // field return type name
    submitComment: 'Comment'
    submitRepository: 'Entry'
    vote: 'Entry'
  }
  Query: {
    // field return type name
    currentUser: 'User'
    entry: 'Entry'
    feed: 'Entry'
  }
  Repository: {
    // field return type name
    description: 'String'
    full_name: 'String'
    html_url: 'String'
    name: 'String'
    open_issues_count: 'Int'
    owner: 'User'
    stargazers_count: 'Int'
  }
  User: {
    // field return type name
    avatar_url: 'String'
    html_url: 'String'
    login: 'String'
  }
  Vote: {
    // field return type name
    vote_value: 'Int'
  }
}

export interface NexusGenArgTypes {
  Entry: {
    comments: {
      // args
      limit?: number | null // Int
      offset?: number | null // Int
    }
  }
  Mutation: {
    submitComment: {
      // args
      commentContent: string // String!
      repoFullName: string // String!
    }
    submitRepository: {
      // args
      repoFullName: string // String!
    }
    vote: {
      // args
      repoFullName: string // String!
      type: NexusGenEnums['VoteType'] // VoteType!
    }
  }
  Query: {
    entry: {
      // args
      repoFullName: string // String!
    }
    feed: {
      // args
      limit?: number | null // Int
      offset?: number | null // Int
      type: NexusGenEnums['FeedType'] // FeedType!
    }
  }
}

export interface NexusGenAbstractTypeMembers {}

export interface NexusGenTypeInterfaces {}

export type NexusGenObjectNames = keyof NexusGenObjects

export type NexusGenInputNames = never

export type NexusGenEnumNames = keyof NexusGenEnums

export type NexusGenInterfaceNames = never

export type NexusGenScalarNames = keyof NexusGenScalars

export type NexusGenUnionNames = never

export type NexusGenObjectsUsingAbstractStrategyIsTypeOf = never

export type NexusGenAbstractsUsingStrategyResolveType = never

export type NexusGenFeaturesConfig = {
  abstractTypeStrategies: {
    isTypeOf: false
    resolveType: true
    __typename: false
  }
}

export interface NexusGenTypes {
  context: any
  inputTypes: NexusGenInputs
  rootTypes: NexusGenRootTypes
  inputTypeShapes: NexusGenInputs & NexusGenEnums & NexusGenScalars
  argTypes: NexusGenArgTypes
  fieldTypes: NexusGenFieldTypes
  fieldTypeNames: NexusGenFieldTypeNames
  allTypes: NexusGenAllTypes
  typeInterfaces: NexusGenTypeInterfaces
  objectNames: NexusGenObjectNames
  inputNames: NexusGenInputNames
  enumNames: NexusGenEnumNames
  interfaceNames: NexusGenInterfaceNames
  scalarNames: NexusGenScalarNames
  unionNames: NexusGenUnionNames
  allInputTypes: NexusGenTypes['inputNames'] | NexusGenTypes['enumNames'] | NexusGenTypes['scalarNames']
  allOutputTypes:
    | NexusGenTypes['objectNames']
    | NexusGenTypes['enumNames']
    | NexusGenTypes['unionNames']
    | NexusGenTypes['interfaceNames']
    | NexusGenTypes['scalarNames']
  allNamedTypes: NexusGenTypes['allInputTypes'] | NexusGenTypes['allOutputTypes']
  abstractTypes: NexusGenTypes['interfaceNames'] | NexusGenTypes['unionNames']
  abstractTypeMembers: NexusGenAbstractTypeMembers
  objectsUsingAbstractStrategyIsTypeOf: NexusGenObjectsUsingAbstractStrategyIsTypeOf
  abstractsUsingStrategyResolveType: NexusGenAbstractsUsingStrategyResolveType
  features: NexusGenFeaturesConfig
}

declare global {
  interface NexusGenPluginTypeConfig<TypeName extends string> {}
  interface NexusGenPluginFieldConfig<TypeName extends string, FieldName extends string> {}
  interface NexusGenPluginInputFieldConfig<TypeName extends string, FieldName extends string> {}
  interface NexusGenPluginSchemaConfig {}
  interface NexusGenPluginArgConfig {}
}
