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

import * as t from "./typeDefs";

declare global {
  interface NexusGen extends NexusGenTypes {}
}

export interface NexusGenInputs {}

export interface NexusGenEnums {
  PatchSize: "LARGE" | "SMALL";
}

export interface NexusGenRootTypes {
  Launch: t.Launch;
  LaunchConnection: {
    // root type
    cursor?: string | null; // String
    hasMore: boolean; // Boolean!
    launches: Array<NexusGenRootTypes["Launch"] | null>; // [Launch]!
  };
  Mission: t.Mission;
  Mutation: {};
  Query: {};
  Rocket: t.Rocket;
  TripUpdateResponse: {
    // root type
    launches?: NexusGenRootTypes["Launch"][] | null; // [Launch!]
    message?: string | null; // String
    success: boolean; // Boolean!
  };
  User: {
    // root type
    email: string; // String!
    id: string; // ID!
  };
  String: string;
  Int: number;
  Float: number;
  Boolean: boolean;
  ID: string;
}

export interface NexusGenAllTypes extends NexusGenRootTypes {
  PatchSize: NexusGenEnums["PatchSize"];
}

export interface NexusGenFieldTypes {
  Launch: {
    // field return type
    id: string; // ID!
    isBooked: boolean; // Boolean!
    mission: NexusGenRootTypes["Mission"]; // Mission!
    rocket: NexusGenRootTypes["Rocket"]; // Rocket!
    site: string | null; // String
  };
  LaunchConnection: {
    // field return type
    cursor: string | null; // String
    hasMore: boolean; // Boolean!
    launches: Array<NexusGenRootTypes["Launch"] | null>; // [Launch]!
  };
  Mission: {
    // field return type
    missionPatch: string; // String!
    name: string | null; // String
  };
  Mutation: {
    // field return type
    bookTrips: NexusGenRootTypes["TripUpdateResponse"]; // TripUpdateResponse!
    cancelTrip: NexusGenRootTypes["TripUpdateResponse"]; // TripUpdateResponse!
    login: string | null; // String
  };
  Query: {
    // field return type
    launch: NexusGenRootTypes["Launch"]; // Launch!
    launches: NexusGenRootTypes["LaunchConnection"]; // LaunchConnection!
    me: NexusGenRootTypes["User"] | null; // User
  };
  Rocket: {
    // field return type
    id: string; // ID!
    name: string | null; // String
    type: string | null; // String
  };
  TripUpdateResponse: {
    // field return type
    launches: NexusGenRootTypes["Launch"][] | null; // [Launch!]
    message: string | null; // String
    success: boolean; // Boolean!
  };
  User: {
    // field return type
    email: string; // String!
    id: string; // ID!
    trips: NexusGenRootTypes["Launch"][]; // [Launch!]!
  };
}

export interface NexusGenArgTypes {
  Mission: {
    missionPatch: {
      // args
      size?: NexusGenEnums["PatchSize"] | null; // PatchSize
    };
  };
  Mutation: {
    bookTrips: {
      // args
      launchIds: string[]; // [ID!]!
    };
    cancelTrip: {
      // args
      launchId: string; // ID!
    };
    login: {
      // args
      email?: string | null; // String
    };
  };
  Query: {
    launch: {
      // args
      count?: number | null; // Int
      id: string; // ID!
    };
    launches: {
      // args
      after?: string | null; // String
      pageSize?: number | null; // Int
    };
  };
}

export interface NexusGenAbstractResolveReturnTypes {}

export interface NexusGenInheritedFields {}

export type NexusGenObjectNames =
  | "Launch"
  | "LaunchConnection"
  | "Mission"
  | "Mutation"
  | "Query"
  | "Rocket"
  | "TripUpdateResponse"
  | "User";

export type NexusGenInputNames = never;

export type NexusGenEnumNames = "PatchSize";

export type NexusGenInterfaceNames = never;

export type NexusGenScalarNames = "Boolean" | "Float" | "ID" | "Int" | "String";

export type NexusGenUnionNames = never;

export interface NexusGenTypes {
  context: t.Context;
  inputTypes: NexusGenInputs;
  rootTypes: NexusGenRootTypes;
  argTypes: NexusGenArgTypes;
  fieldTypes: NexusGenFieldTypes;
  allTypes: NexusGenAllTypes;
  inheritedFields: NexusGenInheritedFields;
  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"];
  abstractResolveReturn: NexusGenAbstractResolveReturnTypes;
}

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