import { GraphQLResolveInfo, GraphQLScalarType, GraphQLScalarTypeConfig } from 'graphql';
export type Maybe<T> = T | null;
export type RequireFields<T, K extends keyof T> = { [X in Exclude<keyof T, K>]?: T[X] } & { [P in K]-?: NonNullable<T[P]> };
/** All built-in and custom scalars, mapped to their actual values */
export type Scalars = {
  ID: string,
  String: string,
  Boolean: boolean,
  Int: number,
  Float: number,
  DateTime: any,
  Upload: any,
};

export type AggregateTraining = {
   __typename?: 'AggregateTraining',
  count: Scalars['Int'],
};

export type Block = Node & {
   __typename?: 'Block',
  id: Scalars['ID'],
  title: Scalars['String'],
  description?: Maybe<Scalars['String']>,
  duration?: Maybe<Scalars['Int']>,
  format: Format,
  rest?: Maybe<Scalars['Int']>,
  tracks?: Maybe<Array<Track>>,
  videos?: Maybe<Array<Video>>,
  pictures?: Maybe<Array<Picture>>,
  blocks?: Maybe<Array<BlockInstance>>,
  parentBlockInstances?: Maybe<Array<BlockInstance>>,
  exercises?: Maybe<Array<ExerciseInstance>>,
};


export type BlockTracksArgs = {
  where?: Maybe<TrackWhereInput>,
  orderBy?: Maybe<TrackOrderByInput>,
  skip?: Maybe<Scalars['Int']>,
  after?: Maybe<Scalars['String']>,
  before?: Maybe<Scalars['String']>,
  first?: Maybe<Scalars['Int']>,
  last?: Maybe<Scalars['Int']>
};


export type BlockVideosArgs = {
  where?: Maybe<VideoWhereInput>,
  orderBy?: Maybe<VideoOrderByInput>,
  skip?: Maybe<Scalars['Int']>,
  after?: Maybe<Scalars['String']>,
  before?: Maybe<Scalars['String']>,
  first?: Maybe<Scalars['Int']>,
  last?: Maybe<Scalars['Int']>
};


export type BlockPicturesArgs = {
  where?: Maybe<PictureWhereInput>,
  orderBy?: Maybe<PictureOrderByInput>,
  skip?: Maybe<Scalars['Int']>,
  after?: Maybe<Scalars['String']>,
  before?: Maybe<Scalars['String']>,
  first?: Maybe<Scalars['Int']>,
  last?: Maybe<Scalars['Int']>
};


export type BlockBlocksArgs = {
  where?: Maybe<BlockInstanceWhereInput>,
  orderBy?: Maybe<BlockInstanceOrderByInput>,
  skip?: Maybe<Scalars['Int']>,
  after?: Maybe<Scalars['String']>,
  before?: Maybe<Scalars['String']>,
  first?: Maybe<Scalars['Int']>,
  last?: Maybe<Scalars['Int']>
};


export type BlockParentBlockInstancesArgs = {
  where?: Maybe<BlockInstanceWhereInput>,
  orderBy?: Maybe<BlockInstanceOrderByInput>,
  skip?: Maybe<Scalars['Int']>,
  after?: Maybe<Scalars['String']>,
  before?: Maybe<Scalars['String']>,
  first?: Maybe<Scalars['Int']>,
  last?: Maybe<Scalars['Int']>
};


export type BlockExercisesArgs = {
  where?: Maybe<ExerciseInstanceWhereInput>,
  orderBy?: Maybe<ExerciseInstanceOrderByInput>,
  skip?: Maybe<Scalars['Int']>,
  after?: Maybe<Scalars['String']>,
  before?: Maybe<Scalars['String']>,
  first?: Maybe<Scalars['Int']>,
  last?: Maybe<Scalars['Int']>
};

export type BlockCreateOneWithoutBlocksInput = {
  create?: Maybe<BlockCreateWithoutBlocksInput>,
  connect?: Maybe<BlockWhereUniqueInput>,
};

export type BlockCreateOneWithoutParentBlockInstancesInput = {
  create?: Maybe<BlockCreateWithoutParentBlockInstancesInput>,
  connect?: Maybe<BlockWhereUniqueInput>,
};

export type BlockCreateWithoutBlocksInput = {
  id?: Maybe<Scalars['ID']>,
  title: Scalars['String'],
  description?: Maybe<Scalars['String']>,
  duration?: Maybe<Scalars['Int']>,
  rest?: Maybe<Scalars['Int']>,
  format: FormatCreateOneInput,
  tracks?: Maybe<TrackCreateManyInput>,
  videos?: Maybe<VideoCreateManyInput>,
  pictures?: Maybe<PictureCreateManyInput>,
  parentBlockInstances?: Maybe<BlockInstanceCreateManyWithoutBlockInput>,
  exercises?: Maybe<ExerciseInstanceCreateManyWithoutParentBlockInstancesInput>,
};

export type BlockCreateWithoutParentBlockInstancesInput = {
  id?: Maybe<Scalars['ID']>,
  title: Scalars['String'],
  description?: Maybe<Scalars['String']>,
  duration?: Maybe<Scalars['Int']>,
  rest?: Maybe<Scalars['Int']>,
  format: FormatCreateOneInput,
  tracks?: Maybe<TrackCreateManyInput>,
  videos?: Maybe<VideoCreateManyInput>,
  pictures?: Maybe<PictureCreateManyInput>,
  blocks?: Maybe<BlockInstanceCreateManyWithoutParentBlockInput>,
  exercises?: Maybe<ExerciseInstanceCreateManyWithoutParentBlockInstancesInput>,
};

export type BlockInstance = Node & {
   __typename?: 'BlockInstance',
  id: Scalars['ID'],
  block: Block,
  parentBlock?: Maybe<Block>,
  parentTraining?: Maybe<Training>,
  order: Scalars['Int'],
  rounds?: Maybe<Scalars['Int']>,
  variation?: Maybe<Scalars['String']>,
};

export type BlockInstanceCreateManyWithoutBlockInput = {
  create?: Maybe<Array<BlockInstanceCreateWithoutBlockInput>>,
  connect?: Maybe<Array<BlockInstanceWhereUniqueInput>>,
};

export type BlockInstanceCreateManyWithoutParentBlockInput = {
  create?: Maybe<Array<BlockInstanceCreateWithoutParentBlockInput>>,
  connect?: Maybe<Array<BlockInstanceWhereUniqueInput>>,
};

export type BlockInstanceCreateManyWithoutParentTrainingInput = {
  create?: Maybe<Array<BlockInstanceCreateWithoutParentTrainingInput>>,
  connect?: Maybe<Array<BlockInstanceWhereUniqueInput>>,
};

export type BlockInstanceCreateWithoutBlockInput = {
  id?: Maybe<Scalars['ID']>,
  order: Scalars['Int'],
  rounds?: Maybe<Scalars['Int']>,
  variation?: Maybe<Scalars['String']>,
  parentBlock?: Maybe<BlockCreateOneWithoutBlocksInput>,
  parentTraining?: Maybe<TrainingCreateOneWithoutBlocksInput>,
};

export type BlockInstanceCreateWithoutParentBlockInput = {
  id?: Maybe<Scalars['ID']>,
  order: Scalars['Int'],
  rounds?: Maybe<Scalars['Int']>,
  variation?: Maybe<Scalars['String']>,
  block: BlockCreateOneWithoutParentBlockInstancesInput,
  parentTraining?: Maybe<TrainingCreateOneWithoutBlocksInput>,
};

export type BlockInstanceCreateWithoutParentTrainingInput = {
  id?: Maybe<Scalars['ID']>,
  order: Scalars['Int'],
  rounds?: Maybe<Scalars['Int']>,
  variation?: Maybe<Scalars['String']>,
  block: BlockCreateOneWithoutParentBlockInstancesInput,
  parentBlock?: Maybe<BlockCreateOneWithoutBlocksInput>,
};

export enum BlockInstanceOrderByInput {
  IdAsc = 'id_ASC',
  IdDesc = 'id_DESC',
  OrderAsc = 'order_ASC',
  OrderDesc = 'order_DESC',
  RoundsAsc = 'rounds_ASC',
  RoundsDesc = 'rounds_DESC',
  VariationAsc = 'variation_ASC',
  VariationDesc = 'variation_DESC'
}

export type BlockInstanceScalarWhereInput = {
  /** Logical AND on all given filters. */
  AND?: Maybe<Array<BlockInstanceScalarWhereInput>>,
  /** Logical OR on all given filters. */
  OR?: Maybe<Array<BlockInstanceScalarWhereInput>>,
  /** Logical NOT on all given filters combined by AND. */
  NOT?: Maybe<Array<BlockInstanceScalarWhereInput>>,
  id?: Maybe<Scalars['ID']>,
  /** All values that are not equal to given value. */
  id_not?: Maybe<Scalars['ID']>,
  /** All values that are contained in given list. */
  id_in?: Maybe<Array<Scalars['ID']>>,
  /** All values that are not contained in given list. */
  id_not_in?: Maybe<Array<Scalars['ID']>>,
  /** All values less than the given value. */
  id_lt?: Maybe<Scalars['ID']>,
  /** All values less than or equal the given value. */
  id_lte?: Maybe<Scalars['ID']>,
  /** All values greater than the given value. */
  id_gt?: Maybe<Scalars['ID']>,
  /** All values greater than or equal the given value. */
  id_gte?: Maybe<Scalars['ID']>,
  /** All values containing the given string. */
  id_contains?: Maybe<Scalars['ID']>,
  /** All values not containing the given string. */
  id_not_contains?: Maybe<Scalars['ID']>,
  /** All values starting with the given string. */
  id_starts_with?: Maybe<Scalars['ID']>,
  /** All values not starting with the given string. */
  id_not_starts_with?: Maybe<Scalars['ID']>,
  /** All values ending with the given string. */
  id_ends_with?: Maybe<Scalars['ID']>,
  /** All values not ending with the given string. */
  id_not_ends_with?: Maybe<Scalars['ID']>,
  order?: Maybe<Scalars['Int']>,
  /** All values that are not equal to given value. */
  order_not?: Maybe<Scalars['Int']>,
  /** All values that are contained in given list. */
  order_in?: Maybe<Array<Scalars['Int']>>,
  /** All values that are not contained in given list. */
  order_not_in?: Maybe<Array<Scalars['Int']>>,
  /** All values less than the given value. */
  order_lt?: Maybe<Scalars['Int']>,
  /** All values less than or equal the given value. */
  order_lte?: Maybe<Scalars['Int']>,
  /** All values greater than the given value. */
  order_gt?: Maybe<Scalars['Int']>,
  /** All values greater than or equal the given value. */
  order_gte?: Maybe<Scalars['Int']>,
  rounds?: Maybe<Scalars['Int']>,
  /** All values that are not equal to given value. */
  rounds_not?: Maybe<Scalars['Int']>,
  /** All values that are contained in given list. */
  rounds_in?: Maybe<Array<Scalars['Int']>>,
  /** All values that are not contained in given list. */
  rounds_not_in?: Maybe<Array<Scalars['Int']>>,
  /** All values less than the given value. */
  rounds_lt?: Maybe<Scalars['Int']>,
  /** All values less than or equal the given value. */
  rounds_lte?: Maybe<Scalars['Int']>,
  /** All values greater than the given value. */
  rounds_gt?: Maybe<Scalars['Int']>,
  /** All values greater than or equal the given value. */
  rounds_gte?: Maybe<Scalars['Int']>,
  variation?: Maybe<Scalars['String']>,
  /** All values that are not equal to given value. */
  variation_not?: Maybe<Scalars['String']>,
  /** All values that are contained in given list. */
  variation_in?: Maybe<Array<Scalars['String']>>,
  /** All values that are not contained in given list. */
  variation_not_in?: Maybe<Array<Scalars['String']>>,
  /** All values less than the given value. */
  variation_lt?: Maybe<Scalars['String']>,
  /** All values less than or equal the given value. */
  variation_lte?: Maybe<Scalars['String']>,
  /** All values greater than the given value. */
  variation_gt?: Maybe<Scalars['String']>,
  /** All values greater than or equal the given value. */
  variation_gte?: Maybe<Scalars['String']>,
  /** All values containing the given string. */
  variation_contains?: Maybe<Scalars['String']>,
  /** All values not containing the given string. */
  variation_not_contains?: Maybe<Scalars['String']>,
  /** All values starting with the given string. */
  variation_starts_with?: Maybe<Scalars['String']>,
  /** All values not starting with the given string. */
  variation_not_starts_with?: Maybe<Scalars['String']>,
  /** All values ending with the given string. */
  variation_ends_with?: Maybe<Scalars['String']>,
  /** All values not ending with the given string. */
  variation_not_ends_with?: Maybe<Scalars['String']>,
};

export type BlockInstanceUpdateManyDataInput = {
  order?: Maybe<Scalars['Int']>,
  rounds?: Maybe<Scalars['Int']>,
  variation?: Maybe<Scalars['String']>,
};

export type BlockInstanceUpdateManyWithoutBlockInput = {
  create?: Maybe<Array<BlockInstanceCreateWithoutBlockInput>>,
  connect?: Maybe<Array<BlockInstanceWhereUniqueInput>>,
  set?: Maybe<Array<BlockInstanceWhereUniqueInput>>,
  disconnect?: Maybe<Array<BlockInstanceWhereUniqueInput>>,
  delete?: Maybe<Array<BlockInstanceWhereUniqueInput>>,
  update?: Maybe<Array<BlockInstanceUpdateWithWhereUniqueWithoutBlockInput>>,
  updateMany?: Maybe<Array<BlockInstanceUpdateManyWithWhereNestedInput>>,
  deleteMany?: Maybe<Array<BlockInstanceScalarWhereInput>>,
  upsert?: Maybe<Array<BlockInstanceUpsertWithWhereUniqueWithoutBlockInput>>,
};

export type BlockInstanceUpdateManyWithoutParentBlockInput = {
  create?: Maybe<Array<BlockInstanceCreateWithoutParentBlockInput>>,
  connect?: Maybe<Array<BlockInstanceWhereUniqueInput>>,
  set?: Maybe<Array<BlockInstanceWhereUniqueInput>>,
  disconnect?: Maybe<Array<BlockInstanceWhereUniqueInput>>,
  delete?: Maybe<Array<BlockInstanceWhereUniqueInput>>,
  update?: Maybe<Array<BlockInstanceUpdateWithWhereUniqueWithoutParentBlockInput>>,
  updateMany?: Maybe<Array<BlockInstanceUpdateManyWithWhereNestedInput>>,
  deleteMany?: Maybe<Array<BlockInstanceScalarWhereInput>>,
  upsert?: Maybe<Array<BlockInstanceUpsertWithWhereUniqueWithoutParentBlockInput>>,
};

export type BlockInstanceUpdateManyWithoutParentTrainingInput = {
  create?: Maybe<Array<BlockInstanceCreateWithoutParentTrainingInput>>,
  connect?: Maybe<Array<BlockInstanceWhereUniqueInput>>,
  set?: Maybe<Array<BlockInstanceWhereUniqueInput>>,
  disconnect?: Maybe<Array<BlockInstanceWhereUniqueInput>>,
  delete?: Maybe<Array<BlockInstanceWhereUniqueInput>>,
  update?: Maybe<Array<BlockInstanceUpdateWithWhereUniqueWithoutParentTrainingInput>>,
  updateMany?: Maybe<Array<BlockInstanceUpdateManyWithWhereNestedInput>>,
  deleteMany?: Maybe<Array<BlockInstanceScalarWhereInput>>,
  upsert?: Maybe<Array<BlockInstanceUpsertWithWhereUniqueWithoutParentTrainingInput>>,
};

export type BlockInstanceUpdateManyWithWhereNestedInput = {
  where: BlockInstanceScalarWhereInput,
  data: BlockInstanceUpdateManyDataInput,
};

export type BlockInstanceUpdateWithoutBlockDataInput = {
  order?: Maybe<Scalars['Int']>,
  rounds?: Maybe<Scalars['Int']>,
  variation?: Maybe<Scalars['String']>,
  parentBlock?: Maybe<BlockUpdateOneWithoutBlocksInput>,
  parentTraining?: Maybe<TrainingUpdateOneWithoutBlocksInput>,
};

export type BlockInstanceUpdateWithoutParentBlockDataInput = {
  order?: Maybe<Scalars['Int']>,
  rounds?: Maybe<Scalars['Int']>,
  variation?: Maybe<Scalars['String']>,
  block?: Maybe<BlockUpdateOneRequiredWithoutParentBlockInstancesInput>,
  parentTraining?: Maybe<TrainingUpdateOneWithoutBlocksInput>,
};

export type BlockInstanceUpdateWithoutParentTrainingDataInput = {
  order?: Maybe<Scalars['Int']>,
  rounds?: Maybe<Scalars['Int']>,
  variation?: Maybe<Scalars['String']>,
  block?: Maybe<BlockUpdateOneRequiredWithoutParentBlockInstancesInput>,
  parentBlock?: Maybe<BlockUpdateOneWithoutBlocksInput>,
};

export type BlockInstanceUpdateWithWhereUniqueWithoutBlockInput = {
  where: BlockInstanceWhereUniqueInput,
  data: BlockInstanceUpdateWithoutBlockDataInput,
};

export type BlockInstanceUpdateWithWhereUniqueWithoutParentBlockInput = {
  where: BlockInstanceWhereUniqueInput,
  data: BlockInstanceUpdateWithoutParentBlockDataInput,
};

export type BlockInstanceUpdateWithWhereUniqueWithoutParentTrainingInput = {
  where: BlockInstanceWhereUniqueInput,
  data: BlockInstanceUpdateWithoutParentTrainingDataInput,
};

export type BlockInstanceUpsertWithWhereUniqueWithoutBlockInput = {
  where: BlockInstanceWhereUniqueInput,
  update: BlockInstanceUpdateWithoutBlockDataInput,
  create: BlockInstanceCreateWithoutBlockInput,
};

export type BlockInstanceUpsertWithWhereUniqueWithoutParentBlockInput = {
  where: BlockInstanceWhereUniqueInput,
  update: BlockInstanceUpdateWithoutParentBlockDataInput,
  create: BlockInstanceCreateWithoutParentBlockInput,
};

export type BlockInstanceUpsertWithWhereUniqueWithoutParentTrainingInput = {
  where: BlockInstanceWhereUniqueInput,
  update: BlockInstanceUpdateWithoutParentTrainingDataInput,
  create: BlockInstanceCreateWithoutParentTrainingInput,
};

export type BlockInstanceWhereInput = {
  /** Logical AND on all given filters. */
  AND?: Maybe<Array<BlockInstanceWhereInput>>,
  /** Logical OR on all given filters. */
  OR?: Maybe<Array<BlockInstanceWhereInput>>,
  /** Logical NOT on all given filters combined by AND. */
  NOT?: Maybe<Array<BlockInstanceWhereInput>>,
  id?: Maybe<Scalars['ID']>,
  /** All values that are not equal to given value. */
  id_not?: Maybe<Scalars['ID']>,
  /** All values that are contained in given list. */
  id_in?: Maybe<Array<Scalars['ID']>>,
  /** All values that are not contained in given list. */
  id_not_in?: Maybe<Array<Scalars['ID']>>,
  /** All values less than the given value. */
  id_lt?: Maybe<Scalars['ID']>,
  /** All values less than or equal the given value. */
  id_lte?: Maybe<Scalars['ID']>,
  /** All values greater than the given value. */
  id_gt?: Maybe<Scalars['ID']>,
  /** All values greater than or equal the given value. */
  id_gte?: Maybe<Scalars['ID']>,
  /** All values containing the given string. */
  id_contains?: Maybe<Scalars['ID']>,
  /** All values not containing the given string. */
  id_not_contains?: Maybe<Scalars['ID']>,
  /** All values starting with the given string. */
  id_starts_with?: Maybe<Scalars['ID']>,
  /** All values not starting with the given string. */
  id_not_starts_with?: Maybe<Scalars['ID']>,
  /** All values ending with the given string. */
  id_ends_with?: Maybe<Scalars['ID']>,
  /** All values not ending with the given string. */
  id_not_ends_with?: Maybe<Scalars['ID']>,
  order?: Maybe<Scalars['Int']>,
  /** All values that are not equal to given value. */
  order_not?: Maybe<Scalars['Int']>,
  /** All values that are contained in given list. */
  order_in?: Maybe<Array<Scalars['Int']>>,
  /** All values that are not contained in given list. */
  order_not_in?: Maybe<Array<Scalars['Int']>>,
  /** All values less than the given value. */
  order_lt?: Maybe<Scalars['Int']>,
  /** All values less than or equal the given value. */
  order_lte?: Maybe<Scalars['Int']>,
  /** All values greater than the given value. */
  order_gt?: Maybe<Scalars['Int']>,
  /** All values greater than or equal the given value. */
  order_gte?: Maybe<Scalars['Int']>,
  rounds?: Maybe<Scalars['Int']>,
  /** All values that are not equal to given value. */
  rounds_not?: Maybe<Scalars['Int']>,
  /** All values that are contained in given list. */
  rounds_in?: Maybe<Array<Scalars['Int']>>,
  /** All values that are not contained in given list. */
  rounds_not_in?: Maybe<Array<Scalars['Int']>>,
  /** All values less than the given value. */
  rounds_lt?: Maybe<Scalars['Int']>,
  /** All values less than or equal the given value. */
  rounds_lte?: Maybe<Scalars['Int']>,
  /** All values greater than the given value. */
  rounds_gt?: Maybe<Scalars['Int']>,
  /** All values greater than or equal the given value. */
  rounds_gte?: Maybe<Scalars['Int']>,
  variation?: Maybe<Scalars['String']>,
  /** All values that are not equal to given value. */
  variation_not?: Maybe<Scalars['String']>,
  /** All values that are contained in given list. */
  variation_in?: Maybe<Array<Scalars['String']>>,
  /** All values that are not contained in given list. */
  variation_not_in?: Maybe<Array<Scalars['String']>>,
  /** All values less than the given value. */
  variation_lt?: Maybe<Scalars['String']>,
  /** All values less than or equal the given value. */
  variation_lte?: Maybe<Scalars['String']>,
  /** All values greater than the given value. */
  variation_gt?: Maybe<Scalars['String']>,
  /** All values greater than or equal the given value. */
  variation_gte?: Maybe<Scalars['String']>,
  /** All values containing the given string. */
  variation_contains?: Maybe<Scalars['String']>,
  /** All values not containing the given string. */
  variation_not_contains?: Maybe<Scalars['String']>,
  /** All values starting with the given string. */
  variation_starts_with?: Maybe<Scalars['String']>,
  /** All values not starting with the given string. */
  variation_not_starts_with?: Maybe<Scalars['String']>,
  /** All values ending with the given string. */
  variation_ends_with?: Maybe<Scalars['String']>,
  /** All values not ending with the given string. */
  variation_not_ends_with?: Maybe<Scalars['String']>,
  block?: Maybe<BlockWhereInput>,
  parentBlock?: Maybe<BlockWhereInput>,
  parentTraining?: Maybe<TrainingWhereInput>,
};

export type BlockInstanceWhereUniqueInput = {
  id?: Maybe<Scalars['ID']>,
};

export enum BlockOrderByInput {
  IdAsc = 'id_ASC',
  IdDesc = 'id_DESC',
  TitleAsc = 'title_ASC',
  TitleDesc = 'title_DESC',
  DescriptionAsc = 'description_ASC',
  DescriptionDesc = 'description_DESC',
  DurationAsc = 'duration_ASC',
  DurationDesc = 'duration_DESC',
  RestAsc = 'rest_ASC',
  RestDesc = 'rest_DESC'
}

export type BlockUpdateOneRequiredWithoutParentBlockInstancesInput = {
  create?: Maybe<BlockCreateWithoutParentBlockInstancesInput>,
  connect?: Maybe<BlockWhereUniqueInput>,
  update?: Maybe<BlockUpdateWithoutParentBlockInstancesDataInput>,
  upsert?: Maybe<BlockUpsertWithoutParentBlockInstancesInput>,
};

export type BlockUpdateOneWithoutBlocksInput = {
  create?: Maybe<BlockCreateWithoutBlocksInput>,
  connect?: Maybe<BlockWhereUniqueInput>,
  disconnect?: Maybe<Scalars['Boolean']>,
  delete?: Maybe<Scalars['Boolean']>,
  update?: Maybe<BlockUpdateWithoutBlocksDataInput>,
  upsert?: Maybe<BlockUpsertWithoutBlocksInput>,
};

export type BlockUpdateWithoutBlocksDataInput = {
  title?: Maybe<Scalars['String']>,
  description?: Maybe<Scalars['String']>,
  duration?: Maybe<Scalars['Int']>,
  rest?: Maybe<Scalars['Int']>,
  format?: Maybe<FormatUpdateOneRequiredInput>,
  tracks?: Maybe<TrackUpdateManyInput>,
  videos?: Maybe<VideoUpdateManyInput>,
  pictures?: Maybe<PictureUpdateManyInput>,
  parentBlockInstances?: Maybe<BlockInstanceUpdateManyWithoutBlockInput>,
  exercises?: Maybe<ExerciseInstanceUpdateManyWithoutParentBlockInstancesInput>,
};

export type BlockUpdateWithoutParentBlockInstancesDataInput = {
  title?: Maybe<Scalars['String']>,
  description?: Maybe<Scalars['String']>,
  duration?: Maybe<Scalars['Int']>,
  rest?: Maybe<Scalars['Int']>,
  format?: Maybe<FormatUpdateOneRequiredInput>,
  tracks?: Maybe<TrackUpdateManyInput>,
  videos?: Maybe<VideoUpdateManyInput>,
  pictures?: Maybe<PictureUpdateManyInput>,
  blocks?: Maybe<BlockInstanceUpdateManyWithoutParentBlockInput>,
  exercises?: Maybe<ExerciseInstanceUpdateManyWithoutParentBlockInstancesInput>,
};

export type BlockUpsertWithoutBlocksInput = {
  update: BlockUpdateWithoutBlocksDataInput,
  create: BlockCreateWithoutBlocksInput,
};

export type BlockUpsertWithoutParentBlockInstancesInput = {
  update: BlockUpdateWithoutParentBlockInstancesDataInput,
  create: BlockCreateWithoutParentBlockInstancesInput,
};

export type BlockWhereInput = {
  /** Logical AND on all given filters. */
  AND?: Maybe<Array<BlockWhereInput>>,
  /** Logical OR on all given filters. */
  OR?: Maybe<Array<BlockWhereInput>>,
  /** Logical NOT on all given filters combined by AND. */
  NOT?: Maybe<Array<BlockWhereInput>>,
  id?: Maybe<Scalars['ID']>,
  /** All values that are not equal to given value. */
  id_not?: Maybe<Scalars['ID']>,
  /** All values that are contained in given list. */
  id_in?: Maybe<Array<Scalars['ID']>>,
  /** All values that are not contained in given list. */
  id_not_in?: Maybe<Array<Scalars['ID']>>,
  /** All values less than the given value. */
  id_lt?: Maybe<Scalars['ID']>,
  /** All values less than or equal the given value. */
  id_lte?: Maybe<Scalars['ID']>,
  /** All values greater than the given value. */
  id_gt?: Maybe<Scalars['ID']>,
  /** All values greater than or equal the given value. */
  id_gte?: Maybe<Scalars['ID']>,
  /** All values containing the given string. */
  id_contains?: Maybe<Scalars['ID']>,
  /** All values not containing the given string. */
  id_not_contains?: Maybe<Scalars['ID']>,
  /** All values starting with the given string. */
  id_starts_with?: Maybe<Scalars['ID']>,
  /** All values not starting with the given string. */
  id_not_starts_with?: Maybe<Scalars['ID']>,
  /** All values ending with the given string. */
  id_ends_with?: Maybe<Scalars['ID']>,
  /** All values not ending with the given string. */
  id_not_ends_with?: Maybe<Scalars['ID']>,
  title?: Maybe<Scalars['String']>,
  /** All values that are not equal to given value. */
  title_not?: Maybe<Scalars['String']>,
  /** All values that are contained in given list. */
  title_in?: Maybe<Array<Scalars['String']>>,
  /** All values that are not contained in given list. */
  title_not_in?: Maybe<Array<Scalars['String']>>,
  /** All values less than the given value. */
  title_lt?: Maybe<Scalars['String']>,
  /** All values less than or equal the given value. */
  title_lte?: Maybe<Scalars['String']>,
  /** All values greater than the given value. */
  title_gt?: Maybe<Scalars['String']>,
  /** All values greater than or equal the given value. */
  title_gte?: Maybe<Scalars['String']>,
  /** All values containing the given string. */
  title_contains?: Maybe<Scalars['String']>,
  /** All values not containing the given string. */
  title_not_contains?: Maybe<Scalars['String']>,
  /** All values starting with the given string. */
  title_starts_with?: Maybe<Scalars['String']>,
  /** All values not starting with the given string. */
  title_not_starts_with?: Maybe<Scalars['String']>,
  /** All values ending with the given string. */
  title_ends_with?: Maybe<Scalars['String']>,
  /** All values not ending with the given string. */
  title_not_ends_with?: Maybe<Scalars['String']>,
  description?: Maybe<Scalars['String']>,
  /** All values that are not equal to given value. */
  description_not?: Maybe<Scalars['String']>,
  /** All values that are contained in given list. */
  description_in?: Maybe<Array<Scalars['String']>>,
  /** All values that are not contained in given list. */
  description_not_in?: Maybe<Array<Scalars['String']>>,
  /** All values less than the given value. */
  description_lt?: Maybe<Scalars['String']>,
  /** All values less than or equal the given value. */
  description_lte?: Maybe<Scalars['String']>,
  /** All values greater than the given value. */
  description_gt?: Maybe<Scalars['String']>,
  /** All values greater than or equal the given value. */
  description_gte?: Maybe<Scalars['String']>,
  /** All values containing the given string. */
  description_contains?: Maybe<Scalars['String']>,
  /** All values not containing the given string. */
  description_not_contains?: Maybe<Scalars['String']>,
  /** All values starting with the given string. */
  description_starts_with?: Maybe<Scalars['String']>,
  /** All values not starting with the given string. */
  description_not_starts_with?: Maybe<Scalars['String']>,
  /** All values ending with the given string. */
  description_ends_with?: Maybe<Scalars['String']>,
  /** All values not ending with the given string. */
  description_not_ends_with?: Maybe<Scalars['String']>,
  duration?: Maybe<Scalars['Int']>,
  /** All values that are not equal to given value. */
  duration_not?: Maybe<Scalars['Int']>,
  /** All values that are contained in given list. */
  duration_in?: Maybe<Array<Scalars['Int']>>,
  /** All values that are not contained in given list. */
  duration_not_in?: Maybe<Array<Scalars['Int']>>,
  /** All values less than the given value. */
  duration_lt?: Maybe<Scalars['Int']>,
  /** All values less than or equal the given value. */
  duration_lte?: Maybe<Scalars['Int']>,
  /** All values greater than the given value. */
  duration_gt?: Maybe<Scalars['Int']>,
  /** All values greater than or equal the given value. */
  duration_gte?: Maybe<Scalars['Int']>,
  rest?: Maybe<Scalars['Int']>,
  /** All values that are not equal to given value. */
  rest_not?: Maybe<Scalars['Int']>,
  /** All values that are contained in given list. */
  rest_in?: Maybe<Array<Scalars['Int']>>,
  /** All values that are not contained in given list. */
  rest_not_in?: Maybe<Array<Scalars['Int']>>,
  /** All values less than the given value. */
  rest_lt?: Maybe<Scalars['Int']>,
  /** All values less than or equal the given value. */
  rest_lte?: Maybe<Scalars['Int']>,
  /** All values greater than the given value. */
  rest_gt?: Maybe<Scalars['Int']>,
  /** All values greater than or equal the given value. */
  rest_gte?: Maybe<Scalars['Int']>,
  format?: Maybe<FormatWhereInput>,
  tracks_every?: Maybe<TrackWhereInput>,
  tracks_some?: Maybe<TrackWhereInput>,
  tracks_none?: Maybe<TrackWhereInput>,
  videos_every?: Maybe<VideoWhereInput>,
  videos_some?: Maybe<VideoWhereInput>,
  videos_none?: Maybe<VideoWhereInput>,
  pictures_every?: Maybe<PictureWhereInput>,
  pictures_some?: Maybe<PictureWhereInput>,
  pictures_none?: Maybe<PictureWhereInput>,
  blocks_every?: Maybe<BlockInstanceWhereInput>,
  blocks_some?: Maybe<BlockInstanceWhereInput>,
  blocks_none?: Maybe<BlockInstanceWhereInput>,
  parentBlockInstances_every?: Maybe<BlockInstanceWhereInput>,
  parentBlockInstances_some?: Maybe<BlockInstanceWhereInput>,
  parentBlockInstances_none?: Maybe<BlockInstanceWhereInput>,
  exercises_every?: Maybe<ExerciseInstanceWhereInput>,
  exercises_some?: Maybe<ExerciseInstanceWhereInput>,
  exercises_none?: Maybe<ExerciseInstanceWhereInput>,
};

export type BlockWhereUniqueInput = {
  id?: Maybe<Scalars['ID']>,
};

export type Comment = Node & {
   __typename?: 'Comment',
  id: Scalars['ID'],
  text: Scalars['String'],
  author: User,
  createdAt: Scalars['DateTime'],
};

export type CommentCreateManyWithoutAuthorInput = {
  create?: Maybe<Array<CommentCreateWithoutAuthorInput>>,
  connect?: Maybe<Array<CommentWhereUniqueInput>>,
};

export type CommentCreateWithoutAuthorInput = {
  id?: Maybe<Scalars['ID']>,
  text: Scalars['String'],
};

export enum CommentOrderByInput {
  IdAsc = 'id_ASC',
  IdDesc = 'id_DESC',
  TextAsc = 'text_ASC',
  TextDesc = 'text_DESC',
  CreatedAtAsc = 'createdAt_ASC',
  CreatedAtDesc = 'createdAt_DESC'
}

export type CommentScalarWhereInput = {
  /** Logical AND on all given filters. */
  AND?: Maybe<Array<CommentScalarWhereInput>>,
  /** Logical OR on all given filters. */
  OR?: Maybe<Array<CommentScalarWhereInput>>,
  /** Logical NOT on all given filters combined by AND. */
  NOT?: Maybe<Array<CommentScalarWhereInput>>,
  id?: Maybe<Scalars['ID']>,
  /** All values that are not equal to given value. */
  id_not?: Maybe<Scalars['ID']>,
  /** All values that are contained in given list. */
  id_in?: Maybe<Array<Scalars['ID']>>,
  /** All values that are not contained in given list. */
  id_not_in?: Maybe<Array<Scalars['ID']>>,
  /** All values less than the given value. */
  id_lt?: Maybe<Scalars['ID']>,
  /** All values less than or equal the given value. */
  id_lte?: Maybe<Scalars['ID']>,
  /** All values greater than the given value. */
  id_gt?: Maybe<Scalars['ID']>,
  /** All values greater than or equal the given value. */
  id_gte?: Maybe<Scalars['ID']>,
  /** All values containing the given string. */
  id_contains?: Maybe<Scalars['ID']>,
  /** All values not containing the given string. */
  id_not_contains?: Maybe<Scalars['ID']>,
  /** All values starting with the given string. */
  id_starts_with?: Maybe<Scalars['ID']>,
  /** All values not starting with the given string. */
  id_not_starts_with?: Maybe<Scalars['ID']>,
  /** All values ending with the given string. */
  id_ends_with?: Maybe<Scalars['ID']>,
  /** All values not ending with the given string. */
  id_not_ends_with?: Maybe<Scalars['ID']>,
  text?: Maybe<Scalars['String']>,
  /** All values that are not equal to given value. */
  text_not?: Maybe<Scalars['String']>,
  /** All values that are contained in given list. */
  text_in?: Maybe<Array<Scalars['String']>>,
  /** All values that are not contained in given list. */
  text_not_in?: Maybe<Array<Scalars['String']>>,
  /** All values less than the given value. */
  text_lt?: Maybe<Scalars['String']>,
  /** All values less than or equal the given value. */
  text_lte?: Maybe<Scalars['String']>,
  /** All values greater than the given value. */
  text_gt?: Maybe<Scalars['String']>,
  /** All values greater than or equal the given value. */
  text_gte?: Maybe<Scalars['String']>,
  /** All values containing the given string. */
  text_contains?: Maybe<Scalars['String']>,
  /** All values not containing the given string. */
  text_not_contains?: Maybe<Scalars['String']>,
  /** All values starting with the given string. */
  text_starts_with?: Maybe<Scalars['String']>,
  /** All values not starting with the given string. */
  text_not_starts_with?: Maybe<Scalars['String']>,
  /** All values ending with the given string. */
  text_ends_with?: Maybe<Scalars['String']>,
  /** All values not ending with the given string. */
  text_not_ends_with?: Maybe<Scalars['String']>,
  createdAt?: Maybe<Scalars['DateTime']>,
  /** All values that are not equal to given value. */
  createdAt_not?: Maybe<Scalars['DateTime']>,
  /** All values that are contained in given list. */
  createdAt_in?: Maybe<Array<Scalars['DateTime']>>,
  /** All values that are not contained in given list. */
  createdAt_not_in?: Maybe<Array<Scalars['DateTime']>>,
  /** All values less than the given value. */
  createdAt_lt?: Maybe<Scalars['DateTime']>,
  /** All values less than or equal the given value. */
  createdAt_lte?: Maybe<Scalars['DateTime']>,
  /** All values greater than the given value. */
  createdAt_gt?: Maybe<Scalars['DateTime']>,
  /** All values greater than or equal the given value. */
  createdAt_gte?: Maybe<Scalars['DateTime']>,
};

export type CommentUpdateManyDataInput = {
  text?: Maybe<Scalars['String']>,
};

export type CommentUpdateManyWithoutAuthorInput = {
  create?: Maybe<Array<CommentCreateWithoutAuthorInput>>,
  connect?: Maybe<Array<CommentWhereUniqueInput>>,
  set?: Maybe<Array<CommentWhereUniqueInput>>,
  disconnect?: Maybe<Array<CommentWhereUniqueInput>>,
  delete?: Maybe<Array<CommentWhereUniqueInput>>,
  update?: Maybe<Array<CommentUpdateWithWhereUniqueWithoutAuthorInput>>,
  updateMany?: Maybe<Array<CommentUpdateManyWithWhereNestedInput>>,
  deleteMany?: Maybe<Array<CommentScalarWhereInput>>,
  upsert?: Maybe<Array<CommentUpsertWithWhereUniqueWithoutAuthorInput>>,
};

export type CommentUpdateManyWithWhereNestedInput = {
  where: CommentScalarWhereInput,
  data: CommentUpdateManyDataInput,
};

export type CommentUpdateWithoutAuthorDataInput = {
  text?: Maybe<Scalars['String']>,
};

export type CommentUpdateWithWhereUniqueWithoutAuthorInput = {
  where: CommentWhereUniqueInput,
  data: CommentUpdateWithoutAuthorDataInput,
};

export type CommentUpsertWithWhereUniqueWithoutAuthorInput = {
  where: CommentWhereUniqueInput,
  update: CommentUpdateWithoutAuthorDataInput,
  create: CommentCreateWithoutAuthorInput,
};

export type CommentWhereInput = {
  /** Logical AND on all given filters. */
  AND?: Maybe<Array<CommentWhereInput>>,
  /** Logical OR on all given filters. */
  OR?: Maybe<Array<CommentWhereInput>>,
  /** Logical NOT on all given filters combined by AND. */
  NOT?: Maybe<Array<CommentWhereInput>>,
  id?: Maybe<Scalars['ID']>,
  /** All values that are not equal to given value. */
  id_not?: Maybe<Scalars['ID']>,
  /** All values that are contained in given list. */
  id_in?: Maybe<Array<Scalars['ID']>>,
  /** All values that are not contained in given list. */
  id_not_in?: Maybe<Array<Scalars['ID']>>,
  /** All values less than the given value. */
  id_lt?: Maybe<Scalars['ID']>,
  /** All values less than or equal the given value. */
  id_lte?: Maybe<Scalars['ID']>,
  /** All values greater than the given value. */
  id_gt?: Maybe<Scalars['ID']>,
  /** All values greater than or equal the given value. */
  id_gte?: Maybe<Scalars['ID']>,
  /** All values containing the given string. */
  id_contains?: Maybe<Scalars['ID']>,
  /** All values not containing the given string. */
  id_not_contains?: Maybe<Scalars['ID']>,
  /** All values starting with the given string. */
  id_starts_with?: Maybe<Scalars['ID']>,
  /** All values not starting with the given string. */
  id_not_starts_with?: Maybe<Scalars['ID']>,
  /** All values ending with the given string. */
  id_ends_with?: Maybe<Scalars['ID']>,
  /** All values not ending with the given string. */
  id_not_ends_with?: Maybe<Scalars['ID']>,
  text?: Maybe<Scalars['String']>,
  /** All values that are not equal to given value. */
  text_not?: Maybe<Scalars['String']>,
  /** All values that are contained in given list. */
  text_in?: Maybe<Array<Scalars['String']>>,
  /** All values that are not contained in given list. */
  text_not_in?: Maybe<Array<Scalars['String']>>,
  /** All values less than the given value. */
  text_lt?: Maybe<Scalars['String']>,
  /** All values less than or equal the given value. */
  text_lte?: Maybe<Scalars['String']>,
  /** All values greater than the given value. */
  text_gt?: Maybe<Scalars['String']>,
  /** All values greater than or equal the given value. */
  text_gte?: Maybe<Scalars['String']>,
  /** All values containing the given string. */
  text_contains?: Maybe<Scalars['String']>,
  /** All values not containing the given string. */
  text_not_contains?: Maybe<Scalars['String']>,
  /** All values starting with the given string. */
  text_starts_with?: Maybe<Scalars['String']>,
  /** All values not starting with the given string. */
  text_not_starts_with?: Maybe<Scalars['String']>,
  /** All values ending with the given string. */
  text_ends_with?: Maybe<Scalars['String']>,
  /** All values not ending with the given string. */
  text_not_ends_with?: Maybe<Scalars['String']>,
  createdAt?: Maybe<Scalars['DateTime']>,
  /** All values that are not equal to given value. */
  createdAt_not?: Maybe<Scalars['DateTime']>,
  /** All values that are contained in given list. */
  createdAt_in?: Maybe<Array<Scalars['DateTime']>>,
  /** All values that are not contained in given list. */
  createdAt_not_in?: Maybe<Array<Scalars['DateTime']>>,
  /** All values less than the given value. */
  createdAt_lt?: Maybe<Scalars['DateTime']>,
  /** All values less than or equal the given value. */
  createdAt_lte?: Maybe<Scalars['DateTime']>,
  /** All values greater than the given value. */
  createdAt_gt?: Maybe<Scalars['DateTime']>,
  /** All values greater than or equal the given value. */
  createdAt_gte?: Maybe<Scalars['DateTime']>,
  author?: Maybe<UserWhereInput>,
};

export type CommentWhereUniqueInput = {
  id?: Maybe<Scalars['ID']>,
};


export type Exercise = Node & {
   __typename?: 'Exercise',
  id: Scalars['ID'],
  name: Scalars['String'],
  description?: Maybe<Scalars['String']>,
  videos?: Maybe<Array<Video>>,
  pictures?: Maybe<Array<Picture>>,
  targets: Array<Scalars['String']>,
  baseExercise: Array<Scalars['String']>,
  parentExerciseInstances?: Maybe<Array<ExerciseInstance>>,
};


export type ExerciseVideosArgs = {
  where?: Maybe<VideoWhereInput>,
  orderBy?: Maybe<VideoOrderByInput>,
  skip?: Maybe<Scalars['Int']>,
  after?: Maybe<Scalars['String']>,
  before?: Maybe<Scalars['String']>,
  first?: Maybe<Scalars['Int']>,
  last?: Maybe<Scalars['Int']>
};


export type ExercisePicturesArgs = {
  where?: Maybe<PictureWhereInput>,
  orderBy?: Maybe<PictureOrderByInput>,
  skip?: Maybe<Scalars['Int']>,
  after?: Maybe<Scalars['String']>,
  before?: Maybe<Scalars['String']>,
  first?: Maybe<Scalars['Int']>,
  last?: Maybe<Scalars['Int']>
};


export type ExerciseParentExerciseInstancesArgs = {
  where?: Maybe<ExerciseInstanceWhereInput>,
  orderBy?: Maybe<ExerciseInstanceOrderByInput>,
  skip?: Maybe<Scalars['Int']>,
  after?: Maybe<Scalars['String']>,
  before?: Maybe<Scalars['String']>,
  first?: Maybe<Scalars['Int']>,
  last?: Maybe<Scalars['Int']>
};

export type ExerciseCreatebaseExerciseInput = {
  set?: Maybe<Array<Scalars['String']>>,
};

export type ExerciseCreateOneWithoutParentExerciseInstancesInput = {
  create?: Maybe<ExerciseCreateWithoutParentExerciseInstancesInput>,
  connect?: Maybe<ExerciseWhereUniqueInput>,
};

export type ExerciseCreatetargetsInput = {
  set?: Maybe<Array<Scalars['String']>>,
};

export type ExerciseCreateWithoutParentExerciseInstancesInput = {
  id?: Maybe<Scalars['ID']>,
  name: Scalars['String'],
  description?: Maybe<Scalars['String']>,
  targets?: Maybe<ExerciseCreatetargetsInput>,
  baseExercise?: Maybe<ExerciseCreatebaseExerciseInput>,
  videos?: Maybe<VideoCreateManyInput>,
  pictures?: Maybe<PictureCreateManyInput>,
};

export type ExerciseInstance = Node & {
   __typename?: 'ExerciseInstance',
  id: Scalars['ID'],
  exercise: Exercise,
  order: Scalars['Int'],
  repetitions?: Maybe<Scalars['Int']>,
  variation?: Maybe<Scalars['String']>,
  parentBlockInstances: Block,
};

export type ExerciseInstanceCreateManyWithoutParentBlockInstancesInput = {
  create?: Maybe<Array<ExerciseInstanceCreateWithoutParentBlockInstancesInput>>,
  connect?: Maybe<Array<ExerciseInstanceWhereUniqueInput>>,
};

export type ExerciseInstanceCreateWithoutParentBlockInstancesInput = {
  id?: Maybe<Scalars['ID']>,
  order: Scalars['Int'],
  repetitions?: Maybe<Scalars['Int']>,
  variation?: Maybe<Scalars['String']>,
  exercise: ExerciseCreateOneWithoutParentExerciseInstancesInput,
};

export enum ExerciseInstanceOrderByInput {
  IdAsc = 'id_ASC',
  IdDesc = 'id_DESC',
  OrderAsc = 'order_ASC',
  OrderDesc = 'order_DESC',
  RepetitionsAsc = 'repetitions_ASC',
  RepetitionsDesc = 'repetitions_DESC',
  VariationAsc = 'variation_ASC',
  VariationDesc = 'variation_DESC'
}

export type ExerciseInstanceScalarWhereInput = {
  /** Logical AND on all given filters. */
  AND?: Maybe<Array<ExerciseInstanceScalarWhereInput>>,
  /** Logical OR on all given filters. */
  OR?: Maybe<Array<ExerciseInstanceScalarWhereInput>>,
  /** Logical NOT on all given filters combined by AND. */
  NOT?: Maybe<Array<ExerciseInstanceScalarWhereInput>>,
  id?: Maybe<Scalars['ID']>,
  /** All values that are not equal to given value. */
  id_not?: Maybe<Scalars['ID']>,
  /** All values that are contained in given list. */
  id_in?: Maybe<Array<Scalars['ID']>>,
  /** All values that are not contained in given list. */
  id_not_in?: Maybe<Array<Scalars['ID']>>,
  /** All values less than the given value. */
  id_lt?: Maybe<Scalars['ID']>,
  /** All values less than or equal the given value. */
  id_lte?: Maybe<Scalars['ID']>,
  /** All values greater than the given value. */
  id_gt?: Maybe<Scalars['ID']>,
  /** All values greater than or equal the given value. */
  id_gte?: Maybe<Scalars['ID']>,
  /** All values containing the given string. */
  id_contains?: Maybe<Scalars['ID']>,
  /** All values not containing the given string. */
  id_not_contains?: Maybe<Scalars['ID']>,
  /** All values starting with the given string. */
  id_starts_with?: Maybe<Scalars['ID']>,
  /** All values not starting with the given string. */
  id_not_starts_with?: Maybe<Scalars['ID']>,
  /** All values ending with the given string. */
  id_ends_with?: Maybe<Scalars['ID']>,
  /** All values not ending with the given string. */
  id_not_ends_with?: Maybe<Scalars['ID']>,
  order?: Maybe<Scalars['Int']>,
  /** All values that are not equal to given value. */
  order_not?: Maybe<Scalars['Int']>,
  /** All values that are contained in given list. */
  order_in?: Maybe<Array<Scalars['Int']>>,
  /** All values that are not contained in given list. */
  order_not_in?: Maybe<Array<Scalars['Int']>>,
  /** All values less than the given value. */
  order_lt?: Maybe<Scalars['Int']>,
  /** All values less than or equal the given value. */
  order_lte?: Maybe<Scalars['Int']>,
  /** All values greater than the given value. */
  order_gt?: Maybe<Scalars['Int']>,
  /** All values greater than or equal the given value. */
  order_gte?: Maybe<Scalars['Int']>,
  repetitions?: Maybe<Scalars['Int']>,
  /** All values that are not equal to given value. */
  repetitions_not?: Maybe<Scalars['Int']>,
  /** All values that are contained in given list. */
  repetitions_in?: Maybe<Array<Scalars['Int']>>,
  /** All values that are not contained in given list. */
  repetitions_not_in?: Maybe<Array<Scalars['Int']>>,
  /** All values less than the given value. */
  repetitions_lt?: Maybe<Scalars['Int']>,
  /** All values less than or equal the given value. */
  repetitions_lte?: Maybe<Scalars['Int']>,
  /** All values greater than the given value. */
  repetitions_gt?: Maybe<Scalars['Int']>,
  /** All values greater than or equal the given value. */
  repetitions_gte?: Maybe<Scalars['Int']>,
  variation?: Maybe<Scalars['String']>,
  /** All values that are not equal to given value. */
  variation_not?: Maybe<Scalars['String']>,
  /** All values that are contained in given list. */
  variation_in?: Maybe<Array<Scalars['String']>>,
  /** All values that are not contained in given list. */
  variation_not_in?: Maybe<Array<Scalars['String']>>,
  /** All values less than the given value. */
  variation_lt?: Maybe<Scalars['String']>,
  /** All values less than or equal the given value. */
  variation_lte?: Maybe<Scalars['String']>,
  /** All values greater than the given value. */
  variation_gt?: Maybe<Scalars['String']>,
  /** All values greater than or equal the given value. */
  variation_gte?: Maybe<Scalars['String']>,
  /** All values containing the given string. */
  variation_contains?: Maybe<Scalars['String']>,
  /** All values not containing the given string. */
  variation_not_contains?: Maybe<Scalars['String']>,
  /** All values starting with the given string. */
  variation_starts_with?: Maybe<Scalars['String']>,
  /** All values not starting with the given string. */
  variation_not_starts_with?: Maybe<Scalars['String']>,
  /** All values ending with the given string. */
  variation_ends_with?: Maybe<Scalars['String']>,
  /** All values not ending with the given string. */
  variation_not_ends_with?: Maybe<Scalars['String']>,
};

export type ExerciseInstanceUpdateManyDataInput = {
  order?: Maybe<Scalars['Int']>,
  repetitions?: Maybe<Scalars['Int']>,
  variation?: Maybe<Scalars['String']>,
};

export type ExerciseInstanceUpdateManyWithoutParentBlockInstancesInput = {
  create?: Maybe<Array<ExerciseInstanceCreateWithoutParentBlockInstancesInput>>,
  connect?: Maybe<Array<ExerciseInstanceWhereUniqueInput>>,
  set?: Maybe<Array<ExerciseInstanceWhereUniqueInput>>,
  disconnect?: Maybe<Array<ExerciseInstanceWhereUniqueInput>>,
  delete?: Maybe<Array<ExerciseInstanceWhereUniqueInput>>,
  update?: Maybe<Array<ExerciseInstanceUpdateWithWhereUniqueWithoutParentBlockInstancesInput>>,
  updateMany?: Maybe<Array<ExerciseInstanceUpdateManyWithWhereNestedInput>>,
  deleteMany?: Maybe<Array<ExerciseInstanceScalarWhereInput>>,
  upsert?: Maybe<Array<ExerciseInstanceUpsertWithWhereUniqueWithoutParentBlockInstancesInput>>,
};

export type ExerciseInstanceUpdateManyWithWhereNestedInput = {
  where: ExerciseInstanceScalarWhereInput,
  data: ExerciseInstanceUpdateManyDataInput,
};

export type ExerciseInstanceUpdateWithoutParentBlockInstancesDataInput = {
  order?: Maybe<Scalars['Int']>,
  repetitions?: Maybe<Scalars['Int']>,
  variation?: Maybe<Scalars['String']>,
  exercise?: Maybe<ExerciseUpdateOneRequiredWithoutParentExerciseInstancesInput>,
};

export type ExerciseInstanceUpdateWithWhereUniqueWithoutParentBlockInstancesInput = {
  where: ExerciseInstanceWhereUniqueInput,
  data: ExerciseInstanceUpdateWithoutParentBlockInstancesDataInput,
};

export type ExerciseInstanceUpsertWithWhereUniqueWithoutParentBlockInstancesInput = {
  where: ExerciseInstanceWhereUniqueInput,
  update: ExerciseInstanceUpdateWithoutParentBlockInstancesDataInput,
  create: ExerciseInstanceCreateWithoutParentBlockInstancesInput,
};

export type ExerciseInstanceWhereInput = {
  /** Logical AND on all given filters. */
  AND?: Maybe<Array<ExerciseInstanceWhereInput>>,
  /** Logical OR on all given filters. */
  OR?: Maybe<Array<ExerciseInstanceWhereInput>>,
  /** Logical NOT on all given filters combined by AND. */
  NOT?: Maybe<Array<ExerciseInstanceWhereInput>>,
  id?: Maybe<Scalars['ID']>,
  /** All values that are not equal to given value. */
  id_not?: Maybe<Scalars['ID']>,
  /** All values that are contained in given list. */
  id_in?: Maybe<Array<Scalars['ID']>>,
  /** All values that are not contained in given list. */
  id_not_in?: Maybe<Array<Scalars['ID']>>,
  /** All values less than the given value. */
  id_lt?: Maybe<Scalars['ID']>,
  /** All values less than or equal the given value. */
  id_lte?: Maybe<Scalars['ID']>,
  /** All values greater than the given value. */
  id_gt?: Maybe<Scalars['ID']>,
  /** All values greater than or equal the given value. */
  id_gte?: Maybe<Scalars['ID']>,
  /** All values containing the given string. */
  id_contains?: Maybe<Scalars['ID']>,
  /** All values not containing the given string. */
  id_not_contains?: Maybe<Scalars['ID']>,
  /** All values starting with the given string. */
  id_starts_with?: Maybe<Scalars['ID']>,
  /** All values not starting with the given string. */
  id_not_starts_with?: Maybe<Scalars['ID']>,
  /** All values ending with the given string. */
  id_ends_with?: Maybe<Scalars['ID']>,
  /** All values not ending with the given string. */
  id_not_ends_with?: Maybe<Scalars['ID']>,
  order?: Maybe<Scalars['Int']>,
  /** All values that are not equal to given value. */
  order_not?: Maybe<Scalars['Int']>,
  /** All values that are contained in given list. */
  order_in?: Maybe<Array<Scalars['Int']>>,
  /** All values that are not contained in given list. */
  order_not_in?: Maybe<Array<Scalars['Int']>>,
  /** All values less than the given value. */
  order_lt?: Maybe<Scalars['Int']>,
  /** All values less than or equal the given value. */
  order_lte?: Maybe<Scalars['Int']>,
  /** All values greater than the given value. */
  order_gt?: Maybe<Scalars['Int']>,
  /** All values greater than or equal the given value. */
  order_gte?: Maybe<Scalars['Int']>,
  repetitions?: Maybe<Scalars['Int']>,
  /** All values that are not equal to given value. */
  repetitions_not?: Maybe<Scalars['Int']>,
  /** All values that are contained in given list. */
  repetitions_in?: Maybe<Array<Scalars['Int']>>,
  /** All values that are not contained in given list. */
  repetitions_not_in?: Maybe<Array<Scalars['Int']>>,
  /** All values less than the given value. */
  repetitions_lt?: Maybe<Scalars['Int']>,
  /** All values less than or equal the given value. */
  repetitions_lte?: Maybe<Scalars['Int']>,
  /** All values greater than the given value. */
  repetitions_gt?: Maybe<Scalars['Int']>,
  /** All values greater than or equal the given value. */
  repetitions_gte?: Maybe<Scalars['Int']>,
  variation?: Maybe<Scalars['String']>,
  /** All values that are not equal to given value. */
  variation_not?: Maybe<Scalars['String']>,
  /** All values that are contained in given list. */
  variation_in?: Maybe<Array<Scalars['String']>>,
  /** All values that are not contained in given list. */
  variation_not_in?: Maybe<Array<Scalars['String']>>,
  /** All values less than the given value. */
  variation_lt?: Maybe<Scalars['String']>,
  /** All values less than or equal the given value. */
  variation_lte?: Maybe<Scalars['String']>,
  /** All values greater than the given value. */
  variation_gt?: Maybe<Scalars['String']>,
  /** All values greater than or equal the given value. */
  variation_gte?: Maybe<Scalars['String']>,
  /** All values containing the given string. */
  variation_contains?: Maybe<Scalars['String']>,
  /** All values not containing the given string. */
  variation_not_contains?: Maybe<Scalars['String']>,
  /** All values starting with the given string. */
  variation_starts_with?: Maybe<Scalars['String']>,
  /** All values not starting with the given string. */
  variation_not_starts_with?: Maybe<Scalars['String']>,
  /** All values ending with the given string. */
  variation_ends_with?: Maybe<Scalars['String']>,
  /** All values not ending with the given string. */
  variation_not_ends_with?: Maybe<Scalars['String']>,
  exercise?: Maybe<ExerciseWhereInput>,
  parentBlockInstances?: Maybe<BlockWhereInput>,
};

export type ExerciseInstanceWhereUniqueInput = {
  id?: Maybe<Scalars['ID']>,
};

export enum ExerciseOrderByInput {
  IdAsc = 'id_ASC',
  IdDesc = 'id_DESC',
  NameAsc = 'name_ASC',
  NameDesc = 'name_DESC',
  DescriptionAsc = 'description_ASC',
  DescriptionDesc = 'description_DESC'
}

export type ExerciseUpdatebaseExerciseInput = {
  set?: Maybe<Array<Scalars['String']>>,
};

export type ExerciseUpdateOneRequiredWithoutParentExerciseInstancesInput = {
  create?: Maybe<ExerciseCreateWithoutParentExerciseInstancesInput>,
  connect?: Maybe<ExerciseWhereUniqueInput>,
  update?: Maybe<ExerciseUpdateWithoutParentExerciseInstancesDataInput>,
  upsert?: Maybe<ExerciseUpsertWithoutParentExerciseInstancesInput>,
};

export type ExerciseUpdatetargetsInput = {
  set?: Maybe<Array<Scalars['String']>>,
};

export type ExerciseUpdateWithoutParentExerciseInstancesDataInput = {
  name?: Maybe<Scalars['String']>,
  description?: Maybe<Scalars['String']>,
  targets?: Maybe<ExerciseUpdatetargetsInput>,
  baseExercise?: Maybe<ExerciseUpdatebaseExerciseInput>,
  videos?: Maybe<VideoUpdateManyInput>,
  pictures?: Maybe<PictureUpdateManyInput>,
};

export type ExerciseUpsertWithoutParentExerciseInstancesInput = {
  update: ExerciseUpdateWithoutParentExerciseInstancesDataInput,
  create: ExerciseCreateWithoutParentExerciseInstancesInput,
};

export type ExerciseWhereInput = {
  /** Logical AND on all given filters. */
  AND?: Maybe<Array<ExerciseWhereInput>>,
  /** Logical OR on all given filters. */
  OR?: Maybe<Array<ExerciseWhereInput>>,
  /** Logical NOT on all given filters combined by AND. */
  NOT?: Maybe<Array<ExerciseWhereInput>>,
  id?: Maybe<Scalars['ID']>,
  /** All values that are not equal to given value. */
  id_not?: Maybe<Scalars['ID']>,
  /** All values that are contained in given list. */
  id_in?: Maybe<Array<Scalars['ID']>>,
  /** All values that are not contained in given list. */
  id_not_in?: Maybe<Array<Scalars['ID']>>,
  /** All values less than the given value. */
  id_lt?: Maybe<Scalars['ID']>,
  /** All values less than or equal the given value. */
  id_lte?: Maybe<Scalars['ID']>,
  /** All values greater than the given value. */
  id_gt?: Maybe<Scalars['ID']>,
  /** All values greater than or equal the given value. */
  id_gte?: Maybe<Scalars['ID']>,
  /** All values containing the given string. */
  id_contains?: Maybe<Scalars['ID']>,
  /** All values not containing the given string. */
  id_not_contains?: Maybe<Scalars['ID']>,
  /** All values starting with the given string. */
  id_starts_with?: Maybe<Scalars['ID']>,
  /** All values not starting with the given string. */
  id_not_starts_with?: Maybe<Scalars['ID']>,
  /** All values ending with the given string. */
  id_ends_with?: Maybe<Scalars['ID']>,
  /** All values not ending with the given string. */
  id_not_ends_with?: Maybe<Scalars['ID']>,
  name?: Maybe<Scalars['String']>,
  /** All values that are not equal to given value. */
  name_not?: Maybe<Scalars['String']>,
  /** All values that are contained in given list. */
  name_in?: Maybe<Array<Scalars['String']>>,
  /** All values that are not contained in given list. */
  name_not_in?: Maybe<Array<Scalars['String']>>,
  /** All values less than the given value. */
  name_lt?: Maybe<Scalars['String']>,
  /** All values less than or equal the given value. */
  name_lte?: Maybe<Scalars['String']>,
  /** All values greater than the given value. */
  name_gt?: Maybe<Scalars['String']>,
  /** All values greater than or equal the given value. */
  name_gte?: Maybe<Scalars['String']>,
  /** All values containing the given string. */
  name_contains?: Maybe<Scalars['String']>,
  /** All values not containing the given string. */
  name_not_contains?: Maybe<Scalars['String']>,
  /** All values starting with the given string. */
  name_starts_with?: Maybe<Scalars['String']>,
  /** All values not starting with the given string. */
  name_not_starts_with?: Maybe<Scalars['String']>,
  /** All values ending with the given string. */
  name_ends_with?: Maybe<Scalars['String']>,
  /** All values not ending with the given string. */
  name_not_ends_with?: Maybe<Scalars['String']>,
  description?: Maybe<Scalars['String']>,
  /** All values that are not equal to given value. */
  description_not?: Maybe<Scalars['String']>,
  /** All values that are contained in given list. */
  description_in?: Maybe<Array<Scalars['String']>>,
  /** All values that are not contained in given list. */
  description_not_in?: Maybe<Array<Scalars['String']>>,
  /** All values less than the given value. */
  description_lt?: Maybe<Scalars['String']>,
  /** All values less than or equal the given value. */
  description_lte?: Maybe<Scalars['String']>,
  /** All values greater than the given value. */
  description_gt?: Maybe<Scalars['String']>,
  /** All values greater than or equal the given value. */
  description_gte?: Maybe<Scalars['String']>,
  /** All values containing the given string. */
  description_contains?: Maybe<Scalars['String']>,
  /** All values not containing the given string. */
  description_not_contains?: Maybe<Scalars['String']>,
  /** All values starting with the given string. */
  description_starts_with?: Maybe<Scalars['String']>,
  /** All values not starting with the given string. */
  description_not_starts_with?: Maybe<Scalars['String']>,
  /** All values ending with the given string. */
  description_ends_with?: Maybe<Scalars['String']>,
  /** All values not ending with the given string. */
  description_not_ends_with?: Maybe<Scalars['String']>,
  videos_every?: Maybe<VideoWhereInput>,
  videos_some?: Maybe<VideoWhereInput>,
  videos_none?: Maybe<VideoWhereInput>,
  pictures_every?: Maybe<PictureWhereInput>,
  pictures_some?: Maybe<PictureWhereInput>,
  pictures_none?: Maybe<PictureWhereInput>,
  parentExerciseInstances_every?: Maybe<ExerciseInstanceWhereInput>,
  parentExerciseInstances_some?: Maybe<ExerciseInstanceWhereInput>,
  parentExerciseInstances_none?: Maybe<ExerciseInstanceWhereInput>,
};

export type ExerciseWhereUniqueInput = {
  id?: Maybe<Scalars['ID']>,
};

export type File = Node & {
   __typename?: 'File',
  id: Scalars['ID'],
  createdAt: Scalars['DateTime'],
  updatedAt: Scalars['DateTime'],
  path: Scalars['String'],
  mimetype: Scalars['String'],
  user: User,
  thumbnail?: Maybe<Scalars['String']>,
  filename: Scalars['String'],
  encoding: Scalars['String'],
  size: Scalars['Int'],
  comment?: Maybe<Scalars['String']>,
};

export type FileCreateInput = {
  id?: Maybe<Scalars['ID']>,
  path: Scalars['String'],
  mimetype: Scalars['String'],
  thumbnail?: Maybe<Scalars['String']>,
  filename: Scalars['String'],
  encoding: Scalars['String'],
  size: Scalars['Int'],
  comment?: Maybe<Scalars['String']>,
  user: UserCreateOneInput,
};

export type FileCreateOneInput = {
  create?: Maybe<FileCreateInput>,
  connect?: Maybe<FileWhereUniqueInput>,
};

export enum FileOrderByInput {
  IdAsc = 'id_ASC',
  IdDesc = 'id_DESC',
  CreatedAtAsc = 'createdAt_ASC',
  CreatedAtDesc = 'createdAt_DESC',
  UpdatedAtAsc = 'updatedAt_ASC',
  UpdatedAtDesc = 'updatedAt_DESC',
  PathAsc = 'path_ASC',
  PathDesc = 'path_DESC',
  MimetypeAsc = 'mimetype_ASC',
  MimetypeDesc = 'mimetype_DESC',
  ThumbnailAsc = 'thumbnail_ASC',
  ThumbnailDesc = 'thumbnail_DESC',
  FilenameAsc = 'filename_ASC',
  FilenameDesc = 'filename_DESC',
  EncodingAsc = 'encoding_ASC',
  EncodingDesc = 'encoding_DESC',
  SizeAsc = 'size_ASC',
  SizeDesc = 'size_DESC',
  CommentAsc = 'comment_ASC',
  CommentDesc = 'comment_DESC'
}

export type FileUpdateDataInput = {
  path?: Maybe<Scalars['String']>,
  mimetype?: Maybe<Scalars['String']>,
  thumbnail?: Maybe<Scalars['String']>,
  filename?: Maybe<Scalars['String']>,
  encoding?: Maybe<Scalars['String']>,
  size?: Maybe<Scalars['Int']>,
  comment?: Maybe<Scalars['String']>,
  user?: Maybe<UserUpdateOneRequiredInput>,
};

export type FileUpdateOneInput = {
  create?: Maybe<FileCreateInput>,
  connect?: Maybe<FileWhereUniqueInput>,
  disconnect?: Maybe<Scalars['Boolean']>,
  delete?: Maybe<Scalars['Boolean']>,
  update?: Maybe<FileUpdateDataInput>,
  upsert?: Maybe<FileUpsertNestedInput>,
};

export type FileUpsertNestedInput = {
  update: FileUpdateDataInput,
  create: FileCreateInput,
};

export type FileWhereInput = {
  /** Logical AND on all given filters. */
  AND?: Maybe<Array<FileWhereInput>>,
  /** Logical OR on all given filters. */
  OR?: Maybe<Array<FileWhereInput>>,
  /** Logical NOT on all given filters combined by AND. */
  NOT?: Maybe<Array<FileWhereInput>>,
  id?: Maybe<Scalars['ID']>,
  /** All values that are not equal to given value. */
  id_not?: Maybe<Scalars['ID']>,
  /** All values that are contained in given list. */
  id_in?: Maybe<Array<Scalars['ID']>>,
  /** All values that are not contained in given list. */
  id_not_in?: Maybe<Array<Scalars['ID']>>,
  /** All values less than the given value. */
  id_lt?: Maybe<Scalars['ID']>,
  /** All values less than or equal the given value. */
  id_lte?: Maybe<Scalars['ID']>,
  /** All values greater than the given value. */
  id_gt?: Maybe<Scalars['ID']>,
  /** All values greater than or equal the given value. */
  id_gte?: Maybe<Scalars['ID']>,
  /** All values containing the given string. */
  id_contains?: Maybe<Scalars['ID']>,
  /** All values not containing the given string. */
  id_not_contains?: Maybe<Scalars['ID']>,
  /** All values starting with the given string. */
  id_starts_with?: Maybe<Scalars['ID']>,
  /** All values not starting with the given string. */
  id_not_starts_with?: Maybe<Scalars['ID']>,
  /** All values ending with the given string. */
  id_ends_with?: Maybe<Scalars['ID']>,
  /** All values not ending with the given string. */
  id_not_ends_with?: Maybe<Scalars['ID']>,
  createdAt?: Maybe<Scalars['DateTime']>,
  /** All values that are not equal to given value. */
  createdAt_not?: Maybe<Scalars['DateTime']>,
  /** All values that are contained in given list. */
  createdAt_in?: Maybe<Array<Scalars['DateTime']>>,
  /** All values that are not contained in given list. */
  createdAt_not_in?: Maybe<Array<Scalars['DateTime']>>,
  /** All values less than the given value. */
  createdAt_lt?: Maybe<Scalars['DateTime']>,
  /** All values less than or equal the given value. */
  createdAt_lte?: Maybe<Scalars['DateTime']>,
  /** All values greater than the given value. */
  createdAt_gt?: Maybe<Scalars['DateTime']>,
  /** All values greater than or equal the given value. */
  createdAt_gte?: Maybe<Scalars['DateTime']>,
  updatedAt?: Maybe<Scalars['DateTime']>,
  /** All values that are not equal to given value. */
  updatedAt_not?: Maybe<Scalars['DateTime']>,
  /** All values that are contained in given list. */
  updatedAt_in?: Maybe<Array<Scalars['DateTime']>>,
  /** All values that are not contained in given list. */
  updatedAt_not_in?: Maybe<Array<Scalars['DateTime']>>,
  /** All values less than the given value. */
  updatedAt_lt?: Maybe<Scalars['DateTime']>,
  /** All values less than or equal the given value. */
  updatedAt_lte?: Maybe<Scalars['DateTime']>,
  /** All values greater than the given value. */
  updatedAt_gt?: Maybe<Scalars['DateTime']>,
  /** All values greater than or equal the given value. */
  updatedAt_gte?: Maybe<Scalars['DateTime']>,
  path?: Maybe<Scalars['String']>,
  /** All values that are not equal to given value. */
  path_not?: Maybe<Scalars['String']>,
  /** All values that are contained in given list. */
  path_in?: Maybe<Array<Scalars['String']>>,
  /** All values that are not contained in given list. */
  path_not_in?: Maybe<Array<Scalars['String']>>,
  /** All values less than the given value. */
  path_lt?: Maybe<Scalars['String']>,
  /** All values less than or equal the given value. */
  path_lte?: Maybe<Scalars['String']>,
  /** All values greater than the given value. */
  path_gt?: Maybe<Scalars['String']>,
  /** All values greater than or equal the given value. */
  path_gte?: Maybe<Scalars['String']>,
  /** All values containing the given string. */
  path_contains?: Maybe<Scalars['String']>,
  /** All values not containing the given string. */
  path_not_contains?: Maybe<Scalars['String']>,
  /** All values starting with the given string. */
  path_starts_with?: Maybe<Scalars['String']>,
  /** All values not starting with the given string. */
  path_not_starts_with?: Maybe<Scalars['String']>,
  /** All values ending with the given string. */
  path_ends_with?: Maybe<Scalars['String']>,
  /** All values not ending with the given string. */
  path_not_ends_with?: Maybe<Scalars['String']>,
  mimetype?: Maybe<Scalars['String']>,
  /** All values that are not equal to given value. */
  mimetype_not?: Maybe<Scalars['String']>,
  /** All values that are contained in given list. */
  mimetype_in?: Maybe<Array<Scalars['String']>>,
  /** All values that are not contained in given list. */
  mimetype_not_in?: Maybe<Array<Scalars['String']>>,
  /** All values less than the given value. */
  mimetype_lt?: Maybe<Scalars['String']>,
  /** All values less than or equal the given value. */
  mimetype_lte?: Maybe<Scalars['String']>,
  /** All values greater than the given value. */
  mimetype_gt?: Maybe<Scalars['String']>,
  /** All values greater than or equal the given value. */
  mimetype_gte?: Maybe<Scalars['String']>,
  /** All values containing the given string. */
  mimetype_contains?: Maybe<Scalars['String']>,
  /** All values not containing the given string. */
  mimetype_not_contains?: Maybe<Scalars['String']>,
  /** All values starting with the given string. */
  mimetype_starts_with?: Maybe<Scalars['String']>,
  /** All values not starting with the given string. */
  mimetype_not_starts_with?: Maybe<Scalars['String']>,
  /** All values ending with the given string. */
  mimetype_ends_with?: Maybe<Scalars['String']>,
  /** All values not ending with the given string. */
  mimetype_not_ends_with?: Maybe<Scalars['String']>,
  thumbnail?: Maybe<Scalars['String']>,
  /** All values that are not equal to given value. */
  thumbnail_not?: Maybe<Scalars['String']>,
  /** All values that are contained in given list. */
  thumbnail_in?: Maybe<Array<Scalars['String']>>,
  /** All values that are not contained in given list. */
  thumbnail_not_in?: Maybe<Array<Scalars['String']>>,
  /** All values less than the given value. */
  thumbnail_lt?: Maybe<Scalars['String']>,
  /** All values less than or equal the given value. */
  thumbnail_lte?: Maybe<Scalars['String']>,
  /** All values greater than the given value. */
  thumbnail_gt?: Maybe<Scalars['String']>,
  /** All values greater than or equal the given value. */
  thumbnail_gte?: Maybe<Scalars['String']>,
  /** All values containing the given string. */
  thumbnail_contains?: Maybe<Scalars['String']>,
  /** All values not containing the given string. */
  thumbnail_not_contains?: Maybe<Scalars['String']>,
  /** All values starting with the given string. */
  thumbnail_starts_with?: Maybe<Scalars['String']>,
  /** All values not starting with the given string. */
  thumbnail_not_starts_with?: Maybe<Scalars['String']>,
  /** All values ending with the given string. */
  thumbnail_ends_with?: Maybe<Scalars['String']>,
  /** All values not ending with the given string. */
  thumbnail_not_ends_with?: Maybe<Scalars['String']>,
  filename?: Maybe<Scalars['String']>,
  /** All values that are not equal to given value. */
  filename_not?: Maybe<Scalars['String']>,
  /** All values that are contained in given list. */
  filename_in?: Maybe<Array<Scalars['String']>>,
  /** All values that are not contained in given list. */
  filename_not_in?: Maybe<Array<Scalars['String']>>,
  /** All values less than the given value. */
  filename_lt?: Maybe<Scalars['String']>,
  /** All values less than or equal the given value. */
  filename_lte?: Maybe<Scalars['String']>,
  /** All values greater than the given value. */
  filename_gt?: Maybe<Scalars['String']>,
  /** All values greater than or equal the given value. */
  filename_gte?: Maybe<Scalars['String']>,
  /** All values containing the given string. */
  filename_contains?: Maybe<Scalars['String']>,
  /** All values not containing the given string. */
  filename_not_contains?: Maybe<Scalars['String']>,
  /** All values starting with the given string. */
  filename_starts_with?: Maybe<Scalars['String']>,
  /** All values not starting with the given string. */
  filename_not_starts_with?: Maybe<Scalars['String']>,
  /** All values ending with the given string. */
  filename_ends_with?: Maybe<Scalars['String']>,
  /** All values not ending with the given string. */
  filename_not_ends_with?: Maybe<Scalars['String']>,
  encoding?: Maybe<Scalars['String']>,
  /** All values that are not equal to given value. */
  encoding_not?: Maybe<Scalars['String']>,
  /** All values that are contained in given list. */
  encoding_in?: Maybe<Array<Scalars['String']>>,
  /** All values that are not contained in given list. */
  encoding_not_in?: Maybe<Array<Scalars['String']>>,
  /** All values less than the given value. */
  encoding_lt?: Maybe<Scalars['String']>,
  /** All values less than or equal the given value. */
  encoding_lte?: Maybe<Scalars['String']>,
  /** All values greater than the given value. */
  encoding_gt?: Maybe<Scalars['String']>,
  /** All values greater than or equal the given value. */
  encoding_gte?: Maybe<Scalars['String']>,
  /** All values containing the given string. */
  encoding_contains?: Maybe<Scalars['String']>,
  /** All values not containing the given string. */
  encoding_not_contains?: Maybe<Scalars['String']>,
  /** All values starting with the given string. */
  encoding_starts_with?: Maybe<Scalars['String']>,
  /** All values not starting with the given string. */
  encoding_not_starts_with?: Maybe<Scalars['String']>,
  /** All values ending with the given string. */
  encoding_ends_with?: Maybe<Scalars['String']>,
  /** All values not ending with the given string. */
  encoding_not_ends_with?: Maybe<Scalars['String']>,
  size?: Maybe<Scalars['Int']>,
  /** All values that are not equal to given value. */
  size_not?: Maybe<Scalars['Int']>,
  /** All values that are contained in given list. */
  size_in?: Maybe<Array<Scalars['Int']>>,
  /** All values that are not contained in given list. */
  size_not_in?: Maybe<Array<Scalars['Int']>>,
  /** All values less than the given value. */
  size_lt?: Maybe<Scalars['Int']>,
  /** All values less than or equal the given value. */
  size_lte?: Maybe<Scalars['Int']>,
  /** All values greater than the given value. */
  size_gt?: Maybe<Scalars['Int']>,
  /** All values greater than or equal the given value. */
  size_gte?: Maybe<Scalars['Int']>,
  comment?: Maybe<Scalars['String']>,
  /** All values that are not equal to given value. */
  comment_not?: Maybe<Scalars['String']>,
  /** All values that are contained in given list. */
  comment_in?: Maybe<Array<Scalars['String']>>,
  /** All values that are not contained in given list. */
  comment_not_in?: Maybe<Array<Scalars['String']>>,
  /** All values less than the given value. */
  comment_lt?: Maybe<Scalars['String']>,
  /** All values less than or equal the given value. */
  comment_lte?: Maybe<Scalars['String']>,
  /** All values greater than the given value. */
  comment_gt?: Maybe<Scalars['String']>,
  /** All values greater than or equal the given value. */
  comment_gte?: Maybe<Scalars['String']>,
  /** All values containing the given string. */
  comment_contains?: Maybe<Scalars['String']>,
  /** All values not containing the given string. */
  comment_not_contains?: Maybe<Scalars['String']>,
  /** All values starting with the given string. */
  comment_starts_with?: Maybe<Scalars['String']>,
  /** All values not starting with the given string. */
  comment_not_starts_with?: Maybe<Scalars['String']>,
  /** All values ending with the given string. */
  comment_ends_with?: Maybe<Scalars['String']>,
  /** All values not ending with the given string. */
  comment_not_ends_with?: Maybe<Scalars['String']>,
  user?: Maybe<UserWhereInput>,
};

export type FileWhereUniqueInput = {
  id?: Maybe<Scalars['ID']>,
};

export type Format = Node & {
   __typename?: 'Format',
  id: Scalars['ID'],
  name: Scalars['String'],
  description: Scalars['String'],
};

export type FormatCreateInput = {
  id?: Maybe<Scalars['ID']>,
  name: Scalars['String'],
  description: Scalars['String'],
};

export type FormatCreateOneInput = {
  create?: Maybe<FormatCreateInput>,
  connect?: Maybe<FormatWhereUniqueInput>,
};

export enum FormatOrderByInput {
  IdAsc = 'id_ASC',
  IdDesc = 'id_DESC',
  NameAsc = 'name_ASC',
  NameDesc = 'name_DESC',
  DescriptionAsc = 'description_ASC',
  DescriptionDesc = 'description_DESC'
}

export type FormatUpdateDataInput = {
  name?: Maybe<Scalars['String']>,
  description?: Maybe<Scalars['String']>,
};

export type FormatUpdateOneRequiredInput = {
  create?: Maybe<FormatCreateInput>,
  connect?: Maybe<FormatWhereUniqueInput>,
  update?: Maybe<FormatUpdateDataInput>,
  upsert?: Maybe<FormatUpsertNestedInput>,
};

export type FormatUpsertNestedInput = {
  update: FormatUpdateDataInput,
  create: FormatCreateInput,
};

export type FormatWhereInput = {
  /** Logical AND on all given filters. */
  AND?: Maybe<Array<FormatWhereInput>>,
  /** Logical OR on all given filters. */
  OR?: Maybe<Array<FormatWhereInput>>,
  /** Logical NOT on all given filters combined by AND. */
  NOT?: Maybe<Array<FormatWhereInput>>,
  id?: Maybe<Scalars['ID']>,
  /** All values that are not equal to given value. */
  id_not?: Maybe<Scalars['ID']>,
  /** All values that are contained in given list. */
  id_in?: Maybe<Array<Scalars['ID']>>,
  /** All values that are not contained in given list. */
  id_not_in?: Maybe<Array<Scalars['ID']>>,
  /** All values less than the given value. */
  id_lt?: Maybe<Scalars['ID']>,
  /** All values less than or equal the given value. */
  id_lte?: Maybe<Scalars['ID']>,
  /** All values greater than the given value. */
  id_gt?: Maybe<Scalars['ID']>,
  /** All values greater than or equal the given value. */
  id_gte?: Maybe<Scalars['ID']>,
  /** All values containing the given string. */
  id_contains?: Maybe<Scalars['ID']>,
  /** All values not containing the given string. */
  id_not_contains?: Maybe<Scalars['ID']>,
  /** All values starting with the given string. */
  id_starts_with?: Maybe<Scalars['ID']>,
  /** All values not starting with the given string. */
  id_not_starts_with?: Maybe<Scalars['ID']>,
  /** All values ending with the given string. */
  id_ends_with?: Maybe<Scalars['ID']>,
  /** All values not ending with the given string. */
  id_not_ends_with?: Maybe<Scalars['ID']>,
  name?: Maybe<Scalars['String']>,
  /** All values that are not equal to given value. */
  name_not?: Maybe<Scalars['String']>,
  /** All values that are contained in given list. */
  name_in?: Maybe<Array<Scalars['String']>>,
  /** All values that are not contained in given list. */
  name_not_in?: Maybe<Array<Scalars['String']>>,
  /** All values less than the given value. */
  name_lt?: Maybe<Scalars['String']>,
  /** All values less than or equal the given value. */
  name_lte?: Maybe<Scalars['String']>,
  /** All values greater than the given value. */
  name_gt?: Maybe<Scalars['String']>,
  /** All values greater than or equal the given value. */
  name_gte?: Maybe<Scalars['String']>,
  /** All values containing the given string. */
  name_contains?: Maybe<Scalars['String']>,
  /** All values not containing the given string. */
  name_not_contains?: Maybe<Scalars['String']>,
  /** All values starting with the given string. */
  name_starts_with?: Maybe<Scalars['String']>,
  /** All values not starting with the given string. */
  name_not_starts_with?: Maybe<Scalars['String']>,
  /** All values ending with the given string. */
  name_ends_with?: Maybe<Scalars['String']>,
  /** All values not ending with the given string. */
  name_not_ends_with?: Maybe<Scalars['String']>,
  description?: Maybe<Scalars['String']>,
  /** All values that are not equal to given value. */
  description_not?: Maybe<Scalars['String']>,
  /** All values that are contained in given list. */
  description_in?: Maybe<Array<Scalars['String']>>,
  /** All values that are not contained in given list. */
  description_not_in?: Maybe<Array<Scalars['String']>>,
  /** All values less than the given value. */
  description_lt?: Maybe<Scalars['String']>,
  /** All values less than or equal the given value. */
  description_lte?: Maybe<Scalars['String']>,
  /** All values greater than the given value. */
  description_gt?: Maybe<Scalars['String']>,
  /** All values greater than or equal the given value. */
  description_gte?: Maybe<Scalars['String']>,
  /** All values containing the given string. */
  description_contains?: Maybe<Scalars['String']>,
  /** All values not containing the given string. */
  description_not_contains?: Maybe<Scalars['String']>,
  /** All values starting with the given string. */
  description_starts_with?: Maybe<Scalars['String']>,
  /** All values not starting with the given string. */
  description_not_starts_with?: Maybe<Scalars['String']>,
  /** All values ending with the given string. */
  description_ends_with?: Maybe<Scalars['String']>,
  /** All values not ending with the given string. */
  description_not_ends_with?: Maybe<Scalars['String']>,
};

export type FormatWhereUniqueInput = {
  id?: Maybe<Scalars['ID']>,
};

export type FsFile = {
   __typename?: 'FsFile',
  filename: Scalars['String'],
  path: Scalars['String'],
  size: Scalars['Int'],
  ctime: Scalars['DateTime'],
  mtime: Scalars['DateTime'],
};

export type Mutation = {
   __typename?: 'Mutation',
  uploadFile: File,
  createVideo: Video,
  updateVideo: Video,
  createUser: User,
  updateUser: User,
  deleteUser: User,
  updatePermissions: User,
  createTraining: Training,
  deleteTraining: Training,
  updateTraining: Training,
  createTrainingType: TrainingType,
  createFormat: Format,
  userLogin: User,
  userLogout: Scalars['String'],
  userSignup: User,
  requestReset: Scalars['String'],
  resetPassword: User,
  register: Training,
  deregister: Training,
  publish: Training,
};


export type MutationUploadFileArgs = {
  file: Scalars['Upload'],
  comment?: Maybe<Scalars['String']>
};


export type MutationCreateVideoArgs = {
  data?: Maybe<VideoCreateInput>
};


export type MutationUpdateVideoArgs = {
  data: VideoUpdateInput,
  where: VideoWhereUniqueInput
};


export type MutationCreateUserArgs = {
  data: UserCreateInput
};


export type MutationUpdateUserArgs = {
  id: Scalars['ID'],
  data: UserUpdateInput
};


export type MutationDeleteUserArgs = {
  id: Scalars['ID']
};


export type MutationUpdatePermissionsArgs = {
  id: Scalars['ID'],
  permissions: Array<Permission>
};


export type MutationCreateTrainingArgs = {
  title: Scalars['String'],
  type: TrainingTypeCreateOneInput,
  trainingDate: Scalars['DateTime'],
  location: Scalars['String'],
  attendance?: Maybe<Scalars['Int']>,
  published: Scalars['Boolean'],
  blocks?: Maybe<BlockInstanceCreateManyWithoutParentTrainingInput>
};


export type MutationDeleteTrainingArgs = {
  id: Scalars['ID']
};


export type MutationUpdateTrainingArgs = {
  where: TrainingWhereUniqueInput,
  data: TrainingUpdateInput
};


export type MutationCreateTrainingTypeArgs = {
  name: Scalars['String'],
  description: Scalars['String']
};


export type MutationCreateFormatArgs = {
  name: Scalars['String'],
  description: Scalars['String']
};


export type MutationUserLoginArgs = {
  email: Scalars['String'],
  password: Scalars['String']
};


export type MutationUserSignupArgs = {
  name: Scalars['String'],
  email: Scalars['String'],
  password: Scalars['String']
};


export type MutationRequestResetArgs = {
  email: Scalars['String']
};


export type MutationResetPasswordArgs = {
  token: Scalars['String'],
  password: Scalars['String']
};


export type MutationRegisterArgs = {
  training: Scalars['ID']
};


export type MutationDeregisterArgs = {
  training: Scalars['ID']
};


export type MutationPublishArgs = {
  training: Scalars['ID'],
  status?: Maybe<Scalars['Boolean']>
};

/** An object with an ID */
export type Node = {
  /** The id of the object. */
  id: Scalars['ID'],
};

/** Information about pagination in a connection. */
export type PageInfo = {
   __typename?: 'PageInfo',
  /** When paginating forwards, are there more items? */
  hasNextPage: Scalars['Boolean'],
  /** When paginating backwards, are there more items? */
  hasPreviousPage: Scalars['Boolean'],
  /** When paginating backwards, the cursor to continue. */
  startCursor?: Maybe<Scalars['String']>,
  /** When paginating forwards, the cursor to continue. */
  endCursor?: Maybe<Scalars['String']>,
};

export enum Permission {
  Admin = 'ADMIN',
  Instructor = 'INSTRUCTOR'
}

export type Picture = Node & {
   __typename?: 'Picture',
  id: Scalars['ID'],
  title: Scalars['String'],
  description: Scalars['String'],
  file?: Maybe<File>,
  link?: Maybe<Scalars['String']>,
};

export type PictureCreateInput = {
  id?: Maybe<Scalars['ID']>,
  title: Scalars['String'],
  description: Scalars['String'],
  link?: Maybe<Scalars['String']>,
  file?: Maybe<FileCreateOneInput>,
};

export type PictureCreateManyInput = {
  create?: Maybe<Array<PictureCreateInput>>,
  connect?: Maybe<Array<PictureWhereUniqueInput>>,
};

export type PictureCreateOneInput = {
  create?: Maybe<PictureCreateInput>,
  connect?: Maybe<PictureWhereUniqueInput>,
};

export enum PictureOrderByInput {
  IdAsc = 'id_ASC',
  IdDesc = 'id_DESC',
  TitleAsc = 'title_ASC',
  TitleDesc = 'title_DESC',
  DescriptionAsc = 'description_ASC',
  DescriptionDesc = 'description_DESC',
  LinkAsc = 'link_ASC',
  LinkDesc = 'link_DESC'
}

export type PictureScalarWhereInput = {
  /** Logical AND on all given filters. */
  AND?: Maybe<Array<PictureScalarWhereInput>>,
  /** Logical OR on all given filters. */
  OR?: Maybe<Array<PictureScalarWhereInput>>,
  /** Logical NOT on all given filters combined by AND. */
  NOT?: Maybe<Array<PictureScalarWhereInput>>,
  id?: Maybe<Scalars['ID']>,
  /** All values that are not equal to given value. */
  id_not?: Maybe<Scalars['ID']>,
  /** All values that are contained in given list. */
  id_in?: Maybe<Array<Scalars['ID']>>,
  /** All values that are not contained in given list. */
  id_not_in?: Maybe<Array<Scalars['ID']>>,
  /** All values less than the given value. */
  id_lt?: Maybe<Scalars['ID']>,
  /** All values less than or equal the given value. */
  id_lte?: Maybe<Scalars['ID']>,
  /** All values greater than the given value. */
  id_gt?: Maybe<Scalars['ID']>,
  /** All values greater than or equal the given value. */
  id_gte?: Maybe<Scalars['ID']>,
  /** All values containing the given string. */
  id_contains?: Maybe<Scalars['ID']>,
  /** All values not containing the given string. */
  id_not_contains?: Maybe<Scalars['ID']>,
  /** All values starting with the given string. */
  id_starts_with?: Maybe<Scalars['ID']>,
  /** All values not starting with the given string. */
  id_not_starts_with?: Maybe<Scalars['ID']>,
  /** All values ending with the given string. */
  id_ends_with?: Maybe<Scalars['ID']>,
  /** All values not ending with the given string. */
  id_not_ends_with?: Maybe<Scalars['ID']>,
  title?: Maybe<Scalars['String']>,
  /** All values that are not equal to given value. */
  title_not?: Maybe<Scalars['String']>,
  /** All values that are contained in given list. */
  title_in?: Maybe<Array<Scalars['String']>>,
  /** All values that are not contained in given list. */
  title_not_in?: Maybe<Array<Scalars['String']>>,
  /** All values less than the given value. */
  title_lt?: Maybe<Scalars['String']>,
  /** All values less than or equal the given value. */
  title_lte?: Maybe<Scalars['String']>,
  /** All values greater than the given value. */
  title_gt?: Maybe<Scalars['String']>,
  /** All values greater than or equal the given value. */
  title_gte?: Maybe<Scalars['String']>,
  /** All values containing the given string. */
  title_contains?: Maybe<Scalars['String']>,
  /** All values not containing the given string. */
  title_not_contains?: Maybe<Scalars['String']>,
  /** All values starting with the given string. */
  title_starts_with?: Maybe<Scalars['String']>,
  /** All values not starting with the given string. */
  title_not_starts_with?: Maybe<Scalars['String']>,
  /** All values ending with the given string. */
  title_ends_with?: Maybe<Scalars['String']>,
  /** All values not ending with the given string. */
  title_not_ends_with?: Maybe<Scalars['String']>,
  description?: Maybe<Scalars['String']>,
  /** All values that are not equal to given value. */
  description_not?: Maybe<Scalars['String']>,
  /** All values that are contained in given list. */
  description_in?: Maybe<Array<Scalars['String']>>,
  /** All values that are not contained in given list. */
  description_not_in?: Maybe<Array<Scalars['String']>>,
  /** All values less than the given value. */
  description_lt?: Maybe<Scalars['String']>,
  /** All values less than or equal the given value. */
  description_lte?: Maybe<Scalars['String']>,
  /** All values greater than the given value. */
  description_gt?: Maybe<Scalars['String']>,
  /** All values greater than or equal the given value. */
  description_gte?: Maybe<Scalars['String']>,
  /** All values containing the given string. */
  description_contains?: Maybe<Scalars['String']>,
  /** All values not containing the given string. */
  description_not_contains?: Maybe<Scalars['String']>,
  /** All values starting with the given string. */
  description_starts_with?: Maybe<Scalars['String']>,
  /** All values not starting with the given string. */
  description_not_starts_with?: Maybe<Scalars['String']>,
  /** All values ending with the given string. */
  description_ends_with?: Maybe<Scalars['String']>,
  /** All values not ending with the given string. */
  description_not_ends_with?: Maybe<Scalars['String']>,
  link?: Maybe<Scalars['String']>,
  /** All values that are not equal to given value. */
  link_not?: Maybe<Scalars['String']>,
  /** All values that are contained in given list. */
  link_in?: Maybe<Array<Scalars['String']>>,
  /** All values that are not contained in given list. */
  link_not_in?: Maybe<Array<Scalars['String']>>,
  /** All values less than the given value. */
  link_lt?: Maybe<Scalars['String']>,
  /** All values less than or equal the given value. */
  link_lte?: Maybe<Scalars['String']>,
  /** All values greater than the given value. */
  link_gt?: Maybe<Scalars['String']>,
  /** All values greater than or equal the given value. */
  link_gte?: Maybe<Scalars['String']>,
  /** All values containing the given string. */
  link_contains?: Maybe<Scalars['String']>,
  /** All values not containing the given string. */
  link_not_contains?: Maybe<Scalars['String']>,
  /** All values starting with the given string. */
  link_starts_with?: Maybe<Scalars['String']>,
  /** All values not starting with the given string. */
  link_not_starts_with?: Maybe<Scalars['String']>,
  /** All values ending with the given string. */
  link_ends_with?: Maybe<Scalars['String']>,
  /** All values not ending with the given string. */
  link_not_ends_with?: Maybe<Scalars['String']>,
};

export type PictureUpdateDataInput = {
  title?: Maybe<Scalars['String']>,
  description?: Maybe<Scalars['String']>,
  link?: Maybe<Scalars['String']>,
  file?: Maybe<FileUpdateOneInput>,
};

export type PictureUpdateManyDataInput = {
  title?: Maybe<Scalars['String']>,
  description?: Maybe<Scalars['String']>,
  link?: Maybe<Scalars['String']>,
};

export type PictureUpdateManyInput = {
  create?: Maybe<Array<PictureCreateInput>>,
  connect?: Maybe<Array<PictureWhereUniqueInput>>,
  set?: Maybe<Array<PictureWhereUniqueInput>>,
  disconnect?: Maybe<Array<PictureWhereUniqueInput>>,
  delete?: Maybe<Array<PictureWhereUniqueInput>>,
  update?: Maybe<Array<PictureUpdateWithWhereUniqueNestedInput>>,
  updateMany?: Maybe<Array<PictureUpdateManyWithWhereNestedInput>>,
  deleteMany?: Maybe<Array<PictureScalarWhereInput>>,
  upsert?: Maybe<Array<PictureUpsertWithWhereUniqueNestedInput>>,
};

export type PictureUpdateManyWithWhereNestedInput = {
  where: PictureScalarWhereInput,
  data: PictureUpdateManyDataInput,
};

export type PictureUpdateOneInput = {
  create?: Maybe<PictureCreateInput>,
  connect?: Maybe<PictureWhereUniqueInput>,
  disconnect?: Maybe<Scalars['Boolean']>,
  delete?: Maybe<Scalars['Boolean']>,
  update?: Maybe<PictureUpdateDataInput>,
  upsert?: Maybe<PictureUpsertNestedInput>,
};

export type PictureUpdateWithWhereUniqueNestedInput = {
  where: PictureWhereUniqueInput,
  data: PictureUpdateDataInput,
};

export type PictureUpsertNestedInput = {
  update: PictureUpdateDataInput,
  create: PictureCreateInput,
};

export type PictureUpsertWithWhereUniqueNestedInput = {
  where: PictureWhereUniqueInput,
  update: PictureUpdateDataInput,
  create: PictureCreateInput,
};

export type PictureWhereInput = {
  /** Logical AND on all given filters. */
  AND?: Maybe<Array<PictureWhereInput>>,
  /** Logical OR on all given filters. */
  OR?: Maybe<Array<PictureWhereInput>>,
  /** Logical NOT on all given filters combined by AND. */
  NOT?: Maybe<Array<PictureWhereInput>>,
  id?: Maybe<Scalars['ID']>,
  /** All values that are not equal to given value. */
  id_not?: Maybe<Scalars['ID']>,
  /** All values that are contained in given list. */
  id_in?: Maybe<Array<Scalars['ID']>>,
  /** All values that are not contained in given list. */
  id_not_in?: Maybe<Array<Scalars['ID']>>,
  /** All values less than the given value. */
  id_lt?: Maybe<Scalars['ID']>,
  /** All values less than or equal the given value. */
  id_lte?: Maybe<Scalars['ID']>,
  /** All values greater than the given value. */
  id_gt?: Maybe<Scalars['ID']>,
  /** All values greater than or equal the given value. */
  id_gte?: Maybe<Scalars['ID']>,
  /** All values containing the given string. */
  id_contains?: Maybe<Scalars['ID']>,
  /** All values not containing the given string. */
  id_not_contains?: Maybe<Scalars['ID']>,
  /** All values starting with the given string. */
  id_starts_with?: Maybe<Scalars['ID']>,
  /** All values not starting with the given string. */
  id_not_starts_with?: Maybe<Scalars['ID']>,
  /** All values ending with the given string. */
  id_ends_with?: Maybe<Scalars['ID']>,
  /** All values not ending with the given string. */
  id_not_ends_with?: Maybe<Scalars['ID']>,
  title?: Maybe<Scalars['String']>,
  /** All values that are not equal to given value. */
  title_not?: Maybe<Scalars['String']>,
  /** All values that are contained in given list. */
  title_in?: Maybe<Array<Scalars['String']>>,
  /** All values that are not contained in given list. */
  title_not_in?: Maybe<Array<Scalars['String']>>,
  /** All values less than the given value. */
  title_lt?: Maybe<Scalars['String']>,
  /** All values less than or equal the given value. */
  title_lte?: Maybe<Scalars['String']>,
  /** All values greater than the given value. */
  title_gt?: Maybe<Scalars['String']>,
  /** All values greater than or equal the given value. */
  title_gte?: Maybe<Scalars['String']>,
  /** All values containing the given string. */
  title_contains?: Maybe<Scalars['String']>,
  /** All values not containing the given string. */
  title_not_contains?: Maybe<Scalars['String']>,
  /** All values starting with the given string. */
  title_starts_with?: Maybe<Scalars['String']>,
  /** All values not starting with the given string. */
  title_not_starts_with?: Maybe<Scalars['String']>,
  /** All values ending with the given string. */
  title_ends_with?: Maybe<Scalars['String']>,
  /** All values not ending with the given string. */
  title_not_ends_with?: Maybe<Scalars['String']>,
  description?: Maybe<Scalars['String']>,
  /** All values that are not equal to given value. */
  description_not?: Maybe<Scalars['String']>,
  /** All values that are contained in given list. */
  description_in?: Maybe<Array<Scalars['String']>>,
  /** All values that are not contained in given list. */
  description_not_in?: Maybe<Array<Scalars['String']>>,
  /** All values less than the given value. */
  description_lt?: Maybe<Scalars['String']>,
  /** All values less than or equal the given value. */
  description_lte?: Maybe<Scalars['String']>,
  /** All values greater than the given value. */
  description_gt?: Maybe<Scalars['String']>,
  /** All values greater than or equal the given value. */
  description_gte?: Maybe<Scalars['String']>,
  /** All values containing the given string. */
  description_contains?: Maybe<Scalars['String']>,
  /** All values not containing the given string. */
  description_not_contains?: Maybe<Scalars['String']>,
  /** All values starting with the given string. */
  description_starts_with?: Maybe<Scalars['String']>,
  /** All values not starting with the given string. */
  description_not_starts_with?: Maybe<Scalars['String']>,
  /** All values ending with the given string. */
  description_ends_with?: Maybe<Scalars['String']>,
  /** All values not ending with the given string. */
  description_not_ends_with?: Maybe<Scalars['String']>,
  link?: Maybe<Scalars['String']>,
  /** All values that are not equal to given value. */
  link_not?: Maybe<Scalars['String']>,
  /** All values that are contained in given list. */
  link_in?: Maybe<Array<Scalars['String']>>,
  /** All values that are not contained in given list. */
  link_not_in?: Maybe<Array<Scalars['String']>>,
  /** All values less than the given value. */
  link_lt?: Maybe<Scalars['String']>,
  /** All values less than or equal the given value. */
  link_lte?: Maybe<Scalars['String']>,
  /** All values greater than the given value. */
  link_gt?: Maybe<Scalars['String']>,
  /** All values greater than or equal the given value. */
  link_gte?: Maybe<Scalars['String']>,
  /** All values containing the given string. */
  link_contains?: Maybe<Scalars['String']>,
  /** All values not containing the given string. */
  link_not_contains?: Maybe<Scalars['String']>,
  /** All values starting with the given string. */
  link_starts_with?: Maybe<Scalars['String']>,
  /** All values not starting with the given string. */
  link_not_starts_with?: Maybe<Scalars['String']>,
  /** All values ending with the given string. */
  link_ends_with?: Maybe<Scalars['String']>,
  /** All values not ending with the given string. */
  link_not_ends_with?: Maybe<Scalars['String']>,
  file?: Maybe<FileWhereInput>,
};

export type PictureWhereUniqueInput = {
  id?: Maybe<Scalars['ID']>,
};

export type Query = {
   __typename?: 'Query',
  trainingArchive: TrainingArchive,
  publishedTrainings: Array<Training>,
  training: Training,
  trainings: Array<Training>,
  trainingsCount: TrainingConnection,
  fsFiles: Array<FsFile>,
  files: Array<File>,
  videos: Array<Video>,
  video: Video,
  currentUser: User,
  user?: Maybe<User>,
  users: Array<User>,
  trainingType?: Maybe<TrainingType>,
  trainingTypes: Array<TrainingType>,
  block?: Maybe<Block>,
  blocks: Array<Block>,
  format?: Maybe<Format>,
  formats: Array<Format>,
  exercise?: Maybe<Exercise>,
  exercises: Array<Exercise>,
};


export type QueryTrainingArchiveArgs = {
  skip?: Maybe<Scalars['Int']>,
  first?: Maybe<Scalars['Int']>
};


export type QueryPublishedTrainingsArgs = {
  where?: Maybe<TrainingWhereInput>,
  orderBy?: Maybe<TrainingOrderByInput>,
  skip?: Maybe<Scalars['Int']>,
  first?: Maybe<Scalars['Int']>
};


export type QueryTrainingArgs = {
  id?: Maybe<Scalars['ID']>
};


export type QueryTrainingsArgs = {
  where?: Maybe<TrainingWhereInput>,
  orderBy?: Maybe<TrainingOrderByInput>,
  skip?: Maybe<Scalars['Int']>,
  after?: Maybe<Scalars['String']>,
  before?: Maybe<Scalars['String']>,
  first?: Maybe<Scalars['Int']>,
  last?: Maybe<Scalars['Int']>
};


export type QueryTrainingsCountArgs = {
  where?: Maybe<TrainingWhereInput>
};


export type QueryFsFilesArgs = {
  directory: Scalars['String']
};


export type QueryFilesArgs = {
  where?: Maybe<FileWhereInput>,
  orderBy?: Maybe<FileOrderByInput>,
  skip?: Maybe<Scalars['Int']>,
  after?: Maybe<Scalars['String']>,
  before?: Maybe<Scalars['String']>,
  first?: Maybe<Scalars['Int']>,
  last?: Maybe<Scalars['Int']>
};


export type QueryVideoArgs = {
  where?: Maybe<VideoWhereUniqueInput>
};


export type QueryUserArgs = {
  where: UserWhereUniqueInput
};


export type QueryUsersArgs = {
  where?: Maybe<UserWhereInput>,
  orderBy?: Maybe<UserOrderByInput>,
  skip?: Maybe<Scalars['Int']>,
  after?: Maybe<Scalars['String']>,
  before?: Maybe<Scalars['String']>,
  first?: Maybe<Scalars['Int']>,
  last?: Maybe<Scalars['Int']>
};


export type QueryTrainingTypeArgs = {
  where: TrainingTypeWhereUniqueInput
};


export type QueryTrainingTypesArgs = {
  where?: Maybe<TrainingTypeWhereInput>,
  orderBy?: Maybe<TrainingTypeOrderByInput>,
  skip?: Maybe<Scalars['Int']>,
  after?: Maybe<Scalars['String']>,
  before?: Maybe<Scalars['String']>,
  first?: Maybe<Scalars['Int']>,
  last?: Maybe<Scalars['Int']>
};


export type QueryBlockArgs = {
  where: BlockWhereUniqueInput
};


export type QueryBlocksArgs = {
  where?: Maybe<BlockWhereInput>,
  orderBy?: Maybe<BlockOrderByInput>,
  skip?: Maybe<Scalars['Int']>,
  after?: Maybe<Scalars['String']>,
  before?: Maybe<Scalars['String']>,
  first?: Maybe<Scalars['Int']>,
  last?: Maybe<Scalars['Int']>
};


export type QueryFormatArgs = {
  where: FormatWhereUniqueInput
};


export type QueryFormatsArgs = {
  where?: Maybe<FormatWhereInput>,
  orderBy?: Maybe<FormatOrderByInput>,
  skip?: Maybe<Scalars['Int']>,
  after?: Maybe<Scalars['String']>,
  before?: Maybe<Scalars['String']>,
  first?: Maybe<Scalars['Int']>,
  last?: Maybe<Scalars['Int']>
};


export type QueryExerciseArgs = {
  where: ExerciseWhereUniqueInput
};


export type QueryExercisesArgs = {
  where?: Maybe<ExerciseWhereInput>,
  orderBy?: Maybe<ExerciseOrderByInput>,
  skip?: Maybe<Scalars['Int']>,
  after?: Maybe<Scalars['String']>,
  before?: Maybe<Scalars['String']>,
  first?: Maybe<Scalars['Int']>,
  last?: Maybe<Scalars['Int']>
};

export type Rating = Node & {
   __typename?: 'Rating',
  id: Scalars['ID'],
  user: User,
  value: Scalars['Int'],
  comment: Scalars['String'],
  createdAt: Scalars['DateTime'],
};

export type RatingCreateInput = {
  id?: Maybe<Scalars['ID']>,
  value: Scalars['Int'],
  comment: Scalars['String'],
  user: UserCreateOneWithoutRatingsInput,
};

export type RatingCreateManyInput = {
  create?: Maybe<Array<RatingCreateInput>>,
  connect?: Maybe<Array<RatingWhereUniqueInput>>,
};

export type RatingCreateManyWithoutUserInput = {
  create?: Maybe<Array<RatingCreateWithoutUserInput>>,
  connect?: Maybe<Array<RatingWhereUniqueInput>>,
};

export type RatingCreateWithoutUserInput = {
  id?: Maybe<Scalars['ID']>,
  value: Scalars['Int'],
  comment: Scalars['String'],
};

export enum RatingOrderByInput {
  IdAsc = 'id_ASC',
  IdDesc = 'id_DESC',
  ValueAsc = 'value_ASC',
  ValueDesc = 'value_DESC',
  CommentAsc = 'comment_ASC',
  CommentDesc = 'comment_DESC',
  CreatedAtAsc = 'createdAt_ASC',
  CreatedAtDesc = 'createdAt_DESC'
}

export type RatingScalarWhereInput = {
  /** Logical AND on all given filters. */
  AND?: Maybe<Array<RatingScalarWhereInput>>,
  /** Logical OR on all given filters. */
  OR?: Maybe<Array<RatingScalarWhereInput>>,
  /** Logical NOT on all given filters combined by AND. */
  NOT?: Maybe<Array<RatingScalarWhereInput>>,
  id?: Maybe<Scalars['ID']>,
  /** All values that are not equal to given value. */
  id_not?: Maybe<Scalars['ID']>,
  /** All values that are contained in given list. */
  id_in?: Maybe<Array<Scalars['ID']>>,
  /** All values that are not contained in given list. */
  id_not_in?: Maybe<Array<Scalars['ID']>>,
  /** All values less than the given value. */
  id_lt?: Maybe<Scalars['ID']>,
  /** All values less than or equal the given value. */
  id_lte?: Maybe<Scalars['ID']>,
  /** All values greater than the given value. */
  id_gt?: Maybe<Scalars['ID']>,
  /** All values greater than or equal the given value. */
  id_gte?: Maybe<Scalars['ID']>,
  /** All values containing the given string. */
  id_contains?: Maybe<Scalars['ID']>,
  /** All values not containing the given string. */
  id_not_contains?: Maybe<Scalars['ID']>,
  /** All values starting with the given string. */
  id_starts_with?: Maybe<Scalars['ID']>,
  /** All values not starting with the given string. */
  id_not_starts_with?: Maybe<Scalars['ID']>,
  /** All values ending with the given string. */
  id_ends_with?: Maybe<Scalars['ID']>,
  /** All values not ending with the given string. */
  id_not_ends_with?: Maybe<Scalars['ID']>,
  value?: Maybe<Scalars['Int']>,
  /** All values that are not equal to given value. */
  value_not?: Maybe<Scalars['Int']>,
  /** All values that are contained in given list. */
  value_in?: Maybe<Array<Scalars['Int']>>,
  /** All values that are not contained in given list. */
  value_not_in?: Maybe<Array<Scalars['Int']>>,
  /** All values less than the given value. */
  value_lt?: Maybe<Scalars['Int']>,
  /** All values less than or equal the given value. */
  value_lte?: Maybe<Scalars['Int']>,
  /** All values greater than the given value. */
  value_gt?: Maybe<Scalars['Int']>,
  /** All values greater than or equal the given value. */
  value_gte?: Maybe<Scalars['Int']>,
  comment?: Maybe<Scalars['String']>,
  /** All values that are not equal to given value. */
  comment_not?: Maybe<Scalars['String']>,
  /** All values that are contained in given list. */
  comment_in?: Maybe<Array<Scalars['String']>>,
  /** All values that are not contained in given list. */
  comment_not_in?: Maybe<Array<Scalars['String']>>,
  /** All values less than the given value. */
  comment_lt?: Maybe<Scalars['String']>,
  /** All values less than or equal the given value. */
  comment_lte?: Maybe<Scalars['String']>,
  /** All values greater than the given value. */
  comment_gt?: Maybe<Scalars['String']>,
  /** All values greater than or equal the given value. */
  comment_gte?: Maybe<Scalars['String']>,
  /** All values containing the given string. */
  comment_contains?: Maybe<Scalars['String']>,
  /** All values not containing the given string. */
  comment_not_contains?: Maybe<Scalars['String']>,
  /** All values starting with the given string. */
  comment_starts_with?: Maybe<Scalars['String']>,
  /** All values not starting with the given string. */
  comment_not_starts_with?: Maybe<Scalars['String']>,
  /** All values ending with the given string. */
  comment_ends_with?: Maybe<Scalars['String']>,
  /** All values not ending with the given string. */
  comment_not_ends_with?: Maybe<Scalars['String']>,
  createdAt?: Maybe<Scalars['DateTime']>,
  /** All values that are not equal to given value. */
  createdAt_not?: Maybe<Scalars['DateTime']>,
  /** All values that are contained in given list. */
  createdAt_in?: Maybe<Array<Scalars['DateTime']>>,
  /** All values that are not contained in given list. */
  createdAt_not_in?: Maybe<Array<Scalars['DateTime']>>,
  /** All values less than the given value. */
  createdAt_lt?: Maybe<Scalars['DateTime']>,
  /** All values less than or equal the given value. */
  createdAt_lte?: Maybe<Scalars['DateTime']>,
  /** All values greater than the given value. */
  createdAt_gt?: Maybe<Scalars['DateTime']>,
  /** All values greater than or equal the given value. */
  createdAt_gte?: Maybe<Scalars['DateTime']>,
};

export type RatingUpdateDataInput = {
  value?: Maybe<Scalars['Int']>,
  comment?: Maybe<Scalars['String']>,
  user?: Maybe<UserUpdateOneRequiredWithoutRatingsInput>,
};

export type RatingUpdateManyDataInput = {
  value?: Maybe<Scalars['Int']>,
  comment?: Maybe<Scalars['String']>,
};

export type RatingUpdateManyInput = {
  create?: Maybe<Array<RatingCreateInput>>,
  connect?: Maybe<Array<RatingWhereUniqueInput>>,
  set?: Maybe<Array<RatingWhereUniqueInput>>,
  disconnect?: Maybe<Array<RatingWhereUniqueInput>>,
  delete?: Maybe<Array<RatingWhereUniqueInput>>,
  update?: Maybe<Array<RatingUpdateWithWhereUniqueNestedInput>>,
  updateMany?: Maybe<Array<RatingUpdateManyWithWhereNestedInput>>,
  deleteMany?: Maybe<Array<RatingScalarWhereInput>>,
  upsert?: Maybe<Array<RatingUpsertWithWhereUniqueNestedInput>>,
};

export type RatingUpdateManyWithoutUserInput = {
  create?: Maybe<Array<RatingCreateWithoutUserInput>>,
  connect?: Maybe<Array<RatingWhereUniqueInput>>,
  set?: Maybe<Array<RatingWhereUniqueInput>>,
  disconnect?: Maybe<Array<RatingWhereUniqueInput>>,
  delete?: Maybe<Array<RatingWhereUniqueInput>>,
  update?: Maybe<Array<RatingUpdateWithWhereUniqueWithoutUserInput>>,
  updateMany?: Maybe<Array<RatingUpdateManyWithWhereNestedInput>>,
  deleteMany?: Maybe<Array<RatingScalarWhereInput>>,
  upsert?: Maybe<Array<RatingUpsertWithWhereUniqueWithoutUserInput>>,
};

export type RatingUpdateManyWithWhereNestedInput = {
  where: RatingScalarWhereInput,
  data: RatingUpdateManyDataInput,
};

export type RatingUpdateWithoutUserDataInput = {
  value?: Maybe<Scalars['Int']>,
  comment?: Maybe<Scalars['String']>,
};

export type RatingUpdateWithWhereUniqueNestedInput = {
  where: RatingWhereUniqueInput,
  data: RatingUpdateDataInput,
};

export type RatingUpdateWithWhereUniqueWithoutUserInput = {
  where: RatingWhereUniqueInput,
  data: RatingUpdateWithoutUserDataInput,
};

export type RatingUpsertWithWhereUniqueNestedInput = {
  where: RatingWhereUniqueInput,
  update: RatingUpdateDataInput,
  create: RatingCreateInput,
};

export type RatingUpsertWithWhereUniqueWithoutUserInput = {
  where: RatingWhereUniqueInput,
  update: RatingUpdateWithoutUserDataInput,
  create: RatingCreateWithoutUserInput,
};

export type RatingWhereInput = {
  /** Logical AND on all given filters. */
  AND?: Maybe<Array<RatingWhereInput>>,
  /** Logical OR on all given filters. */
  OR?: Maybe<Array<RatingWhereInput>>,
  /** Logical NOT on all given filters combined by AND. */
  NOT?: Maybe<Array<RatingWhereInput>>,
  id?: Maybe<Scalars['ID']>,
  /** All values that are not equal to given value. */
  id_not?: Maybe<Scalars['ID']>,
  /** All values that are contained in given list. */
  id_in?: Maybe<Array<Scalars['ID']>>,
  /** All values that are not contained in given list. */
  id_not_in?: Maybe<Array<Scalars['ID']>>,
  /** All values less than the given value. */
  id_lt?: Maybe<Scalars['ID']>,
  /** All values less than or equal the given value. */
  id_lte?: Maybe<Scalars['ID']>,
  /** All values greater than the given value. */
  id_gt?: Maybe<Scalars['ID']>,
  /** All values greater than or equal the given value. */
  id_gte?: Maybe<Scalars['ID']>,
  /** All values containing the given string. */
  id_contains?: Maybe<Scalars['ID']>,
  /** All values not containing the given string. */
  id_not_contains?: Maybe<Scalars['ID']>,
  /** All values starting with the given string. */
  id_starts_with?: Maybe<Scalars['ID']>,
  /** All values not starting with the given string. */
  id_not_starts_with?: Maybe<Scalars['ID']>,
  /** All values ending with the given string. */
  id_ends_with?: Maybe<Scalars['ID']>,
  /** All values not ending with the given string. */
  id_not_ends_with?: Maybe<Scalars['ID']>,
  value?: Maybe<Scalars['Int']>,
  /** All values that are not equal to given value. */
  value_not?: Maybe<Scalars['Int']>,
  /** All values that are contained in given list. */
  value_in?: Maybe<Array<Scalars['Int']>>,
  /** All values that are not contained in given list. */
  value_not_in?: Maybe<Array<Scalars['Int']>>,
  /** All values less than the given value. */
  value_lt?: Maybe<Scalars['Int']>,
  /** All values less than or equal the given value. */
  value_lte?: Maybe<Scalars['Int']>,
  /** All values greater than the given value. */
  value_gt?: Maybe<Scalars['Int']>,
  /** All values greater than or equal the given value. */
  value_gte?: Maybe<Scalars['Int']>,
  comment?: Maybe<Scalars['String']>,
  /** All values that are not equal to given value. */
  comment_not?: Maybe<Scalars['String']>,
  /** All values that are contained in given list. */
  comment_in?: Maybe<Array<Scalars['String']>>,
  /** All values that are not contained in given list. */
  comment_not_in?: Maybe<Array<Scalars['String']>>,
  /** All values less than the given value. */
  comment_lt?: Maybe<Scalars['String']>,
  /** All values less than or equal the given value. */
  comment_lte?: Maybe<Scalars['String']>,
  /** All values greater than the given value. */
  comment_gt?: Maybe<Scalars['String']>,
  /** All values greater than or equal the given value. */
  comment_gte?: Maybe<Scalars['String']>,
  /** All values containing the given string. */
  comment_contains?: Maybe<Scalars['String']>,
  /** All values not containing the given string. */
  comment_not_contains?: Maybe<Scalars['String']>,
  /** All values starting with the given string. */
  comment_starts_with?: Maybe<Scalars['String']>,
  /** All values not starting with the given string. */
  comment_not_starts_with?: Maybe<Scalars['String']>,
  /** All values ending with the given string. */
  comment_ends_with?: Maybe<Scalars['String']>,
  /** All values not ending with the given string. */
  comment_not_ends_with?: Maybe<Scalars['String']>,
  createdAt?: Maybe<Scalars['DateTime']>,
  /** All values that are not equal to given value. */
  createdAt_not?: Maybe<Scalars['DateTime']>,
  /** All values that are contained in given list. */
  createdAt_in?: Maybe<Array<Scalars['DateTime']>>,
  /** All values that are not contained in given list. */
  createdAt_not_in?: Maybe<Array<Scalars['DateTime']>>,
  /** All values less than the given value. */
  createdAt_lt?: Maybe<Scalars['DateTime']>,
  /** All values less than or equal the given value. */
  createdAt_lte?: Maybe<Scalars['DateTime']>,
  /** All values greater than the given value. */
  createdAt_gt?: Maybe<Scalars['DateTime']>,
  /** All values greater than or equal the given value. */
  createdAt_gte?: Maybe<Scalars['DateTime']>,
  user?: Maybe<UserWhereInput>,
};

export type RatingWhereUniqueInput = {
  id?: Maybe<Scalars['ID']>,
};

export type Track = Node & {
   __typename?: 'Track',
  id: Scalars['ID'],
  title: Scalars['String'],
  artist: Scalars['String'],
  duration: Scalars['Int'],
  file?: Maybe<File>,
  link?: Maybe<Scalars['String']>,
};

export type TrackCreateInput = {
  id?: Maybe<Scalars['ID']>,
  title: Scalars['String'],
  artist: Scalars['String'],
  duration: Scalars['Int'],
  link?: Maybe<Scalars['String']>,
  file?: Maybe<FileCreateOneInput>,
};

export type TrackCreateManyInput = {
  create?: Maybe<Array<TrackCreateInput>>,
  connect?: Maybe<Array<TrackWhereUniqueInput>>,
};

export enum TrackOrderByInput {
  IdAsc = 'id_ASC',
  IdDesc = 'id_DESC',
  TitleAsc = 'title_ASC',
  TitleDesc = 'title_DESC',
  ArtistAsc = 'artist_ASC',
  ArtistDesc = 'artist_DESC',
  DurationAsc = 'duration_ASC',
  DurationDesc = 'duration_DESC',
  LinkAsc = 'link_ASC',
  LinkDesc = 'link_DESC'
}

export type TrackScalarWhereInput = {
  /** Logical AND on all given filters. */
  AND?: Maybe<Array<TrackScalarWhereInput>>,
  /** Logical OR on all given filters. */
  OR?: Maybe<Array<TrackScalarWhereInput>>,
  /** Logical NOT on all given filters combined by AND. */
  NOT?: Maybe<Array<TrackScalarWhereInput>>,
  id?: Maybe<Scalars['ID']>,
  /** All values that are not equal to given value. */
  id_not?: Maybe<Scalars['ID']>,
  /** All values that are contained in given list. */
  id_in?: Maybe<Array<Scalars['ID']>>,
  /** All values that are not contained in given list. */
  id_not_in?: Maybe<Array<Scalars['ID']>>,
  /** All values less than the given value. */
  id_lt?: Maybe<Scalars['ID']>,
  /** All values less than or equal the given value. */
  id_lte?: Maybe<Scalars['ID']>,
  /** All values greater than the given value. */
  id_gt?: Maybe<Scalars['ID']>,
  /** All values greater than or equal the given value. */
  id_gte?: Maybe<Scalars['ID']>,
  /** All values containing the given string. */
  id_contains?: Maybe<Scalars['ID']>,
  /** All values not containing the given string. */
  id_not_contains?: Maybe<Scalars['ID']>,
  /** All values starting with the given string. */
  id_starts_with?: Maybe<Scalars['ID']>,
  /** All values not starting with the given string. */
  id_not_starts_with?: Maybe<Scalars['ID']>,
  /** All values ending with the given string. */
  id_ends_with?: Maybe<Scalars['ID']>,
  /** All values not ending with the given string. */
  id_not_ends_with?: Maybe<Scalars['ID']>,
  title?: Maybe<Scalars['String']>,
  /** All values that are not equal to given value. */
  title_not?: Maybe<Scalars['String']>,
  /** All values that are contained in given list. */
  title_in?: Maybe<Array<Scalars['String']>>,
  /** All values that are not contained in given list. */
  title_not_in?: Maybe<Array<Scalars['String']>>,
  /** All values less than the given value. */
  title_lt?: Maybe<Scalars['String']>,
  /** All values less than or equal the given value. */
  title_lte?: Maybe<Scalars['String']>,
  /** All values greater than the given value. */
  title_gt?: Maybe<Scalars['String']>,
  /** All values greater than or equal the given value. */
  title_gte?: Maybe<Scalars['String']>,
  /** All values containing the given string. */
  title_contains?: Maybe<Scalars['String']>,
  /** All values not containing the given string. */
  title_not_contains?: Maybe<Scalars['String']>,
  /** All values starting with the given string. */
  title_starts_with?: Maybe<Scalars['String']>,
  /** All values not starting with the given string. */
  title_not_starts_with?: Maybe<Scalars['String']>,
  /** All values ending with the given string. */
  title_ends_with?: Maybe<Scalars['String']>,
  /** All values not ending with the given string. */
  title_not_ends_with?: Maybe<Scalars['String']>,
  artist?: Maybe<Scalars['String']>,
  /** All values that are not equal to given value. */
  artist_not?: Maybe<Scalars['String']>,
  /** All values that are contained in given list. */
  artist_in?: Maybe<Array<Scalars['String']>>,
  /** All values that are not contained in given list. */
  artist_not_in?: Maybe<Array<Scalars['String']>>,
  /** All values less than the given value. */
  artist_lt?: Maybe<Scalars['String']>,
  /** All values less than or equal the given value. */
  artist_lte?: Maybe<Scalars['String']>,
  /** All values greater than the given value. */
  artist_gt?: Maybe<Scalars['String']>,
  /** All values greater than or equal the given value. */
  artist_gte?: Maybe<Scalars['String']>,
  /** All values containing the given string. */
  artist_contains?: Maybe<Scalars['String']>,
  /** All values not containing the given string. */
  artist_not_contains?: Maybe<Scalars['String']>,
  /** All values starting with the given string. */
  artist_starts_with?: Maybe<Scalars['String']>,
  /** All values not starting with the given string. */
  artist_not_starts_with?: Maybe<Scalars['String']>,
  /** All values ending with the given string. */
  artist_ends_with?: Maybe<Scalars['String']>,
  /** All values not ending with the given string. */
  artist_not_ends_with?: Maybe<Scalars['String']>,
  duration?: Maybe<Scalars['Int']>,
  /** All values that are not equal to given value. */
  duration_not?: Maybe<Scalars['Int']>,
  /** All values that are contained in given list. */
  duration_in?: Maybe<Array<Scalars['Int']>>,
  /** All values that are not contained in given list. */
  duration_not_in?: Maybe<Array<Scalars['Int']>>,
  /** All values less than the given value. */
  duration_lt?: Maybe<Scalars['Int']>,
  /** All values less than or equal the given value. */
  duration_lte?: Maybe<Scalars['Int']>,
  /** All values greater than the given value. */
  duration_gt?: Maybe<Scalars['Int']>,
  /** All values greater than or equal the given value. */
  duration_gte?: Maybe<Scalars['Int']>,
  link?: Maybe<Scalars['String']>,
  /** All values that are not equal to given value. */
  link_not?: Maybe<Scalars['String']>,
  /** All values that are contained in given list. */
  link_in?: Maybe<Array<Scalars['String']>>,
  /** All values that are not contained in given list. */
  link_not_in?: Maybe<Array<Scalars['String']>>,
  /** All values less than the given value. */
  link_lt?: Maybe<Scalars['String']>,
  /** All values less than or equal the given value. */
  link_lte?: Maybe<Scalars['String']>,
  /** All values greater than the given value. */
  link_gt?: Maybe<Scalars['String']>,
  /** All values greater than or equal the given value. */
  link_gte?: Maybe<Scalars['String']>,
  /** All values containing the given string. */
  link_contains?: Maybe<Scalars['String']>,
  /** All values not containing the given string. */
  link_not_contains?: Maybe<Scalars['String']>,
  /** All values starting with the given string. */
  link_starts_with?: Maybe<Scalars['String']>,
  /** All values not starting with the given string. */
  link_not_starts_with?: Maybe<Scalars['String']>,
  /** All values ending with the given string. */
  link_ends_with?: Maybe<Scalars['String']>,
  /** All values not ending with the given string. */
  link_not_ends_with?: Maybe<Scalars['String']>,
};

export type TrackUpdateDataInput = {
  title?: Maybe<Scalars['String']>,
  artist?: Maybe<Scalars['String']>,
  duration?: Maybe<Scalars['Int']>,
  link?: Maybe<Scalars['String']>,
  file?: Maybe<FileUpdateOneInput>,
};

export type TrackUpdateManyDataInput = {
  title?: Maybe<Scalars['String']>,
  artist?: Maybe<Scalars['String']>,
  duration?: Maybe<Scalars['Int']>,
  link?: Maybe<Scalars['String']>,
};

export type TrackUpdateManyInput = {
  create?: Maybe<Array<TrackCreateInput>>,
  connect?: Maybe<Array<TrackWhereUniqueInput>>,
  set?: Maybe<Array<TrackWhereUniqueInput>>,
  disconnect?: Maybe<Array<TrackWhereUniqueInput>>,
  delete?: Maybe<Array<TrackWhereUniqueInput>>,
  update?: Maybe<Array<TrackUpdateWithWhereUniqueNestedInput>>,
  updateMany?: Maybe<Array<TrackUpdateManyWithWhereNestedInput>>,
  deleteMany?: Maybe<Array<TrackScalarWhereInput>>,
  upsert?: Maybe<Array<TrackUpsertWithWhereUniqueNestedInput>>,
};

export type TrackUpdateManyWithWhereNestedInput = {
  where: TrackScalarWhereInput,
  data: TrackUpdateManyDataInput,
};

export type TrackUpdateWithWhereUniqueNestedInput = {
  where: TrackWhereUniqueInput,
  data: TrackUpdateDataInput,
};

export type TrackUpsertWithWhereUniqueNestedInput = {
  where: TrackWhereUniqueInput,
  update: TrackUpdateDataInput,
  create: TrackCreateInput,
};

export type TrackWhereInput = {
  /** Logical AND on all given filters. */
  AND?: Maybe<Array<TrackWhereInput>>,
  /** Logical OR on all given filters. */
  OR?: Maybe<Array<TrackWhereInput>>,
  /** Logical NOT on all given filters combined by AND. */
  NOT?: Maybe<Array<TrackWhereInput>>,
  id?: Maybe<Scalars['ID']>,
  /** All values that are not equal to given value. */
  id_not?: Maybe<Scalars['ID']>,
  /** All values that are contained in given list. */
  id_in?: Maybe<Array<Scalars['ID']>>,
  /** All values that are not contained in given list. */
  id_not_in?: Maybe<Array<Scalars['ID']>>,
  /** All values less than the given value. */
  id_lt?: Maybe<Scalars['ID']>,
  /** All values less than or equal the given value. */
  id_lte?: Maybe<Scalars['ID']>,
  /** All values greater than the given value. */
  id_gt?: Maybe<Scalars['ID']>,
  /** All values greater than or equal the given value. */
  id_gte?: Maybe<Scalars['ID']>,
  /** All values containing the given string. */
  id_contains?: Maybe<Scalars['ID']>,
  /** All values not containing the given string. */
  id_not_contains?: Maybe<Scalars['ID']>,
  /** All values starting with the given string. */
  id_starts_with?: Maybe<Scalars['ID']>,
  /** All values not starting with the given string. */
  id_not_starts_with?: Maybe<Scalars['ID']>,
  /** All values ending with the given string. */
  id_ends_with?: Maybe<Scalars['ID']>,
  /** All values not ending with the given string. */
  id_not_ends_with?: Maybe<Scalars['ID']>,
  title?: Maybe<Scalars['String']>,
  /** All values that are not equal to given value. */
  title_not?: Maybe<Scalars['String']>,
  /** All values that are contained in given list. */
  title_in?: Maybe<Array<Scalars['String']>>,
  /** All values that are not contained in given list. */
  title_not_in?: Maybe<Array<Scalars['String']>>,
  /** All values less than the given value. */
  title_lt?: Maybe<Scalars['String']>,
  /** All values less than or equal the given value. */
  title_lte?: Maybe<Scalars['String']>,
  /** All values greater than the given value. */
  title_gt?: Maybe<Scalars['String']>,
  /** All values greater than or equal the given value. */
  title_gte?: Maybe<Scalars['String']>,
  /** All values containing the given string. */
  title_contains?: Maybe<Scalars['String']>,
  /** All values not containing the given string. */
  title_not_contains?: Maybe<Scalars['String']>,
  /** All values starting with the given string. */
  title_starts_with?: Maybe<Scalars['String']>,
  /** All values not starting with the given string. */
  title_not_starts_with?: Maybe<Scalars['String']>,
  /** All values ending with the given string. */
  title_ends_with?: Maybe<Scalars['String']>,
  /** All values not ending with the given string. */
  title_not_ends_with?: Maybe<Scalars['String']>,
  artist?: Maybe<Scalars['String']>,
  /** All values that are not equal to given value. */
  artist_not?: Maybe<Scalars['String']>,
  /** All values that are contained in given list. */
  artist_in?: Maybe<Array<Scalars['String']>>,
  /** All values that are not contained in given list. */
  artist_not_in?: Maybe<Array<Scalars['String']>>,
  /** All values less than the given value. */
  artist_lt?: Maybe<Scalars['String']>,
  /** All values less than or equal the given value. */
  artist_lte?: Maybe<Scalars['String']>,
  /** All values greater than the given value. */
  artist_gt?: Maybe<Scalars['String']>,
  /** All values greater than or equal the given value. */
  artist_gte?: Maybe<Scalars['String']>,
  /** All values containing the given string. */
  artist_contains?: Maybe<Scalars['String']>,
  /** All values not containing the given string. */
  artist_not_contains?: Maybe<Scalars['String']>,
  /** All values starting with the given string. */
  artist_starts_with?: Maybe<Scalars['String']>,
  /** All values not starting with the given string. */
  artist_not_starts_with?: Maybe<Scalars['String']>,
  /** All values ending with the given string. */
  artist_ends_with?: Maybe<Scalars['String']>,
  /** All values not ending with the given string. */
  artist_not_ends_with?: Maybe<Scalars['String']>,
  duration?: Maybe<Scalars['Int']>,
  /** All values that are not equal to given value. */
  duration_not?: Maybe<Scalars['Int']>,
  /** All values that are contained in given list. */
  duration_in?: Maybe<Array<Scalars['Int']>>,
  /** All values that are not contained in given list. */
  duration_not_in?: Maybe<Array<Scalars['Int']>>,
  /** All values less than the given value. */
  duration_lt?: Maybe<Scalars['Int']>,
  /** All values less than or equal the given value. */
  duration_lte?: Maybe<Scalars['Int']>,
  /** All values greater than the given value. */
  duration_gt?: Maybe<Scalars['Int']>,
  /** All values greater than or equal the given value. */
  duration_gte?: Maybe<Scalars['Int']>,
  link?: Maybe<Scalars['String']>,
  /** All values that are not equal to given value. */
  link_not?: Maybe<Scalars['String']>,
  /** All values that are contained in given list. */
  link_in?: Maybe<Array<Scalars['String']>>,
  /** All values that are not contained in given list. */
  link_not_in?: Maybe<Array<Scalars['String']>>,
  /** All values less than the given value. */
  link_lt?: Maybe<Scalars['String']>,
  /** All values less than or equal the given value. */
  link_lte?: Maybe<Scalars['String']>,
  /** All values greater than the given value. */
  link_gt?: Maybe<Scalars['String']>,
  /** All values greater than or equal the given value. */
  link_gte?: Maybe<Scalars['String']>,
  /** All values containing the given string. */
  link_contains?: Maybe<Scalars['String']>,
  /** All values not containing the given string. */
  link_not_contains?: Maybe<Scalars['String']>,
  /** All values starting with the given string. */
  link_starts_with?: Maybe<Scalars['String']>,
  /** All values not starting with the given string. */
  link_not_starts_with?: Maybe<Scalars['String']>,
  /** All values ending with the given string. */
  link_ends_with?: Maybe<Scalars['String']>,
  /** All values not ending with the given string. */
  link_not_ends_with?: Maybe<Scalars['String']>,
  file?: Maybe<FileWhereInput>,
};

export type TrackWhereUniqueInput = {
  id?: Maybe<Scalars['ID']>,
};

export type Training = Node & {
   __typename?: 'Training',
  id: Scalars['ID'],
  title: Scalars['String'],
  type: TrainingType,
  createdAt: Scalars['DateTime'],
  trainingDate: Scalars['DateTime'],
  location: Scalars['String'],
  registrations?: Maybe<Array<User>>,
  attendance?: Maybe<Scalars['Int']>,
  ratings?: Maybe<Array<Rating>>,
  published: Scalars['Boolean'],
  blocks?: Maybe<Array<BlockInstance>>,
};


export type TrainingRegistrationsArgs = {
  where?: Maybe<UserWhereInput>,
  orderBy?: Maybe<UserOrderByInput>,
  skip?: Maybe<Scalars['Int']>,
  after?: Maybe<Scalars['String']>,
  before?: Maybe<Scalars['String']>,
  first?: Maybe<Scalars['Int']>,
  last?: Maybe<Scalars['Int']>
};


export type TrainingRatingsArgs = {
  where?: Maybe<RatingWhereInput>,
  orderBy?: Maybe<RatingOrderByInput>,
  skip?: Maybe<Scalars['Int']>,
  after?: Maybe<Scalars['String']>,
  before?: Maybe<Scalars['String']>,
  first?: Maybe<Scalars['Int']>,
  last?: Maybe<Scalars['Int']>
};


export type TrainingBlocksArgs = {
  where?: Maybe<BlockInstanceWhereInput>,
  orderBy?: Maybe<BlockInstanceOrderByInput>,
  skip?: Maybe<Scalars['Int']>,
  after?: Maybe<Scalars['String']>,
  before?: Maybe<Scalars['String']>,
  first?: Maybe<Scalars['Int']>,
  last?: Maybe<Scalars['Int']>
};

export type TrainingArchive = {
   __typename?: 'TrainingArchive',
  trainings: Array<TrainingArchiveItem>,
  totalCount: Scalars['Int'],
};

export type TrainingArchiveItem = {
   __typename?: 'TrainingArchiveItem',
  id: Scalars['ID'],
  title: Scalars['String'],
  type: TrainingType,
  trainingDate: Scalars['DateTime'],
  location: Scalars['String'],
  attendance?: Maybe<Scalars['Int']>,
  ratings?: Maybe<Scalars['Float']>,
  blocks: Array<Scalars['String']>,
  duration?: Maybe<Scalars['Int']>,
};

/** A connection to a list of items. */
export type TrainingConnection = {
   __typename?: 'TrainingConnection',
  /** Information to aid in pagination. */
  pageInfo: PageInfo,
  /** A list of edges. */
  edges: Array<Maybe<TrainingEdge>>,
  aggregate: AggregateTraining,
};

export type TrainingCreateOneWithoutBlocksInput = {
  create?: Maybe<TrainingCreateWithoutBlocksInput>,
  connect?: Maybe<TrainingWhereUniqueInput>,
};

export type TrainingCreateWithoutBlocksInput = {
  id?: Maybe<Scalars['ID']>,
  title: Scalars['String'],
  trainingDate: Scalars['DateTime'],
  location: Scalars['String'],
  attendance?: Maybe<Scalars['Int']>,
  published: Scalars['Boolean'],
  type: TrainingTypeCreateOneInput,
  registrations?: Maybe<UserCreateManyInput>,
  ratings?: Maybe<RatingCreateManyInput>,
};

/** An edge in a connection. */
export type TrainingEdge = {
   __typename?: 'TrainingEdge',
  /** The item at the end of the edge. */
  node: Training,
  /** A cursor for use in pagination. */
  cursor: Scalars['String'],
};

export enum TrainingOrderByInput {
  IdAsc = 'id_ASC',
  IdDesc = 'id_DESC',
  TitleAsc = 'title_ASC',
  TitleDesc = 'title_DESC',
  CreatedAtAsc = 'createdAt_ASC',
  CreatedAtDesc = 'createdAt_DESC',
  TrainingDateAsc = 'trainingDate_ASC',
  TrainingDateDesc = 'trainingDate_DESC',
  LocationAsc = 'location_ASC',
  LocationDesc = 'location_DESC',
  AttendanceAsc = 'attendance_ASC',
  AttendanceDesc = 'attendance_DESC',
  PublishedAsc = 'published_ASC',
  PublishedDesc = 'published_DESC'
}

export type TrainingType = Node & {
   __typename?: 'TrainingType',
  id: Scalars['ID'],
  name: Scalars['String'],
  description: Scalars['String'],
};

export type TrainingTypeCreateInput = {
  id?: Maybe<Scalars['ID']>,
  name: Scalars['String'],
  description: Scalars['String'],
};

export type TrainingTypeCreateOneInput = {
  create?: Maybe<TrainingTypeCreateInput>,
  connect?: Maybe<TrainingTypeWhereUniqueInput>,
};

export enum TrainingTypeOrderByInput {
  IdAsc = 'id_ASC',
  IdDesc = 'id_DESC',
  NameAsc = 'name_ASC',
  NameDesc = 'name_DESC',
  DescriptionAsc = 'description_ASC',
  DescriptionDesc = 'description_DESC'
}

export type TrainingTypeUpdateDataInput = {
  name?: Maybe<Scalars['String']>,
  description?: Maybe<Scalars['String']>,
};

export type TrainingTypeUpdateOneRequiredInput = {
  create?: Maybe<TrainingTypeCreateInput>,
  connect?: Maybe<TrainingTypeWhereUniqueInput>,
  update?: Maybe<TrainingTypeUpdateDataInput>,
  upsert?: Maybe<TrainingTypeUpsertNestedInput>,
};

export type TrainingTypeUpsertNestedInput = {
  update: TrainingTypeUpdateDataInput,
  create: TrainingTypeCreateInput,
};

export type TrainingTypeWhereInput = {
  /** Logical AND on all given filters. */
  AND?: Maybe<Array<TrainingTypeWhereInput>>,
  /** Logical OR on all given filters. */
  OR?: Maybe<Array<TrainingTypeWhereInput>>,
  /** Logical NOT on all given filters combined by AND. */
  NOT?: Maybe<Array<TrainingTypeWhereInput>>,
  id?: Maybe<Scalars['ID']>,
  /** All values that are not equal to given value. */
  id_not?: Maybe<Scalars['ID']>,
  /** All values that are contained in given list. */
  id_in?: Maybe<Array<Scalars['ID']>>,
  /** All values that are not contained in given list. */
  id_not_in?: Maybe<Array<Scalars['ID']>>,
  /** All values less than the given value. */
  id_lt?: Maybe<Scalars['ID']>,
  /** All values less than or equal the given value. */
  id_lte?: Maybe<Scalars['ID']>,
  /** All values greater than the given value. */
  id_gt?: Maybe<Scalars['ID']>,
  /** All values greater than or equal the given value. */
  id_gte?: Maybe<Scalars['ID']>,
  /** All values containing the given string. */
  id_contains?: Maybe<Scalars['ID']>,
  /** All values not containing the given string. */
  id_not_contains?: Maybe<Scalars['ID']>,
  /** All values starting with the given string. */
  id_starts_with?: Maybe<Scalars['ID']>,
  /** All values not starting with the given string. */
  id_not_starts_with?: Maybe<Scalars['ID']>,
  /** All values ending with the given string. */
  id_ends_with?: Maybe<Scalars['ID']>,
  /** All values not ending with the given string. */
  id_not_ends_with?: Maybe<Scalars['ID']>,
  name?: Maybe<Scalars['String']>,
  /** All values that are not equal to given value. */
  name_not?: Maybe<Scalars['String']>,
  /** All values that are contained in given list. */
  name_in?: Maybe<Array<Scalars['String']>>,
  /** All values that are not contained in given list. */
  name_not_in?: Maybe<Array<Scalars['String']>>,
  /** All values less than the given value. */
  name_lt?: Maybe<Scalars['String']>,
  /** All values less than or equal the given value. */
  name_lte?: Maybe<Scalars['String']>,
  /** All values greater than the given value. */
  name_gt?: Maybe<Scalars['String']>,
  /** All values greater than or equal the given value. */
  name_gte?: Maybe<Scalars['String']>,
  /** All values containing the given string. */
  name_contains?: Maybe<Scalars['String']>,
  /** All values not containing the given string. */
  name_not_contains?: Maybe<Scalars['String']>,
  /** All values starting with the given string. */
  name_starts_with?: Maybe<Scalars['String']>,
  /** All values not starting with the given string. */
  name_not_starts_with?: Maybe<Scalars['String']>,
  /** All values ending with the given string. */
  name_ends_with?: Maybe<Scalars['String']>,
  /** All values not ending with the given string. */
  name_not_ends_with?: Maybe<Scalars['String']>,
  description?: Maybe<Scalars['String']>,
  /** All values that are not equal to given value. */
  description_not?: Maybe<Scalars['String']>,
  /** All values that are contained in given list. */
  description_in?: Maybe<Array<Scalars['String']>>,
  /** All values that are not contained in given list. */
  description_not_in?: Maybe<Array<Scalars['String']>>,
  /** All values less than the given value. */
  description_lt?: Maybe<Scalars['String']>,
  /** All values less than or equal the given value. */
  description_lte?: Maybe<Scalars['String']>,
  /** All values greater than the given value. */
  description_gt?: Maybe<Scalars['String']>,
  /** All values greater than or equal the given value. */
  description_gte?: Maybe<Scalars['String']>,
  /** All values containing the given string. */
  description_contains?: Maybe<Scalars['String']>,
  /** All values not containing the given string. */
  description_not_contains?: Maybe<Scalars['String']>,
  /** All values starting with the given string. */
  description_starts_with?: Maybe<Scalars['String']>,
  /** All values not starting with the given string. */
  description_not_starts_with?: Maybe<Scalars['String']>,
  /** All values ending with the given string. */
  description_ends_with?: Maybe<Scalars['String']>,
  /** All values not ending with the given string. */
  description_not_ends_with?: Maybe<Scalars['String']>,
};

export type TrainingTypeWhereUniqueInput = {
  id?: Maybe<Scalars['ID']>,
  name?: Maybe<Scalars['String']>,
};

export type TrainingUpdateInput = {
  title?: Maybe<Scalars['String']>,
  trainingDate?: Maybe<Scalars['DateTime']>,
  location?: Maybe<Scalars['String']>,
  attendance?: Maybe<Scalars['Int']>,
  published?: Maybe<Scalars['Boolean']>,
  type?: Maybe<TrainingTypeUpdateOneRequiredInput>,
  registrations?: Maybe<UserUpdateManyInput>,
  ratings?: Maybe<RatingUpdateManyInput>,
  blocks?: Maybe<BlockInstanceUpdateManyWithoutParentTrainingInput>,
};

export type TrainingUpdateOneWithoutBlocksInput = {
  create?: Maybe<TrainingCreateWithoutBlocksInput>,
  connect?: Maybe<TrainingWhereUniqueInput>,
  disconnect?: Maybe<Scalars['Boolean']>,
  delete?: Maybe<Scalars['Boolean']>,
  update?: Maybe<TrainingUpdateWithoutBlocksDataInput>,
  upsert?: Maybe<TrainingUpsertWithoutBlocksInput>,
};

export type TrainingUpdateWithoutBlocksDataInput = {
  title?: Maybe<Scalars['String']>,
  trainingDate?: Maybe<Scalars['DateTime']>,
  location?: Maybe<Scalars['String']>,
  attendance?: Maybe<Scalars['Int']>,
  published?: Maybe<Scalars['Boolean']>,
  type?: Maybe<TrainingTypeUpdateOneRequiredInput>,
  registrations?: Maybe<UserUpdateManyInput>,
  ratings?: Maybe<RatingUpdateManyInput>,
};

export type TrainingUpsertWithoutBlocksInput = {
  update: TrainingUpdateWithoutBlocksDataInput,
  create: TrainingCreateWithoutBlocksInput,
};

export type TrainingWhereInput = {
  /** Logical AND on all given filters. */
  AND?: Maybe<Array<TrainingWhereInput>>,
  /** Logical OR on all given filters. */
  OR?: Maybe<Array<TrainingWhereInput>>,
  /** Logical NOT on all given filters combined by AND. */
  NOT?: Maybe<Array<TrainingWhereInput>>,
  id?: Maybe<Scalars['ID']>,
  /** All values that are not equal to given value. */
  id_not?: Maybe<Scalars['ID']>,
  /** All values that are contained in given list. */
  id_in?: Maybe<Array<Scalars['ID']>>,
  /** All values that are not contained in given list. */
  id_not_in?: Maybe<Array<Scalars['ID']>>,
  /** All values less than the given value. */
  id_lt?: Maybe<Scalars['ID']>,
  /** All values less than or equal the given value. */
  id_lte?: Maybe<Scalars['ID']>,
  /** All values greater than the given value. */
  id_gt?: Maybe<Scalars['ID']>,
  /** All values greater than or equal the given value. */
  id_gte?: Maybe<Scalars['ID']>,
  /** All values containing the given string. */
  id_contains?: Maybe<Scalars['ID']>,
  /** All values not containing the given string. */
  id_not_contains?: Maybe<Scalars['ID']>,
  /** All values starting with the given string. */
  id_starts_with?: Maybe<Scalars['ID']>,
  /** All values not starting with the given string. */
  id_not_starts_with?: Maybe<Scalars['ID']>,
  /** All values ending with the given string. */
  id_ends_with?: Maybe<Scalars['ID']>,
  /** All values not ending with the given string. */
  id_not_ends_with?: Maybe<Scalars['ID']>,
  title?: Maybe<Scalars['String']>,
  /** All values that are not equal to given value. */
  title_not?: Maybe<Scalars['String']>,
  /** All values that are contained in given list. */
  title_in?: Maybe<Array<Scalars['String']>>,
  /** All values that are not contained in given list. */
  title_not_in?: Maybe<Array<Scalars['String']>>,
  /** All values less than the given value. */
  title_lt?: Maybe<Scalars['String']>,
  /** All values less than or equal the given value. */
  title_lte?: Maybe<Scalars['String']>,
  /** All values greater than the given value. */
  title_gt?: Maybe<Scalars['String']>,
  /** All values greater than or equal the given value. */
  title_gte?: Maybe<Scalars['String']>,
  /** All values containing the given string. */
  title_contains?: Maybe<Scalars['String']>,
  /** All values not containing the given string. */
  title_not_contains?: Maybe<Scalars['String']>,
  /** All values starting with the given string. */
  title_starts_with?: Maybe<Scalars['String']>,
  /** All values not starting with the given string. */
  title_not_starts_with?: Maybe<Scalars['String']>,
  /** All values ending with the given string. */
  title_ends_with?: Maybe<Scalars['String']>,
  /** All values not ending with the given string. */
  title_not_ends_with?: Maybe<Scalars['String']>,
  createdAt?: Maybe<Scalars['DateTime']>,
  /** All values that are not equal to given value. */
  createdAt_not?: Maybe<Scalars['DateTime']>,
  /** All values that are contained in given list. */
  createdAt_in?: Maybe<Array<Scalars['DateTime']>>,
  /** All values that are not contained in given list. */
  createdAt_not_in?: Maybe<Array<Scalars['DateTime']>>,
  /** All values less than the given value. */
  createdAt_lt?: Maybe<Scalars['DateTime']>,
  /** All values less than or equal the given value. */
  createdAt_lte?: Maybe<Scalars['DateTime']>,
  /** All values greater than the given value. */
  createdAt_gt?: Maybe<Scalars['DateTime']>,
  /** All values greater than or equal the given value. */
  createdAt_gte?: Maybe<Scalars['DateTime']>,
  trainingDate?: Maybe<Scalars['DateTime']>,
  /** All values that are not equal to given value. */
  trainingDate_not?: Maybe<Scalars['DateTime']>,
  /** All values that are contained in given list. */
  trainingDate_in?: Maybe<Array<Scalars['DateTime']>>,
  /** All values that are not contained in given list. */
  trainingDate_not_in?: Maybe<Array<Scalars['DateTime']>>,
  /** All values less than the given value. */
  trainingDate_lt?: Maybe<Scalars['DateTime']>,
  /** All values less than or equal the given value. */
  trainingDate_lte?: Maybe<Scalars['DateTime']>,
  /** All values greater than the given value. */
  trainingDate_gt?: Maybe<Scalars['DateTime']>,
  /** All values greater than or equal the given value. */
  trainingDate_gte?: Maybe<Scalars['DateTime']>,
  location?: Maybe<Scalars['String']>,
  /** All values that are not equal to given value. */
  location_not?: Maybe<Scalars['String']>,
  /** All values that are contained in given list. */
  location_in?: Maybe<Array<Scalars['String']>>,
  /** All values that are not contained in given list. */
  location_not_in?: Maybe<Array<Scalars['String']>>,
  /** All values less than the given value. */
  location_lt?: Maybe<Scalars['String']>,
  /** All values less than or equal the given value. */
  location_lte?: Maybe<Scalars['String']>,
  /** All values greater than the given value. */
  location_gt?: Maybe<Scalars['String']>,
  /** All values greater than or equal the given value. */
  location_gte?: Maybe<Scalars['String']>,
  /** All values containing the given string. */
  location_contains?: Maybe<Scalars['String']>,
  /** All values not containing the given string. */
  location_not_contains?: Maybe<Scalars['String']>,
  /** All values starting with the given string. */
  location_starts_with?: Maybe<Scalars['String']>,
  /** All values not starting with the given string. */
  location_not_starts_with?: Maybe<Scalars['String']>,
  /** All values ending with the given string. */
  location_ends_with?: Maybe<Scalars['String']>,
  /** All values not ending with the given string. */
  location_not_ends_with?: Maybe<Scalars['String']>,
  attendance?: Maybe<Scalars['Int']>,
  /** All values that are not equal to given value. */
  attendance_not?: Maybe<Scalars['Int']>,
  /** All values that are contained in given list. */
  attendance_in?: Maybe<Array<Scalars['Int']>>,
  /** All values that are not contained in given list. */
  attendance_not_in?: Maybe<Array<Scalars['Int']>>,
  /** All values less than the given value. */
  attendance_lt?: Maybe<Scalars['Int']>,
  /** All values less than or equal the given value. */
  attendance_lte?: Maybe<Scalars['Int']>,
  /** All values greater than the given value. */
  attendance_gt?: Maybe<Scalars['Int']>,
  /** All values greater than or equal the given value. */
  attendance_gte?: Maybe<Scalars['Int']>,
  published?: Maybe<Scalars['Boolean']>,
  /** All values that are not equal to given value. */
  published_not?: Maybe<Scalars['Boolean']>,
  type?: Maybe<TrainingTypeWhereInput>,
  registrations_every?: Maybe<UserWhereInput>,
  registrations_some?: Maybe<UserWhereInput>,
  registrations_none?: Maybe<UserWhereInput>,
  ratings_every?: Maybe<RatingWhereInput>,
  ratings_some?: Maybe<RatingWhereInput>,
  ratings_none?: Maybe<RatingWhereInput>,
  blocks_every?: Maybe<BlockInstanceWhereInput>,
  blocks_some?: Maybe<BlockInstanceWhereInput>,
  blocks_none?: Maybe<BlockInstanceWhereInput>,
};

export type TrainingWhereUniqueInput = {
  id?: Maybe<Scalars['ID']>,
};


export type User = Node & {
   __typename?: 'User',
  id: Scalars['ID'],
  email: Scalars['String'],
  name: Scalars['String'],
  password: Scalars['String'],
  resetToken?: Maybe<Scalars['String']>,
  resetTokenExpiry?: Maybe<Scalars['Float']>,
  createdAt: Scalars['DateTime'],
  comments?: Maybe<Array<Comment>>,
  ratings?: Maybe<Array<Rating>>,
  permissions: Array<Permission>,
  interests: Array<Scalars['String']>,
  avatar?: Maybe<Picture>,
};


export type UserCommentsArgs = {
  where?: Maybe<CommentWhereInput>,
  orderBy?: Maybe<CommentOrderByInput>,
  skip?: Maybe<Scalars['Int']>,
  after?: Maybe<Scalars['String']>,
  before?: Maybe<Scalars['String']>,
  first?: Maybe<Scalars['Int']>,
  last?: Maybe<Scalars['Int']>
};


export type UserRatingsArgs = {
  where?: Maybe<RatingWhereInput>,
  orderBy?: Maybe<RatingOrderByInput>,
  skip?: Maybe<Scalars['Int']>,
  after?: Maybe<Scalars['String']>,
  before?: Maybe<Scalars['String']>,
  first?: Maybe<Scalars['Int']>,
  last?: Maybe<Scalars['Int']>
};

export type UserCreateInput = {
  id?: Maybe<Scalars['ID']>,
  email: Scalars['String'],
  name: Scalars['String'],
  password: Scalars['String'],
  resetToken?: Maybe<Scalars['String']>,
  resetTokenExpiry?: Maybe<Scalars['Float']>,
  permissions?: Maybe<UserCreatepermissionsInput>,
  interests?: Maybe<UserCreateinterestsInput>,
  comments?: Maybe<CommentCreateManyWithoutAuthorInput>,
  ratings?: Maybe<RatingCreateManyWithoutUserInput>,
  avatar?: Maybe<PictureCreateOneInput>,
};

export type UserCreateinterestsInput = {
  set?: Maybe<Array<Scalars['String']>>,
};

export type UserCreateManyInput = {
  create?: Maybe<Array<UserCreateInput>>,
  connect?: Maybe<Array<UserWhereUniqueInput>>,
};

export type UserCreateOneInput = {
  create?: Maybe<UserCreateInput>,
  connect?: Maybe<UserWhereUniqueInput>,
};

export type UserCreateOneWithoutRatingsInput = {
  create?: Maybe<UserCreateWithoutRatingsInput>,
  connect?: Maybe<UserWhereUniqueInput>,
};

export type UserCreatepermissionsInput = {
  set?: Maybe<Array<Permission>>,
};

export type UserCreateWithoutRatingsInput = {
  id?: Maybe<Scalars['ID']>,
  email: Scalars['String'],
  name: Scalars['String'],
  password: Scalars['String'],
  resetToken?: Maybe<Scalars['String']>,
  resetTokenExpiry?: Maybe<Scalars['Float']>,
  permissions?: Maybe<UserCreatepermissionsInput>,
  interests?: Maybe<UserCreateinterestsInput>,
  comments?: Maybe<CommentCreateManyWithoutAuthorInput>,
  avatar?: Maybe<PictureCreateOneInput>,
};

export enum UserOrderByInput {
  IdAsc = 'id_ASC',
  IdDesc = 'id_DESC',
  EmailAsc = 'email_ASC',
  EmailDesc = 'email_DESC',
  NameAsc = 'name_ASC',
  NameDesc = 'name_DESC',
  PasswordAsc = 'password_ASC',
  PasswordDesc = 'password_DESC',
  ResetTokenAsc = 'resetToken_ASC',
  ResetTokenDesc = 'resetToken_DESC',
  ResetTokenExpiryAsc = 'resetTokenExpiry_ASC',
  ResetTokenExpiryDesc = 'resetTokenExpiry_DESC',
  CreatedAtAsc = 'createdAt_ASC',
  CreatedAtDesc = 'createdAt_DESC'
}

export type UserScalarWhereInput = {
  /** Logical AND on all given filters. */
  AND?: Maybe<Array<UserScalarWhereInput>>,
  /** Logical OR on all given filters. */
  OR?: Maybe<Array<UserScalarWhereInput>>,
  /** Logical NOT on all given filters combined by AND. */
  NOT?: Maybe<Array<UserScalarWhereInput>>,
  id?: Maybe<Scalars['ID']>,
  /** All values that are not equal to given value. */
  id_not?: Maybe<Scalars['ID']>,
  /** All values that are contained in given list. */
  id_in?: Maybe<Array<Scalars['ID']>>,
  /** All values that are not contained in given list. */
  id_not_in?: Maybe<Array<Scalars['ID']>>,
  /** All values less than the given value. */
  id_lt?: Maybe<Scalars['ID']>,
  /** All values less than or equal the given value. */
  id_lte?: Maybe<Scalars['ID']>,
  /** All values greater than the given value. */
  id_gt?: Maybe<Scalars['ID']>,
  /** All values greater than or equal the given value. */
  id_gte?: Maybe<Scalars['ID']>,
  /** All values containing the given string. */
  id_contains?: Maybe<Scalars['ID']>,
  /** All values not containing the given string. */
  id_not_contains?: Maybe<Scalars['ID']>,
  /** All values starting with the given string. */
  id_starts_with?: Maybe<Scalars['ID']>,
  /** All values not starting with the given string. */
  id_not_starts_with?: Maybe<Scalars['ID']>,
  /** All values ending with the given string. */
  id_ends_with?: Maybe<Scalars['ID']>,
  /** All values not ending with the given string. */
  id_not_ends_with?: Maybe<Scalars['ID']>,
  email?: Maybe<Scalars['String']>,
  /** All values that are not equal to given value. */
  email_not?: Maybe<Scalars['String']>,
  /** All values that are contained in given list. */
  email_in?: Maybe<Array<Scalars['String']>>,
  /** All values that are not contained in given list. */
  email_not_in?: Maybe<Array<Scalars['String']>>,
  /** All values less than the given value. */
  email_lt?: Maybe<Scalars['String']>,
  /** All values less than or equal the given value. */
  email_lte?: Maybe<Scalars['String']>,
  /** All values greater than the given value. */
  email_gt?: Maybe<Scalars['String']>,
  /** All values greater than or equal the given value. */
  email_gte?: Maybe<Scalars['String']>,
  /** All values containing the given string. */
  email_contains?: Maybe<Scalars['String']>,
  /** All values not containing the given string. */
  email_not_contains?: Maybe<Scalars['String']>,
  /** All values starting with the given string. */
  email_starts_with?: Maybe<Scalars['String']>,
  /** All values not starting with the given string. */
  email_not_starts_with?: Maybe<Scalars['String']>,
  /** All values ending with the given string. */
  email_ends_with?: Maybe<Scalars['String']>,
  /** All values not ending with the given string. */
  email_not_ends_with?: Maybe<Scalars['String']>,
  name?: Maybe<Scalars['String']>,
  /** All values that are not equal to given value. */
  name_not?: Maybe<Scalars['String']>,
  /** All values that are contained in given list. */
  name_in?: Maybe<Array<Scalars['String']>>,
  /** All values that are not contained in given list. */
  name_not_in?: Maybe<Array<Scalars['String']>>,
  /** All values less than the given value. */
  name_lt?: Maybe<Scalars['String']>,
  /** All values less than or equal the given value. */
  name_lte?: Maybe<Scalars['String']>,
  /** All values greater than the given value. */
  name_gt?: Maybe<Scalars['String']>,
  /** All values greater than or equal the given value. */
  name_gte?: Maybe<Scalars['String']>,
  /** All values containing the given string. */
  name_contains?: Maybe<Scalars['String']>,
  /** All values not containing the given string. */
  name_not_contains?: Maybe<Scalars['String']>,
  /** All values starting with the given string. */
  name_starts_with?: Maybe<Scalars['String']>,
  /** All values not starting with the given string. */
  name_not_starts_with?: Maybe<Scalars['String']>,
  /** All values ending with the given string. */
  name_ends_with?: Maybe<Scalars['String']>,
  /** All values not ending with the given string. */
  name_not_ends_with?: Maybe<Scalars['String']>,
  password?: Maybe<Scalars['String']>,
  /** All values that are not equal to given value. */
  password_not?: Maybe<Scalars['String']>,
  /** All values that are contained in given list. */
  password_in?: Maybe<Array<Scalars['String']>>,
  /** All values that are not contained in given list. */
  password_not_in?: Maybe<Array<Scalars['String']>>,
  /** All values less than the given value. */
  password_lt?: Maybe<Scalars['String']>,
  /** All values less than or equal the given value. */
  password_lte?: Maybe<Scalars['String']>,
  /** All values greater than the given value. */
  password_gt?: Maybe<Scalars['String']>,
  /** All values greater than or equal the given value. */
  password_gte?: Maybe<Scalars['String']>,
  /** All values containing the given string. */
  password_contains?: Maybe<Scalars['String']>,
  /** All values not containing the given string. */
  password_not_contains?: Maybe<Scalars['String']>,
  /** All values starting with the given string. */
  password_starts_with?: Maybe<Scalars['String']>,
  /** All values not starting with the given string. */
  password_not_starts_with?: Maybe<Scalars['String']>,
  /** All values ending with the given string. */
  password_ends_with?: Maybe<Scalars['String']>,
  /** All values not ending with the given string. */
  password_not_ends_with?: Maybe<Scalars['String']>,
  resetToken?: Maybe<Scalars['String']>,
  /** All values that are not equal to given value. */
  resetToken_not?: Maybe<Scalars['String']>,
  /** All values that are contained in given list. */
  resetToken_in?: Maybe<Array<Scalars['String']>>,
  /** All values that are not contained in given list. */
  resetToken_not_in?: Maybe<Array<Scalars['String']>>,
  /** All values less than the given value. */
  resetToken_lt?: Maybe<Scalars['String']>,
  /** All values less than or equal the given value. */
  resetToken_lte?: Maybe<Scalars['String']>,
  /** All values greater than the given value. */
  resetToken_gt?: Maybe<Scalars['String']>,
  /** All values greater than or equal the given value. */
  resetToken_gte?: Maybe<Scalars['String']>,
  /** All values containing the given string. */
  resetToken_contains?: Maybe<Scalars['String']>,
  /** All values not containing the given string. */
  resetToken_not_contains?: Maybe<Scalars['String']>,
  /** All values starting with the given string. */
  resetToken_starts_with?: Maybe<Scalars['String']>,
  /** All values not starting with the given string. */
  resetToken_not_starts_with?: Maybe<Scalars['String']>,
  /** All values ending with the given string. */
  resetToken_ends_with?: Maybe<Scalars['String']>,
  /** All values not ending with the given string. */
  resetToken_not_ends_with?: Maybe<Scalars['String']>,
  resetTokenExpiry?: Maybe<Scalars['Float']>,
  /** All values that are not equal to given value. */
  resetTokenExpiry_not?: Maybe<Scalars['Float']>,
  /** All values that are contained in given list. */
  resetTokenExpiry_in?: Maybe<Array<Scalars['Float']>>,
  /** All values that are not contained in given list. */
  resetTokenExpiry_not_in?: Maybe<Array<Scalars['Float']>>,
  /** All values less than the given value. */
  resetTokenExpiry_lt?: Maybe<Scalars['Float']>,
  /** All values less than or equal the given value. */
  resetTokenExpiry_lte?: Maybe<Scalars['Float']>,
  /** All values greater than the given value. */
  resetTokenExpiry_gt?: Maybe<Scalars['Float']>,
  /** All values greater than or equal the given value. */
  resetTokenExpiry_gte?: Maybe<Scalars['Float']>,
  createdAt?: Maybe<Scalars['DateTime']>,
  /** All values that are not equal to given value. */
  createdAt_not?: Maybe<Scalars['DateTime']>,
  /** All values that are contained in given list. */
  createdAt_in?: Maybe<Array<Scalars['DateTime']>>,
  /** All values that are not contained in given list. */
  createdAt_not_in?: Maybe<Array<Scalars['DateTime']>>,
  /** All values less than the given value. */
  createdAt_lt?: Maybe<Scalars['DateTime']>,
  /** All values less than or equal the given value. */
  createdAt_lte?: Maybe<Scalars['DateTime']>,
  /** All values greater than the given value. */
  createdAt_gt?: Maybe<Scalars['DateTime']>,
  /** All values greater than or equal the given value. */
  createdAt_gte?: Maybe<Scalars['DateTime']>,
};

export type UserUpdateDataInput = {
  email?: Maybe<Scalars['String']>,
  name?: Maybe<Scalars['String']>,
  password?: Maybe<Scalars['String']>,
  resetToken?: Maybe<Scalars['String']>,
  resetTokenExpiry?: Maybe<Scalars['Float']>,
  permissions?: Maybe<UserUpdatepermissionsInput>,
  interests?: Maybe<UserUpdateinterestsInput>,
  comments?: Maybe<CommentUpdateManyWithoutAuthorInput>,
  ratings?: Maybe<RatingUpdateManyWithoutUserInput>,
  avatar?: Maybe<PictureUpdateOneInput>,
};

export type UserUpdateInput = {
  email?: Maybe<Scalars['String']>,
  name?: Maybe<Scalars['String']>,
  password?: Maybe<Scalars['String']>,
  resetToken?: Maybe<Scalars['String']>,
  resetTokenExpiry?: Maybe<Scalars['Float']>,
  permissions?: Maybe<UserUpdatepermissionsInput>,
  interests?: Maybe<UserUpdateinterestsInput>,
  comments?: Maybe<CommentUpdateManyWithoutAuthorInput>,
  ratings?: Maybe<RatingUpdateManyWithoutUserInput>,
  avatar?: Maybe<PictureUpdateOneInput>,
};

export type UserUpdateinterestsInput = {
  set?: Maybe<Array<Scalars['String']>>,
};

export type UserUpdateManyDataInput = {
  email?: Maybe<Scalars['String']>,
  name?: Maybe<Scalars['String']>,
  password?: Maybe<Scalars['String']>,
  resetToken?: Maybe<Scalars['String']>,
  resetTokenExpiry?: Maybe<Scalars['Float']>,
  permissions?: Maybe<UserUpdatepermissionsInput>,
  interests?: Maybe<UserUpdateinterestsInput>,
};

export type UserUpdateManyInput = {
  create?: Maybe<Array<UserCreateInput>>,
  connect?: Maybe<Array<UserWhereUniqueInput>>,
  set?: Maybe<Array<UserWhereUniqueInput>>,
  disconnect?: Maybe<Array<UserWhereUniqueInput>>,
  delete?: Maybe<Array<UserWhereUniqueInput>>,
  update?: Maybe<Array<UserUpdateWithWhereUniqueNestedInput>>,
  updateMany?: Maybe<Array<UserUpdateManyWithWhereNestedInput>>,
  deleteMany?: Maybe<Array<UserScalarWhereInput>>,
  upsert?: Maybe<Array<UserUpsertWithWhereUniqueNestedInput>>,
};

export type UserUpdateManyWithWhereNestedInput = {
  where: UserScalarWhereInput,
  data: UserUpdateManyDataInput,
};

export type UserUpdateOneRequiredInput = {
  create?: Maybe<UserCreateInput>,
  connect?: Maybe<UserWhereUniqueInput>,
  update?: Maybe<UserUpdateDataInput>,
  upsert?: Maybe<UserUpsertNestedInput>,
};

export type UserUpdateOneRequiredWithoutRatingsInput = {
  create?: Maybe<UserCreateWithoutRatingsInput>,
  connect?: Maybe<UserWhereUniqueInput>,
  update?: Maybe<UserUpdateWithoutRatingsDataInput>,
  upsert?: Maybe<UserUpsertWithoutRatingsInput>,
};

export type UserUpdatepermissionsInput = {
  set?: Maybe<Array<Permission>>,
};

export type UserUpdateWithoutRatingsDataInput = {
  email?: Maybe<Scalars['String']>,
  name?: Maybe<Scalars['String']>,
  password?: Maybe<Scalars['String']>,
  resetToken?: Maybe<Scalars['String']>,
  resetTokenExpiry?: Maybe<Scalars['Float']>,
  permissions?: Maybe<UserUpdatepermissionsInput>,
  interests?: Maybe<UserUpdateinterestsInput>,
  comments?: Maybe<CommentUpdateManyWithoutAuthorInput>,
  avatar?: Maybe<PictureUpdateOneInput>,
};

export type UserUpdateWithWhereUniqueNestedInput = {
  where: UserWhereUniqueInput,
  data: UserUpdateDataInput,
};

export type UserUpsertNestedInput = {
  update: UserUpdateDataInput,
  create: UserCreateInput,
};

export type UserUpsertWithoutRatingsInput = {
  update: UserUpdateWithoutRatingsDataInput,
  create: UserCreateWithoutRatingsInput,
};

export type UserUpsertWithWhereUniqueNestedInput = {
  where: UserWhereUniqueInput,
  update: UserUpdateDataInput,
  create: UserCreateInput,
};

export type UserWhereInput = {
  /** Logical AND on all given filters. */
  AND?: Maybe<Array<UserWhereInput>>,
  /** Logical OR on all given filters. */
  OR?: Maybe<Array<UserWhereInput>>,
  /** Logical NOT on all given filters combined by AND. */
  NOT?: Maybe<Array<UserWhereInput>>,
  id?: Maybe<Scalars['ID']>,
  /** All values that are not equal to given value. */
  id_not?: Maybe<Scalars['ID']>,
  /** All values that are contained in given list. */
  id_in?: Maybe<Array<Scalars['ID']>>,
  /** All values that are not contained in given list. */
  id_not_in?: Maybe<Array<Scalars['ID']>>,
  /** All values less than the given value. */
  id_lt?: Maybe<Scalars['ID']>,
  /** All values less than or equal the given value. */
  id_lte?: Maybe<Scalars['ID']>,
  /** All values greater than the given value. */
  id_gt?: Maybe<Scalars['ID']>,
  /** All values greater than or equal the given value. */
  id_gte?: Maybe<Scalars['ID']>,
  /** All values containing the given string. */
  id_contains?: Maybe<Scalars['ID']>,
  /** All values not containing the given string. */
  id_not_contains?: Maybe<Scalars['ID']>,
  /** All values starting with the given string. */
  id_starts_with?: Maybe<Scalars['ID']>,
  /** All values not starting with the given string. */
  id_not_starts_with?: Maybe<Scalars['ID']>,
  /** All values ending with the given string. */
  id_ends_with?: Maybe<Scalars['ID']>,
  /** All values not ending with the given string. */
  id_not_ends_with?: Maybe<Scalars['ID']>,
  email?: Maybe<Scalars['String']>,
  /** All values that are not equal to given value. */
  email_not?: Maybe<Scalars['String']>,
  /** All values that are contained in given list. */
  email_in?: Maybe<Array<Scalars['String']>>,
  /** All values that are not contained in given list. */
  email_not_in?: Maybe<Array<Scalars['String']>>,
  /** All values less than the given value. */
  email_lt?: Maybe<Scalars['String']>,
  /** All values less than or equal the given value. */
  email_lte?: Maybe<Scalars['String']>,
  /** All values greater than the given value. */
  email_gt?: Maybe<Scalars['String']>,
  /** All values greater than or equal the given value. */
  email_gte?: Maybe<Scalars['String']>,
  /** All values containing the given string. */
  email_contains?: Maybe<Scalars['String']>,
  /** All values not containing the given string. */
  email_not_contains?: Maybe<Scalars['String']>,
  /** All values starting with the given string. */
  email_starts_with?: Maybe<Scalars['String']>,
  /** All values not starting with the given string. */
  email_not_starts_with?: Maybe<Scalars['String']>,
  /** All values ending with the given string. */
  email_ends_with?: Maybe<Scalars['String']>,
  /** All values not ending with the given string. */
  email_not_ends_with?: Maybe<Scalars['String']>,
  name?: Maybe<Scalars['String']>,
  /** All values that are not equal to given value. */
  name_not?: Maybe<Scalars['String']>,
  /** All values that are contained in given list. */
  name_in?: Maybe<Array<Scalars['String']>>,
  /** All values that are not contained in given list. */
  name_not_in?: Maybe<Array<Scalars['String']>>,
  /** All values less than the given value. */
  name_lt?: Maybe<Scalars['String']>,
  /** All values less than or equal the given value. */
  name_lte?: Maybe<Scalars['String']>,
  /** All values greater than the given value. */
  name_gt?: Maybe<Scalars['String']>,
  /** All values greater than or equal the given value. */
  name_gte?: Maybe<Scalars['String']>,
  /** All values containing the given string. */
  name_contains?: Maybe<Scalars['String']>,
  /** All values not containing the given string. */
  name_not_contains?: Maybe<Scalars['String']>,
  /** All values starting with the given string. */
  name_starts_with?: Maybe<Scalars['String']>,
  /** All values not starting with the given string. */
  name_not_starts_with?: Maybe<Scalars['String']>,
  /** All values ending with the given string. */
  name_ends_with?: Maybe<Scalars['String']>,
  /** All values not ending with the given string. */
  name_not_ends_with?: Maybe<Scalars['String']>,
  password?: Maybe<Scalars['String']>,
  /** All values that are not equal to given value. */
  password_not?: Maybe<Scalars['String']>,
  /** All values that are contained in given list. */
  password_in?: Maybe<Array<Scalars['String']>>,
  /** All values that are not contained in given list. */
  password_not_in?: Maybe<Array<Scalars['String']>>,
  /** All values less than the given value. */
  password_lt?: Maybe<Scalars['String']>,
  /** All values less than or equal the given value. */
  password_lte?: Maybe<Scalars['String']>,
  /** All values greater than the given value. */
  password_gt?: Maybe<Scalars['String']>,
  /** All values greater than or equal the given value. */
  password_gte?: Maybe<Scalars['String']>,
  /** All values containing the given string. */
  password_contains?: Maybe<Scalars['String']>,
  /** All values not containing the given string. */
  password_not_contains?: Maybe<Scalars['String']>,
  /** All values starting with the given string. */
  password_starts_with?: Maybe<Scalars['String']>,
  /** All values not starting with the given string. */
  password_not_starts_with?: Maybe<Scalars['String']>,
  /** All values ending with the given string. */
  password_ends_with?: Maybe<Scalars['String']>,
  /** All values not ending with the given string. */
  password_not_ends_with?: Maybe<Scalars['String']>,
  resetToken?: Maybe<Scalars['String']>,
  /** All values that are not equal to given value. */
  resetToken_not?: Maybe<Scalars['String']>,
  /** All values that are contained in given list. */
  resetToken_in?: Maybe<Array<Scalars['String']>>,
  /** All values that are not contained in given list. */
  resetToken_not_in?: Maybe<Array<Scalars['String']>>,
  /** All values less than the given value. */
  resetToken_lt?: Maybe<Scalars['String']>,
  /** All values less than or equal the given value. */
  resetToken_lte?: Maybe<Scalars['String']>,
  /** All values greater than the given value. */
  resetToken_gt?: Maybe<Scalars['String']>,
  /** All values greater than or equal the given value. */
  resetToken_gte?: Maybe<Scalars['String']>,
  /** All values containing the given string. */
  resetToken_contains?: Maybe<Scalars['String']>,
  /** All values not containing the given string. */
  resetToken_not_contains?: Maybe<Scalars['String']>,
  /** All values starting with the given string. */
  resetToken_starts_with?: Maybe<Scalars['String']>,
  /** All values not starting with the given string. */
  resetToken_not_starts_with?: Maybe<Scalars['String']>,
  /** All values ending with the given string. */
  resetToken_ends_with?: Maybe<Scalars['String']>,
  /** All values not ending with the given string. */
  resetToken_not_ends_with?: Maybe<Scalars['String']>,
  resetTokenExpiry?: Maybe<Scalars['Float']>,
  /** All values that are not equal to given value. */
  resetTokenExpiry_not?: Maybe<Scalars['Float']>,
  /** All values that are contained in given list. */
  resetTokenExpiry_in?: Maybe<Array<Scalars['Float']>>,
  /** All values that are not contained in given list. */
  resetTokenExpiry_not_in?: Maybe<Array<Scalars['Float']>>,
  /** All values less than the given value. */
  resetTokenExpiry_lt?: Maybe<Scalars['Float']>,
  /** All values less than or equal the given value. */
  resetTokenExpiry_lte?: Maybe<Scalars['Float']>,
  /** All values greater than the given value. */
  resetTokenExpiry_gt?: Maybe<Scalars['Float']>,
  /** All values greater than or equal the given value. */
  resetTokenExpiry_gte?: Maybe<Scalars['Float']>,
  createdAt?: Maybe<Scalars['DateTime']>,
  /** All values that are not equal to given value. */
  createdAt_not?: Maybe<Scalars['DateTime']>,
  /** All values that are contained in given list. */
  createdAt_in?: Maybe<Array<Scalars['DateTime']>>,
  /** All values that are not contained in given list. */
  createdAt_not_in?: Maybe<Array<Scalars['DateTime']>>,
  /** All values less than the given value. */
  createdAt_lt?: Maybe<Scalars['DateTime']>,
  /** All values less than or equal the given value. */
  createdAt_lte?: Maybe<Scalars['DateTime']>,
  /** All values greater than the given value. */
  createdAt_gt?: Maybe<Scalars['DateTime']>,
  /** All values greater than or equal the given value. */
  createdAt_gte?: Maybe<Scalars['DateTime']>,
  comments_every?: Maybe<CommentWhereInput>,
  comments_some?: Maybe<CommentWhereInput>,
  comments_none?: Maybe<CommentWhereInput>,
  ratings_every?: Maybe<RatingWhereInput>,
  ratings_some?: Maybe<RatingWhereInput>,
  ratings_none?: Maybe<RatingWhereInput>,
  avatar?: Maybe<PictureWhereInput>,
};

export type UserWhereUniqueInput = {
  id?: Maybe<Scalars['ID']>,
  email?: Maybe<Scalars['String']>,
};

export type Video = Node & {
   __typename?: 'Video',
  id: Scalars['ID'],
  title: Scalars['String'],
  description: Scalars['String'],
  duration: Scalars['Int'],
  file?: Maybe<File>,
  link?: Maybe<Scalars['String']>,
};

export type VideoCreateInput = {
  id?: Maybe<Scalars['ID']>,
  title: Scalars['String'],
  description: Scalars['String'],
  duration: Scalars['Int'],
  link?: Maybe<Scalars['String']>,
  file?: Maybe<FileCreateOneInput>,
};

export type VideoCreateManyInput = {
  create?: Maybe<Array<VideoCreateInput>>,
  connect?: Maybe<Array<VideoWhereUniqueInput>>,
};

export enum VideoOrderByInput {
  IdAsc = 'id_ASC',
  IdDesc = 'id_DESC',
  TitleAsc = 'title_ASC',
  TitleDesc = 'title_DESC',
  DescriptionAsc = 'description_ASC',
  DescriptionDesc = 'description_DESC',
  DurationAsc = 'duration_ASC',
  DurationDesc = 'duration_DESC',
  LinkAsc = 'link_ASC',
  LinkDesc = 'link_DESC'
}

export type VideoScalarWhereInput = {
  /** Logical AND on all given filters. */
  AND?: Maybe<Array<VideoScalarWhereInput>>,
  /** Logical OR on all given filters. */
  OR?: Maybe<Array<VideoScalarWhereInput>>,
  /** Logical NOT on all given filters combined by AND. */
  NOT?: Maybe<Array<VideoScalarWhereInput>>,
  id?: Maybe<Scalars['ID']>,
  /** All values that are not equal to given value. */
  id_not?: Maybe<Scalars['ID']>,
  /** All values that are contained in given list. */
  id_in?: Maybe<Array<Scalars['ID']>>,
  /** All values that are not contained in given list. */
  id_not_in?: Maybe<Array<Scalars['ID']>>,
  /** All values less than the given value. */
  id_lt?: Maybe<Scalars['ID']>,
  /** All values less than or equal the given value. */
  id_lte?: Maybe<Scalars['ID']>,
  /** All values greater than the given value. */
  id_gt?: Maybe<Scalars['ID']>,
  /** All values greater than or equal the given value. */
  id_gte?: Maybe<Scalars['ID']>,
  /** All values containing the given string. */
  id_contains?: Maybe<Scalars['ID']>,
  /** All values not containing the given string. */
  id_not_contains?: Maybe<Scalars['ID']>,
  /** All values starting with the given string. */
  id_starts_with?: Maybe<Scalars['ID']>,
  /** All values not starting with the given string. */
  id_not_starts_with?: Maybe<Scalars['ID']>,
  /** All values ending with the given string. */
  id_ends_with?: Maybe<Scalars['ID']>,
  /** All values not ending with the given string. */
  id_not_ends_with?: Maybe<Scalars['ID']>,
  title?: Maybe<Scalars['String']>,
  /** All values that are not equal to given value. */
  title_not?: Maybe<Scalars['String']>,
  /** All values that are contained in given list. */
  title_in?: Maybe<Array<Scalars['String']>>,
  /** All values that are not contained in given list. */
  title_not_in?: Maybe<Array<Scalars['String']>>,
  /** All values less than the given value. */
  title_lt?: Maybe<Scalars['String']>,
  /** All values less than or equal the given value. */
  title_lte?: Maybe<Scalars['String']>,
  /** All values greater than the given value. */
  title_gt?: Maybe<Scalars['String']>,
  /** All values greater than or equal the given value. */
  title_gte?: Maybe<Scalars['String']>,
  /** All values containing the given string. */
  title_contains?: Maybe<Scalars['String']>,
  /** All values not containing the given string. */
  title_not_contains?: Maybe<Scalars['String']>,
  /** All values starting with the given string. */
  title_starts_with?: Maybe<Scalars['String']>,
  /** All values not starting with the given string. */
  title_not_starts_with?: Maybe<Scalars['String']>,
  /** All values ending with the given string. */
  title_ends_with?: Maybe<Scalars['String']>,
  /** All values not ending with the given string. */
  title_not_ends_with?: Maybe<Scalars['String']>,
  description?: Maybe<Scalars['String']>,
  /** All values that are not equal to given value. */
  description_not?: Maybe<Scalars['String']>,
  /** All values that are contained in given list. */
  description_in?: Maybe<Array<Scalars['String']>>,
  /** All values that are not contained in given list. */
  description_not_in?: Maybe<Array<Scalars['String']>>,
  /** All values less than the given value. */
  description_lt?: Maybe<Scalars['String']>,
  /** All values less than or equal the given value. */
  description_lte?: Maybe<Scalars['String']>,
  /** All values greater than the given value. */
  description_gt?: Maybe<Scalars['String']>,
  /** All values greater than or equal the given value. */
  description_gte?: Maybe<Scalars['String']>,
  /** All values containing the given string. */
  description_contains?: Maybe<Scalars['String']>,
  /** All values not containing the given string. */
  description_not_contains?: Maybe<Scalars['String']>,
  /** All values starting with the given string. */
  description_starts_with?: Maybe<Scalars['String']>,
  /** All values not starting with the given string. */
  description_not_starts_with?: Maybe<Scalars['String']>,
  /** All values ending with the given string. */
  description_ends_with?: Maybe<Scalars['String']>,
  /** All values not ending with the given string. */
  description_not_ends_with?: Maybe<Scalars['String']>,
  duration?: Maybe<Scalars['Int']>,
  /** All values that are not equal to given value. */
  duration_not?: Maybe<Scalars['Int']>,
  /** All values that are contained in given list. */
  duration_in?: Maybe<Array<Scalars['Int']>>,
  /** All values that are not contained in given list. */
  duration_not_in?: Maybe<Array<Scalars['Int']>>,
  /** All values less than the given value. */
  duration_lt?: Maybe<Scalars['Int']>,
  /** All values less than or equal the given value. */
  duration_lte?: Maybe<Scalars['Int']>,
  /** All values greater than the given value. */
  duration_gt?: Maybe<Scalars['Int']>,
  /** All values greater than or equal the given value. */
  duration_gte?: Maybe<Scalars['Int']>,
  link?: Maybe<Scalars['String']>,
  /** All values that are not equal to given value. */
  link_not?: Maybe<Scalars['String']>,
  /** All values that are contained in given list. */
  link_in?: Maybe<Array<Scalars['String']>>,
  /** All values that are not contained in given list. */
  link_not_in?: Maybe<Array<Scalars['String']>>,
  /** All values less than the given value. */
  link_lt?: Maybe<Scalars['String']>,
  /** All values less than or equal the given value. */
  link_lte?: Maybe<Scalars['String']>,
  /** All values greater than the given value. */
  link_gt?: Maybe<Scalars['String']>,
  /** All values greater than or equal the given value. */
  link_gte?: Maybe<Scalars['String']>,
  /** All values containing the given string. */
  link_contains?: Maybe<Scalars['String']>,
  /** All values not containing the given string. */
  link_not_contains?: Maybe<Scalars['String']>,
  /** All values starting with the given string. */
  link_starts_with?: Maybe<Scalars['String']>,
  /** All values not starting with the given string. */
  link_not_starts_with?: Maybe<Scalars['String']>,
  /** All values ending with the given string. */
  link_ends_with?: Maybe<Scalars['String']>,
  /** All values not ending with the given string. */
  link_not_ends_with?: Maybe<Scalars['String']>,
};

export type VideoUpdateDataInput = {
  title?: Maybe<Scalars['String']>,
  description?: Maybe<Scalars['String']>,
  duration?: Maybe<Scalars['Int']>,
  link?: Maybe<Scalars['String']>,
  file?: Maybe<FileUpdateOneInput>,
};

export type VideoUpdateInput = {
  title?: Maybe<Scalars['String']>,
  description?: Maybe<Scalars['String']>,
  duration?: Maybe<Scalars['Int']>,
  link?: Maybe<Scalars['String']>,
  file?: Maybe<FileUpdateOneInput>,
};

export type VideoUpdateManyDataInput = {
  title?: Maybe<Scalars['String']>,
  description?: Maybe<Scalars['String']>,
  duration?: Maybe<Scalars['Int']>,
  link?: Maybe<Scalars['String']>,
};

export type VideoUpdateManyInput = {
  create?: Maybe<Array<VideoCreateInput>>,
  connect?: Maybe<Array<VideoWhereUniqueInput>>,
  set?: Maybe<Array<VideoWhereUniqueInput>>,
  disconnect?: Maybe<Array<VideoWhereUniqueInput>>,
  delete?: Maybe<Array<VideoWhereUniqueInput>>,
  update?: Maybe<Array<VideoUpdateWithWhereUniqueNestedInput>>,
  updateMany?: Maybe<Array<VideoUpdateManyWithWhereNestedInput>>,
  deleteMany?: Maybe<Array<VideoScalarWhereInput>>,
  upsert?: Maybe<Array<VideoUpsertWithWhereUniqueNestedInput>>,
};

export type VideoUpdateManyWithWhereNestedInput = {
  where: VideoScalarWhereInput,
  data: VideoUpdateManyDataInput,
};

export type VideoUpdateWithWhereUniqueNestedInput = {
  where: VideoWhereUniqueInput,
  data: VideoUpdateDataInput,
};

export type VideoUpsertWithWhereUniqueNestedInput = {
  where: VideoWhereUniqueInput,
  update: VideoUpdateDataInput,
  create: VideoCreateInput,
};

export type VideoWhereInput = {
  /** Logical AND on all given filters. */
  AND?: Maybe<Array<VideoWhereInput>>,
  /** Logical OR on all given filters. */
  OR?: Maybe<Array<VideoWhereInput>>,
  /** Logical NOT on all given filters combined by AND. */
  NOT?: Maybe<Array<VideoWhereInput>>,
  id?: Maybe<Scalars['ID']>,
  /** All values that are not equal to given value. */
  id_not?: Maybe<Scalars['ID']>,
  /** All values that are contained in given list. */
  id_in?: Maybe<Array<Scalars['ID']>>,
  /** All values that are not contained in given list. */
  id_not_in?: Maybe<Array<Scalars['ID']>>,
  /** All values less than the given value. */
  id_lt?: Maybe<Scalars['ID']>,
  /** All values less than or equal the given value. */
  id_lte?: Maybe<Scalars['ID']>,
  /** All values greater than the given value. */
  id_gt?: Maybe<Scalars['ID']>,
  /** All values greater than or equal the given value. */
  id_gte?: Maybe<Scalars['ID']>,
  /** All values containing the given string. */
  id_contains?: Maybe<Scalars['ID']>,
  /** All values not containing the given string. */
  id_not_contains?: Maybe<Scalars['ID']>,
  /** All values starting with the given string. */
  id_starts_with?: Maybe<Scalars['ID']>,
  /** All values not starting with the given string. */
  id_not_starts_with?: Maybe<Scalars['ID']>,
  /** All values ending with the given string. */
  id_ends_with?: Maybe<Scalars['ID']>,
  /** All values not ending with the given string. */
  id_not_ends_with?: Maybe<Scalars['ID']>,
  title?: Maybe<Scalars['String']>,
  /** All values that are not equal to given value. */
  title_not?: Maybe<Scalars['String']>,
  /** All values that are contained in given list. */
  title_in?: Maybe<Array<Scalars['String']>>,
  /** All values that are not contained in given list. */
  title_not_in?: Maybe<Array<Scalars['String']>>,
  /** All values less than the given value. */
  title_lt?: Maybe<Scalars['String']>,
  /** All values less than or equal the given value. */
  title_lte?: Maybe<Scalars['String']>,
  /** All values greater than the given value. */
  title_gt?: Maybe<Scalars['String']>,
  /** All values greater than or equal the given value. */
  title_gte?: Maybe<Scalars['String']>,
  /** All values containing the given string. */
  title_contains?: Maybe<Scalars['String']>,
  /** All values not containing the given string. */
  title_not_contains?: Maybe<Scalars['String']>,
  /** All values starting with the given string. */
  title_starts_with?: Maybe<Scalars['String']>,
  /** All values not starting with the given string. */
  title_not_starts_with?: Maybe<Scalars['String']>,
  /** All values ending with the given string. */
  title_ends_with?: Maybe<Scalars['String']>,
  /** All values not ending with the given string. */
  title_not_ends_with?: Maybe<Scalars['String']>,
  description?: Maybe<Scalars['String']>,
  /** All values that are not equal to given value. */
  description_not?: Maybe<Scalars['String']>,
  /** All values that are contained in given list. */
  description_in?: Maybe<Array<Scalars['String']>>,
  /** All values that are not contained in given list. */
  description_not_in?: Maybe<Array<Scalars['String']>>,
  /** All values less than the given value. */
  description_lt?: Maybe<Scalars['String']>,
  /** All values less than or equal the given value. */
  description_lte?: Maybe<Scalars['String']>,
  /** All values greater than the given value. */
  description_gt?: Maybe<Scalars['String']>,
  /** All values greater than or equal the given value. */
  description_gte?: Maybe<Scalars['String']>,
  /** All values containing the given string. */
  description_contains?: Maybe<Scalars['String']>,
  /** All values not containing the given string. */
  description_not_contains?: Maybe<Scalars['String']>,
  /** All values starting with the given string. */
  description_starts_with?: Maybe<Scalars['String']>,
  /** All values not starting with the given string. */
  description_not_starts_with?: Maybe<Scalars['String']>,
  /** All values ending with the given string. */
  description_ends_with?: Maybe<Scalars['String']>,
  /** All values not ending with the given string. */
  description_not_ends_with?: Maybe<Scalars['String']>,
  duration?: Maybe<Scalars['Int']>,
  /** All values that are not equal to given value. */
  duration_not?: Maybe<Scalars['Int']>,
  /** All values that are contained in given list. */
  duration_in?: Maybe<Array<Scalars['Int']>>,
  /** All values that are not contained in given list. */
  duration_not_in?: Maybe<Array<Scalars['Int']>>,
  /** All values less than the given value. */
  duration_lt?: Maybe<Scalars['Int']>,
  /** All values less than or equal the given value. */
  duration_lte?: Maybe<Scalars['Int']>,
  /** All values greater than the given value. */
  duration_gt?: Maybe<Scalars['Int']>,
  /** All values greater than or equal the given value. */
  duration_gte?: Maybe<Scalars['Int']>,
  link?: Maybe<Scalars['String']>,
  /** All values that are not equal to given value. */
  link_not?: Maybe<Scalars['String']>,
  /** All values that are contained in given list. */
  link_in?: Maybe<Array<Scalars['String']>>,
  /** All values that are not contained in given list. */
  link_not_in?: Maybe<Array<Scalars['String']>>,
  /** All values less than the given value. */
  link_lt?: Maybe<Scalars['String']>,
  /** All values less than or equal the given value. */
  link_lte?: Maybe<Scalars['String']>,
  /** All values greater than the given value. */
  link_gt?: Maybe<Scalars['String']>,
  /** All values greater than or equal the given value. */
  link_gte?: Maybe<Scalars['String']>,
  /** All values containing the given string. */
  link_contains?: Maybe<Scalars['String']>,
  /** All values not containing the given string. */
  link_not_contains?: Maybe<Scalars['String']>,
  /** All values starting with the given string. */
  link_starts_with?: Maybe<Scalars['String']>,
  /** All values not starting with the given string. */
  link_not_starts_with?: Maybe<Scalars['String']>,
  /** All values ending with the given string. */
  link_ends_with?: Maybe<Scalars['String']>,
  /** All values not ending with the given string. */
  link_not_ends_with?: Maybe<Scalars['String']>,
  file?: Maybe<FileWhereInput>,
};

export type VideoWhereUniqueInput = {
  id?: Maybe<Scalars['ID']>,
};



export type ResolverTypeWrapper<T> = Promise<T> | T;


export type StitchingResolver<TResult, TParent, TContext, TArgs> = {
  fragment: string;
  resolve: ResolverFn<TResult, TParent, TContext, TArgs>;
};

export type Resolver<TResult, TParent = {}, TContext = {}, TArgs = {}> =
  | ResolverFn<TResult, TParent, TContext, TArgs>
  | StitchingResolver<TResult, TParent, TContext, TArgs>;

export type ResolverFn<TResult, TParent, TContext, TArgs> = (
  parent: TParent,
  args: TArgs,
  context: TContext,
  info: GraphQLResolveInfo
) => Promise<TResult> | TResult;

export type SubscriptionSubscribeFn<TResult, TParent, TContext, TArgs> = (
  parent: TParent,
  args: TArgs,
  context: TContext,
  info: GraphQLResolveInfo
) => AsyncIterator<TResult> | Promise<AsyncIterator<TResult>>;

export type SubscriptionResolveFn<TResult, TParent, TContext, TArgs> = (
  parent: TParent,
  args: TArgs,
  context: TContext,
  info: GraphQLResolveInfo
) => TResult | Promise<TResult>;

export interface SubscriptionSubscriberObject<TResult, TKey extends string, TParent, TContext, TArgs> {
  subscribe: SubscriptionSubscribeFn<{ [key in TKey]: TResult }, TParent, TContext, TArgs>;
  resolve?: SubscriptionResolveFn<TResult, { [key in TKey]: TResult }, TContext, TArgs>;
}

export interface SubscriptionResolverObject<TResult, TParent, TContext, TArgs> {
  subscribe: SubscriptionSubscribeFn<any, TParent, TContext, TArgs>;
  resolve: SubscriptionResolveFn<TResult, any, TContext, TArgs>;
}

export type SubscriptionObject<TResult, TKey extends string, TParent, TContext, TArgs> =
  | SubscriptionSubscriberObject<TResult, TKey, TParent, TContext, TArgs>
  | SubscriptionResolverObject<TResult, TParent, TContext, TArgs>;

export type SubscriptionResolver<TResult, TKey extends string, TParent = {}, TContext = {}, TArgs = {}> =
  | ((...args: any[]) => SubscriptionObject<TResult, TKey, TParent, TContext, TArgs>)
  | SubscriptionObject<TResult, TKey, TParent, TContext, TArgs>;

export type TypeResolveFn<TTypes, TParent = {}, TContext = {}> = (
  parent: TParent,
  context: TContext,
  info: GraphQLResolveInfo
) => Maybe<TTypes> | Promise<Maybe<TTypes>>;

export type isTypeOfResolverFn<T = {}> = (obj: T, info: GraphQLResolveInfo) => boolean | Promise<boolean>;

export type NextResolverFn<T> = () => Promise<T>;

export type DirectiveResolverFn<TResult = {}, TParent = {}, TContext = {}, TArgs = {}> = (
  next: NextResolverFn<TResult>,
  parent: TParent,
  args: TArgs,
  context: TContext,
  info: GraphQLResolveInfo
) => TResult | Promise<TResult>;

/** Mapping between all available schema types and the resolvers types */
export type ResolversTypes = {
  Query: ResolverTypeWrapper<{}>,
  Int: ResolverTypeWrapper<Scalars['Int']>,
  TrainingArchive: ResolverTypeWrapper<TrainingArchive>,
  TrainingArchiveItem: ResolverTypeWrapper<TrainingArchiveItem>,
  ID: ResolverTypeWrapper<Scalars['ID']>,
  String: ResolverTypeWrapper<Scalars['String']>,
  TrainingType: ResolverTypeWrapper<TrainingType>,
  Node: ResolversTypes['TrainingType'] | ResolversTypes['Training'] | ResolversTypes['User'] | ResolversTypes['Comment'] | ResolversTypes['Rating'] | ResolversTypes['Picture'] | ResolversTypes['File'] | ResolversTypes['BlockInstance'] | ResolversTypes['Block'] | ResolversTypes['Format'] | ResolversTypes['Track'] | ResolversTypes['Video'] | ResolversTypes['ExerciseInstance'] | ResolversTypes['Exercise'],
  DateTime: ResolverTypeWrapper<Scalars['DateTime']>,
  Float: ResolverTypeWrapper<Scalars['Float']>,
  TrainingWhereInput: TrainingWhereInput,
  Boolean: ResolverTypeWrapper<Scalars['Boolean']>,
  TrainingTypeWhereInput: TrainingTypeWhereInput,
  UserWhereInput: UserWhereInput,
  CommentWhereInput: CommentWhereInput,
  RatingWhereInput: RatingWhereInput,
  PictureWhereInput: PictureWhereInput,
  FileWhereInput: FileWhereInput,
  BlockInstanceWhereInput: BlockInstanceWhereInput,
  BlockWhereInput: BlockWhereInput,
  FormatWhereInput: FormatWhereInput,
  TrackWhereInput: TrackWhereInput,
  VideoWhereInput: VideoWhereInput,
  ExerciseInstanceWhereInput: ExerciseInstanceWhereInput,
  ExerciseWhereInput: ExerciseWhereInput,
  TrainingOrderByInput: TrainingOrderByInput,
  Training: ResolverTypeWrapper<Training>,
  UserOrderByInput: UserOrderByInput,
  User: ResolverTypeWrapper<User>,
  CommentOrderByInput: CommentOrderByInput,
  Comment: ResolverTypeWrapper<Comment>,
  RatingOrderByInput: RatingOrderByInput,
  Rating: ResolverTypeWrapper<Rating>,
  Permission: Permission,
  Picture: ResolverTypeWrapper<Picture>,
  File: ResolverTypeWrapper<File>,
  BlockInstanceOrderByInput: BlockInstanceOrderByInput,
  BlockInstance: ResolverTypeWrapper<BlockInstance>,
  Block: ResolverTypeWrapper<Block>,
  Format: ResolverTypeWrapper<Format>,
  TrackOrderByInput: TrackOrderByInput,
  Track: ResolverTypeWrapper<Track>,
  VideoOrderByInput: VideoOrderByInput,
  Video: ResolverTypeWrapper<Video>,
  PictureOrderByInput: PictureOrderByInput,
  ExerciseInstanceOrderByInput: ExerciseInstanceOrderByInput,
  ExerciseInstance: ResolverTypeWrapper<ExerciseInstance>,
  Exercise: ResolverTypeWrapper<Exercise>,
  TrainingConnection: ResolverTypeWrapper<TrainingConnection>,
  PageInfo: ResolverTypeWrapper<PageInfo>,
  TrainingEdge: ResolverTypeWrapper<TrainingEdge>,
  AggregateTraining: ResolverTypeWrapper<AggregateTraining>,
  FsFile: ResolverTypeWrapper<FsFile>,
  FileOrderByInput: FileOrderByInput,
  VideoWhereUniqueInput: VideoWhereUniqueInput,
  UserWhereUniqueInput: UserWhereUniqueInput,
  TrainingTypeWhereUniqueInput: TrainingTypeWhereUniqueInput,
  TrainingTypeOrderByInput: TrainingTypeOrderByInput,
  BlockWhereUniqueInput: BlockWhereUniqueInput,
  BlockOrderByInput: BlockOrderByInput,
  FormatWhereUniqueInput: FormatWhereUniqueInput,
  FormatOrderByInput: FormatOrderByInput,
  ExerciseWhereUniqueInput: ExerciseWhereUniqueInput,
  ExerciseOrderByInput: ExerciseOrderByInput,
  Mutation: ResolverTypeWrapper<{}>,
  Upload: ResolverTypeWrapper<Scalars['Upload']>,
  VideoCreateInput: VideoCreateInput,
  FileCreateOneInput: FileCreateOneInput,
  FileCreateInput: FileCreateInput,
  UserCreateOneInput: UserCreateOneInput,
  UserCreateInput: UserCreateInput,
  UserCreatepermissionsInput: UserCreatepermissionsInput,
  UserCreateinterestsInput: UserCreateinterestsInput,
  CommentCreateManyWithoutAuthorInput: CommentCreateManyWithoutAuthorInput,
  CommentCreateWithoutAuthorInput: CommentCreateWithoutAuthorInput,
  CommentWhereUniqueInput: CommentWhereUniqueInput,
  RatingCreateManyWithoutUserInput: RatingCreateManyWithoutUserInput,
  RatingCreateWithoutUserInput: RatingCreateWithoutUserInput,
  RatingWhereUniqueInput: RatingWhereUniqueInput,
  PictureCreateOneInput: PictureCreateOneInput,
  PictureCreateInput: PictureCreateInput,
  PictureWhereUniqueInput: PictureWhereUniqueInput,
  FileWhereUniqueInput: FileWhereUniqueInput,
  VideoUpdateInput: VideoUpdateInput,
  FileUpdateOneInput: FileUpdateOneInput,
  FileUpdateDataInput: FileUpdateDataInput,
  UserUpdateOneRequiredInput: UserUpdateOneRequiredInput,
  UserUpdateDataInput: UserUpdateDataInput,
  UserUpdatepermissionsInput: UserUpdatepermissionsInput,
  UserUpdateinterestsInput: UserUpdateinterestsInput,
  CommentUpdateManyWithoutAuthorInput: CommentUpdateManyWithoutAuthorInput,
  CommentUpdateWithWhereUniqueWithoutAuthorInput: CommentUpdateWithWhereUniqueWithoutAuthorInput,
  CommentUpdateWithoutAuthorDataInput: CommentUpdateWithoutAuthorDataInput,
  CommentUpdateManyWithWhereNestedInput: CommentUpdateManyWithWhereNestedInput,
  CommentScalarWhereInput: CommentScalarWhereInput,
  CommentUpdateManyDataInput: CommentUpdateManyDataInput,
  CommentUpsertWithWhereUniqueWithoutAuthorInput: CommentUpsertWithWhereUniqueWithoutAuthorInput,
  RatingUpdateManyWithoutUserInput: RatingUpdateManyWithoutUserInput,
  RatingUpdateWithWhereUniqueWithoutUserInput: RatingUpdateWithWhereUniqueWithoutUserInput,
  RatingUpdateWithoutUserDataInput: RatingUpdateWithoutUserDataInput,
  RatingUpdateManyWithWhereNestedInput: RatingUpdateManyWithWhereNestedInput,
  RatingScalarWhereInput: RatingScalarWhereInput,
  RatingUpdateManyDataInput: RatingUpdateManyDataInput,
  RatingUpsertWithWhereUniqueWithoutUserInput: RatingUpsertWithWhereUniqueWithoutUserInput,
  PictureUpdateOneInput: PictureUpdateOneInput,
  PictureUpdateDataInput: PictureUpdateDataInput,
  PictureUpsertNestedInput: PictureUpsertNestedInput,
  UserUpsertNestedInput: UserUpsertNestedInput,
  FileUpsertNestedInput: FileUpsertNestedInput,
  UserUpdateInput: UserUpdateInput,
  TrainingTypeCreateOneInput: TrainingTypeCreateOneInput,
  TrainingTypeCreateInput: TrainingTypeCreateInput,
  BlockInstanceCreateManyWithoutParentTrainingInput: BlockInstanceCreateManyWithoutParentTrainingInput,
  BlockInstanceCreateWithoutParentTrainingInput: BlockInstanceCreateWithoutParentTrainingInput,
  BlockCreateOneWithoutParentBlockInstancesInput: BlockCreateOneWithoutParentBlockInstancesInput,
  BlockCreateWithoutParentBlockInstancesInput: BlockCreateWithoutParentBlockInstancesInput,
  FormatCreateOneInput: FormatCreateOneInput,
  FormatCreateInput: FormatCreateInput,
  TrackCreateManyInput: TrackCreateManyInput,
  TrackCreateInput: TrackCreateInput,
  TrackWhereUniqueInput: TrackWhereUniqueInput,
  VideoCreateManyInput: VideoCreateManyInput,
  PictureCreateManyInput: PictureCreateManyInput,
  BlockInstanceCreateManyWithoutParentBlockInput: BlockInstanceCreateManyWithoutParentBlockInput,
  BlockInstanceCreateWithoutParentBlockInput: BlockInstanceCreateWithoutParentBlockInput,
  TrainingCreateOneWithoutBlocksInput: TrainingCreateOneWithoutBlocksInput,
  TrainingCreateWithoutBlocksInput: TrainingCreateWithoutBlocksInput,
  UserCreateManyInput: UserCreateManyInput,
  RatingCreateManyInput: RatingCreateManyInput,
  RatingCreateInput: RatingCreateInput,
  UserCreateOneWithoutRatingsInput: UserCreateOneWithoutRatingsInput,
  UserCreateWithoutRatingsInput: UserCreateWithoutRatingsInput,
  TrainingWhereUniqueInput: TrainingWhereUniqueInput,
  BlockInstanceWhereUniqueInput: BlockInstanceWhereUniqueInput,
  ExerciseInstanceCreateManyWithoutParentBlockInstancesInput: ExerciseInstanceCreateManyWithoutParentBlockInstancesInput,
  ExerciseInstanceCreateWithoutParentBlockInstancesInput: ExerciseInstanceCreateWithoutParentBlockInstancesInput,
  ExerciseCreateOneWithoutParentExerciseInstancesInput: ExerciseCreateOneWithoutParentExerciseInstancesInput,
  ExerciseCreateWithoutParentExerciseInstancesInput: ExerciseCreateWithoutParentExerciseInstancesInput,
  ExerciseCreatetargetsInput: ExerciseCreatetargetsInput,
  ExerciseCreatebaseExerciseInput: ExerciseCreatebaseExerciseInput,
  ExerciseInstanceWhereUniqueInput: ExerciseInstanceWhereUniqueInput,
  BlockCreateOneWithoutBlocksInput: BlockCreateOneWithoutBlocksInput,
  BlockCreateWithoutBlocksInput: BlockCreateWithoutBlocksInput,
  BlockInstanceCreateManyWithoutBlockInput: BlockInstanceCreateManyWithoutBlockInput,
  BlockInstanceCreateWithoutBlockInput: BlockInstanceCreateWithoutBlockInput,
  TrainingUpdateInput: TrainingUpdateInput,
  TrainingTypeUpdateOneRequiredInput: TrainingTypeUpdateOneRequiredInput,
  TrainingTypeUpdateDataInput: TrainingTypeUpdateDataInput,
  TrainingTypeUpsertNestedInput: TrainingTypeUpsertNestedInput,
  UserUpdateManyInput: UserUpdateManyInput,
  UserUpdateWithWhereUniqueNestedInput: UserUpdateWithWhereUniqueNestedInput,
  UserUpdateManyWithWhereNestedInput: UserUpdateManyWithWhereNestedInput,
  UserScalarWhereInput: UserScalarWhereInput,
  UserUpdateManyDataInput: UserUpdateManyDataInput,
  UserUpsertWithWhereUniqueNestedInput: UserUpsertWithWhereUniqueNestedInput,
  RatingUpdateManyInput: RatingUpdateManyInput,
  RatingUpdateWithWhereUniqueNestedInput: RatingUpdateWithWhereUniqueNestedInput,
  RatingUpdateDataInput: RatingUpdateDataInput,
  UserUpdateOneRequiredWithoutRatingsInput: UserUpdateOneRequiredWithoutRatingsInput,
  UserUpdateWithoutRatingsDataInput: UserUpdateWithoutRatingsDataInput,
  UserUpsertWithoutRatingsInput: UserUpsertWithoutRatingsInput,
  RatingUpsertWithWhereUniqueNestedInput: RatingUpsertWithWhereUniqueNestedInput,
  BlockInstanceUpdateManyWithoutParentTrainingInput: BlockInstanceUpdateManyWithoutParentTrainingInput,
  BlockInstanceUpdateWithWhereUniqueWithoutParentTrainingInput: BlockInstanceUpdateWithWhereUniqueWithoutParentTrainingInput,
  BlockInstanceUpdateWithoutParentTrainingDataInput: BlockInstanceUpdateWithoutParentTrainingDataInput,
  BlockUpdateOneRequiredWithoutParentBlockInstancesInput: BlockUpdateOneRequiredWithoutParentBlockInstancesInput,
  BlockUpdateWithoutParentBlockInstancesDataInput: BlockUpdateWithoutParentBlockInstancesDataInput,
  FormatUpdateOneRequiredInput: FormatUpdateOneRequiredInput,
  FormatUpdateDataInput: FormatUpdateDataInput,
  FormatUpsertNestedInput: FormatUpsertNestedInput,
  TrackUpdateManyInput: TrackUpdateManyInput,
  TrackUpdateWithWhereUniqueNestedInput: TrackUpdateWithWhereUniqueNestedInput,
  TrackUpdateDataInput: TrackUpdateDataInput,
  TrackUpdateManyWithWhereNestedInput: TrackUpdateManyWithWhereNestedInput,
  TrackScalarWhereInput: TrackScalarWhereInput,
  TrackUpdateManyDataInput: TrackUpdateManyDataInput,
  TrackUpsertWithWhereUniqueNestedInput: TrackUpsertWithWhereUniqueNestedInput,
  VideoUpdateManyInput: VideoUpdateManyInput,
  VideoUpdateWithWhereUniqueNestedInput: VideoUpdateWithWhereUniqueNestedInput,
  VideoUpdateDataInput: VideoUpdateDataInput,
  VideoUpdateManyWithWhereNestedInput: VideoUpdateManyWithWhereNestedInput,
  VideoScalarWhereInput: VideoScalarWhereInput,
  VideoUpdateManyDataInput: VideoUpdateManyDataInput,
  VideoUpsertWithWhereUniqueNestedInput: VideoUpsertWithWhereUniqueNestedInput,
  PictureUpdateManyInput: PictureUpdateManyInput,
  PictureUpdateWithWhereUniqueNestedInput: PictureUpdateWithWhereUniqueNestedInput,
  PictureUpdateManyWithWhereNestedInput: PictureUpdateManyWithWhereNestedInput,
  PictureScalarWhereInput: PictureScalarWhereInput,
  PictureUpdateManyDataInput: PictureUpdateManyDataInput,
  PictureUpsertWithWhereUniqueNestedInput: PictureUpsertWithWhereUniqueNestedInput,
  BlockInstanceUpdateManyWithoutParentBlockInput: BlockInstanceUpdateManyWithoutParentBlockInput,
  BlockInstanceUpdateWithWhereUniqueWithoutParentBlockInput: BlockInstanceUpdateWithWhereUniqueWithoutParentBlockInput,
  BlockInstanceUpdateWithoutParentBlockDataInput: BlockInstanceUpdateWithoutParentBlockDataInput,
  TrainingUpdateOneWithoutBlocksInput: TrainingUpdateOneWithoutBlocksInput,
  TrainingUpdateWithoutBlocksDataInput: TrainingUpdateWithoutBlocksDataInput,
  TrainingUpsertWithoutBlocksInput: TrainingUpsertWithoutBlocksInput,
  BlockInstanceUpdateManyWithWhereNestedInput: BlockInstanceUpdateManyWithWhereNestedInput,
  BlockInstanceScalarWhereInput: BlockInstanceScalarWhereInput,
  BlockInstanceUpdateManyDataInput: BlockInstanceUpdateManyDataInput,
  BlockInstanceUpsertWithWhereUniqueWithoutParentBlockInput: BlockInstanceUpsertWithWhereUniqueWithoutParentBlockInput,
  ExerciseInstanceUpdateManyWithoutParentBlockInstancesInput: ExerciseInstanceUpdateManyWithoutParentBlockInstancesInput,
  ExerciseInstanceUpdateWithWhereUniqueWithoutParentBlockInstancesInput: ExerciseInstanceUpdateWithWhereUniqueWithoutParentBlockInstancesInput,
  ExerciseInstanceUpdateWithoutParentBlockInstancesDataInput: ExerciseInstanceUpdateWithoutParentBlockInstancesDataInput,
  ExerciseUpdateOneRequiredWithoutParentExerciseInstancesInput: ExerciseUpdateOneRequiredWithoutParentExerciseInstancesInput,
  ExerciseUpdateWithoutParentExerciseInstancesDataInput: ExerciseUpdateWithoutParentExerciseInstancesDataInput,
  ExerciseUpdatetargetsInput: ExerciseUpdatetargetsInput,
  ExerciseUpdatebaseExerciseInput: ExerciseUpdatebaseExerciseInput,
  ExerciseUpsertWithoutParentExerciseInstancesInput: ExerciseUpsertWithoutParentExerciseInstancesInput,
  ExerciseInstanceUpdateManyWithWhereNestedInput: ExerciseInstanceUpdateManyWithWhereNestedInput,
  ExerciseInstanceScalarWhereInput: ExerciseInstanceScalarWhereInput,
  ExerciseInstanceUpdateManyDataInput: ExerciseInstanceUpdateManyDataInput,
  ExerciseInstanceUpsertWithWhereUniqueWithoutParentBlockInstancesInput: ExerciseInstanceUpsertWithWhereUniqueWithoutParentBlockInstancesInput,
  BlockUpsertWithoutParentBlockInstancesInput: BlockUpsertWithoutParentBlockInstancesInput,
  BlockUpdateOneWithoutBlocksInput: BlockUpdateOneWithoutBlocksInput,
  BlockUpdateWithoutBlocksDataInput: BlockUpdateWithoutBlocksDataInput,
  BlockInstanceUpdateManyWithoutBlockInput: BlockInstanceUpdateManyWithoutBlockInput,
  BlockInstanceUpdateWithWhereUniqueWithoutBlockInput: BlockInstanceUpdateWithWhereUniqueWithoutBlockInput,
  BlockInstanceUpdateWithoutBlockDataInput: BlockInstanceUpdateWithoutBlockDataInput,
  BlockInstanceUpsertWithWhereUniqueWithoutBlockInput: BlockInstanceUpsertWithWhereUniqueWithoutBlockInput,
  BlockUpsertWithoutBlocksInput: BlockUpsertWithoutBlocksInput,
  BlockInstanceUpsertWithWhereUniqueWithoutParentTrainingInput: BlockInstanceUpsertWithWhereUniqueWithoutParentTrainingInput,
};

/** Mapping between all available schema types and the resolvers parents */
export type ResolversParentTypes = {
  Query: {},
  Int: Scalars['Int'],
  TrainingArchive: TrainingArchive,
  TrainingArchiveItem: TrainingArchiveItem,
  ID: Scalars['ID'],
  String: Scalars['String'],
  TrainingType: TrainingType,
  Node: ResolversParentTypes['TrainingType'] | ResolversParentTypes['Training'] | ResolversParentTypes['User'] | ResolversParentTypes['Comment'] | ResolversParentTypes['Rating'] | ResolversParentTypes['Picture'] | ResolversParentTypes['File'] | ResolversParentTypes['BlockInstance'] | ResolversParentTypes['Block'] | ResolversParentTypes['Format'] | ResolversParentTypes['Track'] | ResolversParentTypes['Video'] | ResolversParentTypes['ExerciseInstance'] | ResolversParentTypes['Exercise'],
  DateTime: Scalars['DateTime'],
  Float: Scalars['Float'],
  TrainingWhereInput: TrainingWhereInput,
  Boolean: Scalars['Boolean'],
  TrainingTypeWhereInput: TrainingTypeWhereInput,
  UserWhereInput: UserWhereInput,
  CommentWhereInput: CommentWhereInput,
  RatingWhereInput: RatingWhereInput,
  PictureWhereInput: PictureWhereInput,
  FileWhereInput: FileWhereInput,
  BlockInstanceWhereInput: BlockInstanceWhereInput,
  BlockWhereInput: BlockWhereInput,
  FormatWhereInput: FormatWhereInput,
  TrackWhereInput: TrackWhereInput,
  VideoWhereInput: VideoWhereInput,
  ExerciseInstanceWhereInput: ExerciseInstanceWhereInput,
  ExerciseWhereInput: ExerciseWhereInput,
  TrainingOrderByInput: TrainingOrderByInput,
  Training: Training,
  UserOrderByInput: UserOrderByInput,
  User: User,
  CommentOrderByInput: CommentOrderByInput,
  Comment: Comment,
  RatingOrderByInput: RatingOrderByInput,
  Rating: Rating,
  Permission: Permission,
  Picture: Picture,
  File: File,
  BlockInstanceOrderByInput: BlockInstanceOrderByInput,
  BlockInstance: BlockInstance,
  Block: Block,
  Format: Format,
  TrackOrderByInput: TrackOrderByInput,
  Track: Track,
  VideoOrderByInput: VideoOrderByInput,
  Video: Video,
  PictureOrderByInput: PictureOrderByInput,
  ExerciseInstanceOrderByInput: ExerciseInstanceOrderByInput,
  ExerciseInstance: ExerciseInstance,
  Exercise: Exercise,
  TrainingConnection: TrainingConnection,
  PageInfo: PageInfo,
  TrainingEdge: TrainingEdge,
  AggregateTraining: AggregateTraining,
  FsFile: FsFile,
  FileOrderByInput: FileOrderByInput,
  VideoWhereUniqueInput: VideoWhereUniqueInput,
  UserWhereUniqueInput: UserWhereUniqueInput,
  TrainingTypeWhereUniqueInput: TrainingTypeWhereUniqueInput,
  TrainingTypeOrderByInput: TrainingTypeOrderByInput,
  BlockWhereUniqueInput: BlockWhereUniqueInput,
  BlockOrderByInput: BlockOrderByInput,
  FormatWhereUniqueInput: FormatWhereUniqueInput,
  FormatOrderByInput: FormatOrderByInput,
  ExerciseWhereUniqueInput: ExerciseWhereUniqueInput,
  ExerciseOrderByInput: ExerciseOrderByInput,
  Mutation: {},
  Upload: Scalars['Upload'],
  VideoCreateInput: VideoCreateInput,
  FileCreateOneInput: FileCreateOneInput,
  FileCreateInput: FileCreateInput,
  UserCreateOneInput: UserCreateOneInput,
  UserCreateInput: UserCreateInput,
  UserCreatepermissionsInput: UserCreatepermissionsInput,
  UserCreateinterestsInput: UserCreateinterestsInput,
  CommentCreateManyWithoutAuthorInput: CommentCreateManyWithoutAuthorInput,
  CommentCreateWithoutAuthorInput: CommentCreateWithoutAuthorInput,
  CommentWhereUniqueInput: CommentWhereUniqueInput,
  RatingCreateManyWithoutUserInput: RatingCreateManyWithoutUserInput,
  RatingCreateWithoutUserInput: RatingCreateWithoutUserInput,
  RatingWhereUniqueInput: RatingWhereUniqueInput,
  PictureCreateOneInput: PictureCreateOneInput,
  PictureCreateInput: PictureCreateInput,
  PictureWhereUniqueInput: PictureWhereUniqueInput,
  FileWhereUniqueInput: FileWhereUniqueInput,
  VideoUpdateInput: VideoUpdateInput,
  FileUpdateOneInput: FileUpdateOneInput,
  FileUpdateDataInput: FileUpdateDataInput,
  UserUpdateOneRequiredInput: UserUpdateOneRequiredInput,
  UserUpdateDataInput: UserUpdateDataInput,
  UserUpdatepermissionsInput: UserUpdatepermissionsInput,
  UserUpdateinterestsInput: UserUpdateinterestsInput,
  CommentUpdateManyWithoutAuthorInput: CommentUpdateManyWithoutAuthorInput,
  CommentUpdateWithWhereUniqueWithoutAuthorInput: CommentUpdateWithWhereUniqueWithoutAuthorInput,
  CommentUpdateWithoutAuthorDataInput: CommentUpdateWithoutAuthorDataInput,
  CommentUpdateManyWithWhereNestedInput: CommentUpdateManyWithWhereNestedInput,
  CommentScalarWhereInput: CommentScalarWhereInput,
  CommentUpdateManyDataInput: CommentUpdateManyDataInput,
  CommentUpsertWithWhereUniqueWithoutAuthorInput: CommentUpsertWithWhereUniqueWithoutAuthorInput,
  RatingUpdateManyWithoutUserInput: RatingUpdateManyWithoutUserInput,
  RatingUpdateWithWhereUniqueWithoutUserInput: RatingUpdateWithWhereUniqueWithoutUserInput,
  RatingUpdateWithoutUserDataInput: RatingUpdateWithoutUserDataInput,
  RatingUpdateManyWithWhereNestedInput: RatingUpdateManyWithWhereNestedInput,
  RatingScalarWhereInput: RatingScalarWhereInput,
  RatingUpdateManyDataInput: RatingUpdateManyDataInput,
  RatingUpsertWithWhereUniqueWithoutUserInput: RatingUpsertWithWhereUniqueWithoutUserInput,
  PictureUpdateOneInput: PictureUpdateOneInput,
  PictureUpdateDataInput: PictureUpdateDataInput,
  PictureUpsertNestedInput: PictureUpsertNestedInput,
  UserUpsertNestedInput: UserUpsertNestedInput,
  FileUpsertNestedInput: FileUpsertNestedInput,
  UserUpdateInput: UserUpdateInput,
  TrainingTypeCreateOneInput: TrainingTypeCreateOneInput,
  TrainingTypeCreateInput: TrainingTypeCreateInput,
  BlockInstanceCreateManyWithoutParentTrainingInput: BlockInstanceCreateManyWithoutParentTrainingInput,
  BlockInstanceCreateWithoutParentTrainingInput: BlockInstanceCreateWithoutParentTrainingInput,
  BlockCreateOneWithoutParentBlockInstancesInput: BlockCreateOneWithoutParentBlockInstancesInput,
  BlockCreateWithoutParentBlockInstancesInput: BlockCreateWithoutParentBlockInstancesInput,
  FormatCreateOneInput: FormatCreateOneInput,
  FormatCreateInput: FormatCreateInput,
  TrackCreateManyInput: TrackCreateManyInput,
  TrackCreateInput: TrackCreateInput,
  TrackWhereUniqueInput: TrackWhereUniqueInput,
  VideoCreateManyInput: VideoCreateManyInput,
  PictureCreateManyInput: PictureCreateManyInput,
  BlockInstanceCreateManyWithoutParentBlockInput: BlockInstanceCreateManyWithoutParentBlockInput,
  BlockInstanceCreateWithoutParentBlockInput: BlockInstanceCreateWithoutParentBlockInput,
  TrainingCreateOneWithoutBlocksInput: TrainingCreateOneWithoutBlocksInput,
  TrainingCreateWithoutBlocksInput: TrainingCreateWithoutBlocksInput,
  UserCreateManyInput: UserCreateManyInput,
  RatingCreateManyInput: RatingCreateManyInput,
  RatingCreateInput: RatingCreateInput,
  UserCreateOneWithoutRatingsInput: UserCreateOneWithoutRatingsInput,
  UserCreateWithoutRatingsInput: UserCreateWithoutRatingsInput,
  TrainingWhereUniqueInput: TrainingWhereUniqueInput,
  BlockInstanceWhereUniqueInput: BlockInstanceWhereUniqueInput,
  ExerciseInstanceCreateManyWithoutParentBlockInstancesInput: ExerciseInstanceCreateManyWithoutParentBlockInstancesInput,
  ExerciseInstanceCreateWithoutParentBlockInstancesInput: ExerciseInstanceCreateWithoutParentBlockInstancesInput,
  ExerciseCreateOneWithoutParentExerciseInstancesInput: ExerciseCreateOneWithoutParentExerciseInstancesInput,
  ExerciseCreateWithoutParentExerciseInstancesInput: ExerciseCreateWithoutParentExerciseInstancesInput,
  ExerciseCreatetargetsInput: ExerciseCreatetargetsInput,
  ExerciseCreatebaseExerciseInput: ExerciseCreatebaseExerciseInput,
  ExerciseInstanceWhereUniqueInput: ExerciseInstanceWhereUniqueInput,
  BlockCreateOneWithoutBlocksInput: BlockCreateOneWithoutBlocksInput,
  BlockCreateWithoutBlocksInput: BlockCreateWithoutBlocksInput,
  BlockInstanceCreateManyWithoutBlockInput: BlockInstanceCreateManyWithoutBlockInput,
  BlockInstanceCreateWithoutBlockInput: BlockInstanceCreateWithoutBlockInput,
  TrainingUpdateInput: TrainingUpdateInput,
  TrainingTypeUpdateOneRequiredInput: TrainingTypeUpdateOneRequiredInput,
  TrainingTypeUpdateDataInput: TrainingTypeUpdateDataInput,
  TrainingTypeUpsertNestedInput: TrainingTypeUpsertNestedInput,
  UserUpdateManyInput: UserUpdateManyInput,
  UserUpdateWithWhereUniqueNestedInput: UserUpdateWithWhereUniqueNestedInput,
  UserUpdateManyWithWhereNestedInput: UserUpdateManyWithWhereNestedInput,
  UserScalarWhereInput: UserScalarWhereInput,
  UserUpdateManyDataInput: UserUpdateManyDataInput,
  UserUpsertWithWhereUniqueNestedInput: UserUpsertWithWhereUniqueNestedInput,
  RatingUpdateManyInput: RatingUpdateManyInput,
  RatingUpdateWithWhereUniqueNestedInput: RatingUpdateWithWhereUniqueNestedInput,
  RatingUpdateDataInput: RatingUpdateDataInput,
  UserUpdateOneRequiredWithoutRatingsInput: UserUpdateOneRequiredWithoutRatingsInput,
  UserUpdateWithoutRatingsDataInput: UserUpdateWithoutRatingsDataInput,
  UserUpsertWithoutRatingsInput: UserUpsertWithoutRatingsInput,
  RatingUpsertWithWhereUniqueNestedInput: RatingUpsertWithWhereUniqueNestedInput,
  BlockInstanceUpdateManyWithoutParentTrainingInput: BlockInstanceUpdateManyWithoutParentTrainingInput,
  BlockInstanceUpdateWithWhereUniqueWithoutParentTrainingInput: BlockInstanceUpdateWithWhereUniqueWithoutParentTrainingInput,
  BlockInstanceUpdateWithoutParentTrainingDataInput: BlockInstanceUpdateWithoutParentTrainingDataInput,
  BlockUpdateOneRequiredWithoutParentBlockInstancesInput: BlockUpdateOneRequiredWithoutParentBlockInstancesInput,
  BlockUpdateWithoutParentBlockInstancesDataInput: BlockUpdateWithoutParentBlockInstancesDataInput,
  FormatUpdateOneRequiredInput: FormatUpdateOneRequiredInput,
  FormatUpdateDataInput: FormatUpdateDataInput,
  FormatUpsertNestedInput: FormatUpsertNestedInput,
  TrackUpdateManyInput: TrackUpdateManyInput,
  TrackUpdateWithWhereUniqueNestedInput: TrackUpdateWithWhereUniqueNestedInput,
  TrackUpdateDataInput: TrackUpdateDataInput,
  TrackUpdateManyWithWhereNestedInput: TrackUpdateManyWithWhereNestedInput,
  TrackScalarWhereInput: TrackScalarWhereInput,
  TrackUpdateManyDataInput: TrackUpdateManyDataInput,
  TrackUpsertWithWhereUniqueNestedInput: TrackUpsertWithWhereUniqueNestedInput,
  VideoUpdateManyInput: VideoUpdateManyInput,
  VideoUpdateWithWhereUniqueNestedInput: VideoUpdateWithWhereUniqueNestedInput,
  VideoUpdateDataInput: VideoUpdateDataInput,
  VideoUpdateManyWithWhereNestedInput: VideoUpdateManyWithWhereNestedInput,
  VideoScalarWhereInput: VideoScalarWhereInput,
  VideoUpdateManyDataInput: VideoUpdateManyDataInput,
  VideoUpsertWithWhereUniqueNestedInput: VideoUpsertWithWhereUniqueNestedInput,
  PictureUpdateManyInput: PictureUpdateManyInput,
  PictureUpdateWithWhereUniqueNestedInput: PictureUpdateWithWhereUniqueNestedInput,
  PictureUpdateManyWithWhereNestedInput: PictureUpdateManyWithWhereNestedInput,
  PictureScalarWhereInput: PictureScalarWhereInput,
  PictureUpdateManyDataInput: PictureUpdateManyDataInput,
  PictureUpsertWithWhereUniqueNestedInput: PictureUpsertWithWhereUniqueNestedInput,
  BlockInstanceUpdateManyWithoutParentBlockInput: BlockInstanceUpdateManyWithoutParentBlockInput,
  BlockInstanceUpdateWithWhereUniqueWithoutParentBlockInput: BlockInstanceUpdateWithWhereUniqueWithoutParentBlockInput,
  BlockInstanceUpdateWithoutParentBlockDataInput: BlockInstanceUpdateWithoutParentBlockDataInput,
  TrainingUpdateOneWithoutBlocksInput: TrainingUpdateOneWithoutBlocksInput,
  TrainingUpdateWithoutBlocksDataInput: TrainingUpdateWithoutBlocksDataInput,
  TrainingUpsertWithoutBlocksInput: TrainingUpsertWithoutBlocksInput,
  BlockInstanceUpdateManyWithWhereNestedInput: BlockInstanceUpdateManyWithWhereNestedInput,
  BlockInstanceScalarWhereInput: BlockInstanceScalarWhereInput,
  BlockInstanceUpdateManyDataInput: BlockInstanceUpdateManyDataInput,
  BlockInstanceUpsertWithWhereUniqueWithoutParentBlockInput: BlockInstanceUpsertWithWhereUniqueWithoutParentBlockInput,
  ExerciseInstanceUpdateManyWithoutParentBlockInstancesInput: ExerciseInstanceUpdateManyWithoutParentBlockInstancesInput,
  ExerciseInstanceUpdateWithWhereUniqueWithoutParentBlockInstancesInput: ExerciseInstanceUpdateWithWhereUniqueWithoutParentBlockInstancesInput,
  ExerciseInstanceUpdateWithoutParentBlockInstancesDataInput: ExerciseInstanceUpdateWithoutParentBlockInstancesDataInput,
  ExerciseUpdateOneRequiredWithoutParentExerciseInstancesInput: ExerciseUpdateOneRequiredWithoutParentExerciseInstancesInput,
  ExerciseUpdateWithoutParentExerciseInstancesDataInput: ExerciseUpdateWithoutParentExerciseInstancesDataInput,
  ExerciseUpdatetargetsInput: ExerciseUpdatetargetsInput,
  ExerciseUpdatebaseExerciseInput: ExerciseUpdatebaseExerciseInput,
  ExerciseUpsertWithoutParentExerciseInstancesInput: ExerciseUpsertWithoutParentExerciseInstancesInput,
  ExerciseInstanceUpdateManyWithWhereNestedInput: ExerciseInstanceUpdateManyWithWhereNestedInput,
  ExerciseInstanceScalarWhereInput: ExerciseInstanceScalarWhereInput,
  ExerciseInstanceUpdateManyDataInput: ExerciseInstanceUpdateManyDataInput,
  ExerciseInstanceUpsertWithWhereUniqueWithoutParentBlockInstancesInput: ExerciseInstanceUpsertWithWhereUniqueWithoutParentBlockInstancesInput,
  BlockUpsertWithoutParentBlockInstancesInput: BlockUpsertWithoutParentBlockInstancesInput,
  BlockUpdateOneWithoutBlocksInput: BlockUpdateOneWithoutBlocksInput,
  BlockUpdateWithoutBlocksDataInput: BlockUpdateWithoutBlocksDataInput,
  BlockInstanceUpdateManyWithoutBlockInput: BlockInstanceUpdateManyWithoutBlockInput,
  BlockInstanceUpdateWithWhereUniqueWithoutBlockInput: BlockInstanceUpdateWithWhereUniqueWithoutBlockInput,
  BlockInstanceUpdateWithoutBlockDataInput: BlockInstanceUpdateWithoutBlockDataInput,
  BlockInstanceUpsertWithWhereUniqueWithoutBlockInput: BlockInstanceUpsertWithWhereUniqueWithoutBlockInput,
  BlockUpsertWithoutBlocksInput: BlockUpsertWithoutBlocksInput,
  BlockInstanceUpsertWithWhereUniqueWithoutParentTrainingInput: BlockInstanceUpsertWithWhereUniqueWithoutParentTrainingInput,
};

export type AggregateTrainingResolvers<ContextType = any, ParentType extends ResolversParentTypes['AggregateTraining'] = ResolversParentTypes['AggregateTraining']> = {
  count?: Resolver<ResolversTypes['Int'], ParentType, ContextType>,
  __isTypeOf?: isTypeOfResolverFn<ParentType>,
};

export type BlockResolvers<ContextType = any, ParentType extends ResolversParentTypes['Block'] = ResolversParentTypes['Block']> = {
  id?: Resolver<ResolversTypes['ID'], ParentType, ContextType>,
  title?: Resolver<ResolversTypes['String'], ParentType, ContextType>,
  description?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>,
  duration?: Resolver<Maybe<ResolversTypes['Int']>, ParentType, ContextType>,
  format?: Resolver<ResolversTypes['Format'], ParentType, ContextType>,
  rest?: Resolver<Maybe<ResolversTypes['Int']>, ParentType, ContextType>,
  tracks?: Resolver<Maybe<Array<ResolversTypes['Track']>>, ParentType, ContextType, RequireFields<BlockTracksArgs, never>>,
  videos?: Resolver<Maybe<Array<ResolversTypes['Video']>>, ParentType, ContextType, RequireFields<BlockVideosArgs, never>>,
  pictures?: Resolver<Maybe<Array<ResolversTypes['Picture']>>, ParentType, ContextType, RequireFields<BlockPicturesArgs, never>>,
  blocks?: Resolver<Maybe<Array<ResolversTypes['BlockInstance']>>, ParentType, ContextType, RequireFields<BlockBlocksArgs, never>>,
  parentBlockInstances?: Resolver<Maybe<Array<ResolversTypes['BlockInstance']>>, ParentType, ContextType, RequireFields<BlockParentBlockInstancesArgs, never>>,
  exercises?: Resolver<Maybe<Array<ResolversTypes['ExerciseInstance']>>, ParentType, ContextType, RequireFields<BlockExercisesArgs, never>>,
  __isTypeOf?: isTypeOfResolverFn<ParentType>,
};

export type BlockInstanceResolvers<ContextType = any, ParentType extends ResolversParentTypes['BlockInstance'] = ResolversParentTypes['BlockInstance']> = {
  id?: Resolver<ResolversTypes['ID'], ParentType, ContextType>,
  block?: Resolver<ResolversTypes['Block'], ParentType, ContextType>,
  parentBlock?: Resolver<Maybe<ResolversTypes['Block']>, ParentType, ContextType>,
  parentTraining?: Resolver<Maybe<ResolversTypes['Training']>, ParentType, ContextType>,
  order?: Resolver<ResolversTypes['Int'], ParentType, ContextType>,
  rounds?: Resolver<Maybe<ResolversTypes['Int']>, ParentType, ContextType>,
  variation?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>,
  __isTypeOf?: isTypeOfResolverFn<ParentType>,
};

export type CommentResolvers<ContextType = any, ParentType extends ResolversParentTypes['Comment'] = ResolversParentTypes['Comment']> = {
  id?: Resolver<ResolversTypes['ID'], ParentType, ContextType>,
  text?: Resolver<ResolversTypes['String'], ParentType, ContextType>,
  author?: Resolver<ResolversTypes['User'], ParentType, ContextType>,
  createdAt?: Resolver<ResolversTypes['DateTime'], ParentType, ContextType>,
  __isTypeOf?: isTypeOfResolverFn<ParentType>,
};

export interface DateTimeScalarConfig extends GraphQLScalarTypeConfig<ResolversTypes['DateTime'], any> {
  name: 'DateTime'
}

export type ExerciseResolvers<ContextType = any, ParentType extends ResolversParentTypes['Exercise'] = ResolversParentTypes['Exercise']> = {
  id?: Resolver<ResolversTypes['ID'], ParentType, ContextType>,
  name?: Resolver<ResolversTypes['String'], ParentType, ContextType>,
  description?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>,
  videos?: Resolver<Maybe<Array<ResolversTypes['Video']>>, ParentType, ContextType, RequireFields<ExerciseVideosArgs, never>>,
  pictures?: Resolver<Maybe<Array<ResolversTypes['Picture']>>, ParentType, ContextType, RequireFields<ExercisePicturesArgs, never>>,
  targets?: Resolver<Array<ResolversTypes['String']>, ParentType, ContextType>,
  baseExercise?: Resolver<Array<ResolversTypes['String']>, ParentType, ContextType>,
  parentExerciseInstances?: Resolver<Maybe<Array<ResolversTypes['ExerciseInstance']>>, ParentType, ContextType, RequireFields<ExerciseParentExerciseInstancesArgs, never>>,
  __isTypeOf?: isTypeOfResolverFn<ParentType>,
};

export type ExerciseInstanceResolvers<ContextType = any, ParentType extends ResolversParentTypes['ExerciseInstance'] = ResolversParentTypes['ExerciseInstance']> = {
  id?: Resolver<ResolversTypes['ID'], ParentType, ContextType>,
  exercise?: Resolver<ResolversTypes['Exercise'], ParentType, ContextType>,
  order?: Resolver<ResolversTypes['Int'], ParentType, ContextType>,
  repetitions?: Resolver<Maybe<ResolversTypes['Int']>, ParentType, ContextType>,
  variation?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>,
  parentBlockInstances?: Resolver<ResolversTypes['Block'], ParentType, ContextType>,
  __isTypeOf?: isTypeOfResolverFn<ParentType>,
};

export type FileResolvers<ContextType = any, ParentType extends ResolversParentTypes['File'] = ResolversParentTypes['File']> = {
  id?: Resolver<ResolversTypes['ID'], ParentType, ContextType>,
  createdAt?: Resolver<ResolversTypes['DateTime'], ParentType, ContextType>,
  updatedAt?: Resolver<ResolversTypes['DateTime'], ParentType, ContextType>,
  path?: Resolver<ResolversTypes['String'], ParentType, ContextType>,
  mimetype?: Resolver<ResolversTypes['String'], ParentType, ContextType>,
  user?: Resolver<ResolversTypes['User'], ParentType, ContextType>,
  thumbnail?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>,
  filename?: Resolver<ResolversTypes['String'], ParentType, ContextType>,
  encoding?: Resolver<ResolversTypes['String'], ParentType, ContextType>,
  size?: Resolver<ResolversTypes['Int'], ParentType, ContextType>,
  comment?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>,
  __isTypeOf?: isTypeOfResolverFn<ParentType>,
};

export type FormatResolvers<ContextType = any, ParentType extends ResolversParentTypes['Format'] = ResolversParentTypes['Format']> = {
  id?: Resolver<ResolversTypes['ID'], ParentType, ContextType>,
  name?: Resolver<ResolversTypes['String'], ParentType, ContextType>,
  description?: Resolver<ResolversTypes['String'], ParentType, ContextType>,
  __isTypeOf?: isTypeOfResolverFn<ParentType>,
};

export type FsFileResolvers<ContextType = any, ParentType extends ResolversParentTypes['FsFile'] = ResolversParentTypes['FsFile']> = {
  filename?: Resolver<ResolversTypes['String'], ParentType, ContextType>,
  path?: Resolver<ResolversTypes['String'], ParentType, ContextType>,
  size?: Resolver<ResolversTypes['Int'], ParentType, ContextType>,
  ctime?: Resolver<ResolversTypes['DateTime'], ParentType, ContextType>,
  mtime?: Resolver<ResolversTypes['DateTime'], ParentType, ContextType>,
  __isTypeOf?: isTypeOfResolverFn<ParentType>,
};

export type MutationResolvers<ContextType = any, ParentType extends ResolversParentTypes['Mutation'] = ResolversParentTypes['Mutation']> = {
  uploadFile?: Resolver<ResolversTypes['File'], ParentType, ContextType, RequireFields<MutationUploadFileArgs, 'file'>>,
  createVideo?: Resolver<ResolversTypes['Video'], ParentType, ContextType, RequireFields<MutationCreateVideoArgs, never>>,
  updateVideo?: Resolver<ResolversTypes['Video'], ParentType, ContextType, RequireFields<MutationUpdateVideoArgs, 'data' | 'where'>>,
  createUser?: Resolver<ResolversTypes['User'], ParentType, ContextType, RequireFields<MutationCreateUserArgs, 'data'>>,
  updateUser?: Resolver<ResolversTypes['User'], ParentType, ContextType, RequireFields<MutationUpdateUserArgs, 'id' | 'data'>>,
  deleteUser?: Resolver<ResolversTypes['User'], ParentType, ContextType, RequireFields<MutationDeleteUserArgs, 'id'>>,
  updatePermissions?: Resolver<ResolversTypes['User'], ParentType, ContextType, RequireFields<MutationUpdatePermissionsArgs, 'id' | 'permissions'>>,
  createTraining?: Resolver<ResolversTypes['Training'], ParentType, ContextType, RequireFields<MutationCreateTrainingArgs, 'title' | 'type' | 'trainingDate' | 'location' | 'published'>>,
  deleteTraining?: Resolver<ResolversTypes['Training'], ParentType, ContextType, RequireFields<MutationDeleteTrainingArgs, 'id'>>,
  updateTraining?: Resolver<ResolversTypes['Training'], ParentType, ContextType, RequireFields<MutationUpdateTrainingArgs, 'where' | 'data'>>,
  createTrainingType?: Resolver<ResolversTypes['TrainingType'], ParentType, ContextType, RequireFields<MutationCreateTrainingTypeArgs, 'name' | 'description'>>,
  createFormat?: Resolver<ResolversTypes['Format'], ParentType, ContextType, RequireFields<MutationCreateFormatArgs, 'name' | 'description'>>,
  userLogin?: Resolver<ResolversTypes['User'], ParentType, ContextType, RequireFields<MutationUserLoginArgs, 'email' | 'password'>>,
  userLogout?: Resolver<ResolversTypes['String'], ParentType, ContextType>,
  userSignup?: Resolver<ResolversTypes['User'], ParentType, ContextType, RequireFields<MutationUserSignupArgs, 'name' | 'email' | 'password'>>,
  requestReset?: Resolver<ResolversTypes['String'], ParentType, ContextType, RequireFields<MutationRequestResetArgs, 'email'>>,
  resetPassword?: Resolver<ResolversTypes['User'], ParentType, ContextType, RequireFields<MutationResetPasswordArgs, 'token' | 'password'>>,
  register?: Resolver<ResolversTypes['Training'], ParentType, ContextType, RequireFields<MutationRegisterArgs, 'training'>>,
  deregister?: Resolver<ResolversTypes['Training'], ParentType, ContextType, RequireFields<MutationDeregisterArgs, 'training'>>,
  publish?: Resolver<ResolversTypes['Training'], ParentType, ContextType, RequireFields<MutationPublishArgs, 'training'>>,
};

export type NodeResolvers<ContextType = any, ParentType extends ResolversParentTypes['Node'] = ResolversParentTypes['Node']> = {
  __resolveType: TypeResolveFn<'TrainingType' | 'Training' | 'User' | 'Comment' | 'Rating' | 'Picture' | 'File' | 'BlockInstance' | 'Block' | 'Format' | 'Track' | 'Video' | 'ExerciseInstance' | 'Exercise', ParentType, ContextType>,
  id?: Resolver<ResolversTypes['ID'], ParentType, ContextType>,
};

export type PageInfoResolvers<ContextType = any, ParentType extends ResolversParentTypes['PageInfo'] = ResolversParentTypes['PageInfo']> = {
  hasNextPage?: Resolver<ResolversTypes['Boolean'], ParentType, ContextType>,
  hasPreviousPage?: Resolver<ResolversTypes['Boolean'], ParentType, ContextType>,
  startCursor?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>,
  endCursor?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>,
  __isTypeOf?: isTypeOfResolverFn<ParentType>,
};

export type PictureResolvers<ContextType = any, ParentType extends ResolversParentTypes['Picture'] = ResolversParentTypes['Picture']> = {
  id?: Resolver<ResolversTypes['ID'], ParentType, ContextType>,
  title?: Resolver<ResolversTypes['String'], ParentType, ContextType>,
  description?: Resolver<ResolversTypes['String'], ParentType, ContextType>,
  file?: Resolver<Maybe<ResolversTypes['File']>, ParentType, ContextType>,
  link?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>,
  __isTypeOf?: isTypeOfResolverFn<ParentType>,
};

export type QueryResolvers<ContextType = any, ParentType extends ResolversParentTypes['Query'] = ResolversParentTypes['Query']> = {
  trainingArchive?: Resolver<ResolversTypes['TrainingArchive'], ParentType, ContextType, RequireFields<QueryTrainingArchiveArgs, never>>,
  publishedTrainings?: Resolver<Array<ResolversTypes['Training']>, ParentType, ContextType, RequireFields<QueryPublishedTrainingsArgs, never>>,
  training?: Resolver<ResolversTypes['Training'], ParentType, ContextType, RequireFields<QueryTrainingArgs, never>>,
  trainings?: Resolver<Array<ResolversTypes['Training']>, ParentType, ContextType, RequireFields<QueryTrainingsArgs, never>>,
  trainingsCount?: Resolver<ResolversTypes['TrainingConnection'], ParentType, ContextType, RequireFields<QueryTrainingsCountArgs, never>>,
  fsFiles?: Resolver<Array<ResolversTypes['FsFile']>, ParentType, ContextType, RequireFields<QueryFsFilesArgs, 'directory'>>,
  files?: Resolver<Array<ResolversTypes['File']>, ParentType, ContextType, RequireFields<QueryFilesArgs, never>>,
  videos?: Resolver<Array<ResolversTypes['Video']>, ParentType, ContextType>,
  video?: Resolver<ResolversTypes['Video'], ParentType, ContextType, RequireFields<QueryVideoArgs, never>>,
  currentUser?: Resolver<ResolversTypes['User'], ParentType, ContextType>,
  user?: Resolver<Maybe<ResolversTypes['User']>, ParentType, ContextType, RequireFields<QueryUserArgs, 'where'>>,
  users?: Resolver<Array<ResolversTypes['User']>, ParentType, ContextType, RequireFields<QueryUsersArgs, never>>,
  trainingType?: Resolver<Maybe<ResolversTypes['TrainingType']>, ParentType, ContextType, RequireFields<QueryTrainingTypeArgs, 'where'>>,
  trainingTypes?: Resolver<Array<ResolversTypes['TrainingType']>, ParentType, ContextType, RequireFields<QueryTrainingTypesArgs, never>>,
  block?: Resolver<Maybe<ResolversTypes['Block']>, ParentType, ContextType, RequireFields<QueryBlockArgs, 'where'>>,
  blocks?: Resolver<Array<ResolversTypes['Block']>, ParentType, ContextType, RequireFields<QueryBlocksArgs, never>>,
  format?: Resolver<Maybe<ResolversTypes['Format']>, ParentType, ContextType, RequireFields<QueryFormatArgs, 'where'>>,
  formats?: Resolver<Array<ResolversTypes['Format']>, ParentType, ContextType, RequireFields<QueryFormatsArgs, never>>,
  exercise?: Resolver<Maybe<ResolversTypes['Exercise']>, ParentType, ContextType, RequireFields<QueryExerciseArgs, 'where'>>,
  exercises?: Resolver<Array<ResolversTypes['Exercise']>, ParentType, ContextType, RequireFields<QueryExercisesArgs, never>>,
};

export type RatingResolvers<ContextType = any, ParentType extends ResolversParentTypes['Rating'] = ResolversParentTypes['Rating']> = {
  id?: Resolver<ResolversTypes['ID'], ParentType, ContextType>,
  user?: Resolver<ResolversTypes['User'], ParentType, ContextType>,
  value?: Resolver<ResolversTypes['Int'], ParentType, ContextType>,
  comment?: Resolver<ResolversTypes['String'], ParentType, ContextType>,
  createdAt?: Resolver<ResolversTypes['DateTime'], ParentType, ContextType>,
  __isTypeOf?: isTypeOfResolverFn<ParentType>,
};

export type TrackResolvers<ContextType = any, ParentType extends ResolversParentTypes['Track'] = ResolversParentTypes['Track']> = {
  id?: Resolver<ResolversTypes['ID'], ParentType, ContextType>,
  title?: Resolver<ResolversTypes['String'], ParentType, ContextType>,
  artist?: Resolver<ResolversTypes['String'], ParentType, ContextType>,
  duration?: Resolver<ResolversTypes['Int'], ParentType, ContextType>,
  file?: Resolver<Maybe<ResolversTypes['File']>, ParentType, ContextType>,
  link?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>,
  __isTypeOf?: isTypeOfResolverFn<ParentType>,
};

export type TrainingResolvers<ContextType = any, ParentType extends ResolversParentTypes['Training'] = ResolversParentTypes['Training']> = {
  id?: Resolver<ResolversTypes['ID'], ParentType, ContextType>,
  title?: Resolver<ResolversTypes['String'], ParentType, ContextType>,
  type?: Resolver<ResolversTypes['TrainingType'], ParentType, ContextType>,
  createdAt?: Resolver<ResolversTypes['DateTime'], ParentType, ContextType>,
  trainingDate?: Resolver<ResolversTypes['DateTime'], ParentType, ContextType>,
  location?: Resolver<ResolversTypes['String'], ParentType, ContextType>,
  registrations?: Resolver<Maybe<Array<ResolversTypes['User']>>, ParentType, ContextType, RequireFields<TrainingRegistrationsArgs, never>>,
  attendance?: Resolver<Maybe<ResolversTypes['Int']>, ParentType, ContextType>,
  ratings?: Resolver<Maybe<Array<ResolversTypes['Rating']>>, ParentType, ContextType, RequireFields<TrainingRatingsArgs, never>>,
  published?: Resolver<ResolversTypes['Boolean'], ParentType, ContextType>,
  blocks?: Resolver<Maybe<Array<ResolversTypes['BlockInstance']>>, ParentType, ContextType, RequireFields<TrainingBlocksArgs, never>>,
  __isTypeOf?: isTypeOfResolverFn<ParentType>,
};

export type TrainingArchiveResolvers<ContextType = any, ParentType extends ResolversParentTypes['TrainingArchive'] = ResolversParentTypes['TrainingArchive']> = {
  trainings?: Resolver<Array<ResolversTypes['TrainingArchiveItem']>, ParentType, ContextType>,
  totalCount?: Resolver<ResolversTypes['Int'], ParentType, ContextType>,
  __isTypeOf?: isTypeOfResolverFn<ParentType>,
};

export type TrainingArchiveItemResolvers<ContextType = any, ParentType extends ResolversParentTypes['TrainingArchiveItem'] = ResolversParentTypes['TrainingArchiveItem']> = {
  id?: Resolver<ResolversTypes['ID'], ParentType, ContextType>,
  title?: Resolver<ResolversTypes['String'], ParentType, ContextType>,
  type?: Resolver<ResolversTypes['TrainingType'], ParentType, ContextType>,
  trainingDate?: Resolver<ResolversTypes['DateTime'], ParentType, ContextType>,
  location?: Resolver<ResolversTypes['String'], ParentType, ContextType>,
  attendance?: Resolver<Maybe<ResolversTypes['Int']>, ParentType, ContextType>,
  ratings?: Resolver<Maybe<ResolversTypes['Float']>, ParentType, ContextType>,
  blocks?: Resolver<Array<ResolversTypes['String']>, ParentType, ContextType>,
  duration?: Resolver<Maybe<ResolversTypes['Int']>, ParentType, ContextType>,
  __isTypeOf?: isTypeOfResolverFn<ParentType>,
};

export type TrainingConnectionResolvers<ContextType = any, ParentType extends ResolversParentTypes['TrainingConnection'] = ResolversParentTypes['TrainingConnection']> = {
  pageInfo?: Resolver<ResolversTypes['PageInfo'], ParentType, ContextType>,
  edges?: Resolver<Array<Maybe<ResolversTypes['TrainingEdge']>>, ParentType, ContextType>,
  aggregate?: Resolver<ResolversTypes['AggregateTraining'], ParentType, ContextType>,
  __isTypeOf?: isTypeOfResolverFn<ParentType>,
};

export type TrainingEdgeResolvers<ContextType = any, ParentType extends ResolversParentTypes['TrainingEdge'] = ResolversParentTypes['TrainingEdge']> = {
  node?: Resolver<ResolversTypes['Training'], ParentType, ContextType>,
  cursor?: Resolver<ResolversTypes['String'], ParentType, ContextType>,
  __isTypeOf?: isTypeOfResolverFn<ParentType>,
};

export type TrainingTypeResolvers<ContextType = any, ParentType extends ResolversParentTypes['TrainingType'] = ResolversParentTypes['TrainingType']> = {
  id?: Resolver<ResolversTypes['ID'], ParentType, ContextType>,
  name?: Resolver<ResolversTypes['String'], ParentType, ContextType>,
  description?: Resolver<ResolversTypes['String'], ParentType, ContextType>,
  __isTypeOf?: isTypeOfResolverFn<ParentType>,
};

export interface UploadScalarConfig extends GraphQLScalarTypeConfig<ResolversTypes['Upload'], any> {
  name: 'Upload'
}

export type UserResolvers<ContextType = any, ParentType extends ResolversParentTypes['User'] = ResolversParentTypes['User']> = {
  id?: Resolver<ResolversTypes['ID'], ParentType, ContextType>,
  email?: Resolver<ResolversTypes['String'], ParentType, ContextType>,
  name?: Resolver<ResolversTypes['String'], ParentType, ContextType>,
  password?: Resolver<ResolversTypes['String'], ParentType, ContextType>,
  resetToken?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>,
  resetTokenExpiry?: Resolver<Maybe<ResolversTypes['Float']>, ParentType, ContextType>,
  createdAt?: Resolver<ResolversTypes['DateTime'], ParentType, ContextType>,
  comments?: Resolver<Maybe<Array<ResolversTypes['Comment']>>, ParentType, ContextType, RequireFields<UserCommentsArgs, never>>,
  ratings?: Resolver<Maybe<Array<ResolversTypes['Rating']>>, ParentType, ContextType, RequireFields<UserRatingsArgs, never>>,
  permissions?: Resolver<Array<ResolversTypes['Permission']>, ParentType, ContextType>,
  interests?: Resolver<Array<ResolversTypes['String']>, ParentType, ContextType>,
  avatar?: Resolver<Maybe<ResolversTypes['Picture']>, ParentType, ContextType>,
  __isTypeOf?: isTypeOfResolverFn<ParentType>,
};

export type VideoResolvers<ContextType = any, ParentType extends ResolversParentTypes['Video'] = ResolversParentTypes['Video']> = {
  id?: Resolver<ResolversTypes['ID'], ParentType, ContextType>,
  title?: Resolver<ResolversTypes['String'], ParentType, ContextType>,
  description?: Resolver<ResolversTypes['String'], ParentType, ContextType>,
  duration?: Resolver<ResolversTypes['Int'], ParentType, ContextType>,
  file?: Resolver<Maybe<ResolversTypes['File']>, ParentType, ContextType>,
  link?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>,
  __isTypeOf?: isTypeOfResolverFn<ParentType>,
};

export type Resolvers<ContextType = any> = {
  AggregateTraining?: AggregateTrainingResolvers<ContextType>,
  Block?: BlockResolvers<ContextType>,
  BlockInstance?: BlockInstanceResolvers<ContextType>,
  Comment?: CommentResolvers<ContextType>,
  DateTime?: GraphQLScalarType,
  Exercise?: ExerciseResolvers<ContextType>,
  ExerciseInstance?: ExerciseInstanceResolvers<ContextType>,
  File?: FileResolvers<ContextType>,
  Format?: FormatResolvers<ContextType>,
  FsFile?: FsFileResolvers<ContextType>,
  Mutation?: MutationResolvers<ContextType>,
  Node?: NodeResolvers,
  PageInfo?: PageInfoResolvers<ContextType>,
  Picture?: PictureResolvers<ContextType>,
  Query?: QueryResolvers<ContextType>,
  Rating?: RatingResolvers<ContextType>,
  Track?: TrackResolvers<ContextType>,
  Training?: TrainingResolvers<ContextType>,
  TrainingArchive?: TrainingArchiveResolvers<ContextType>,
  TrainingArchiveItem?: TrainingArchiveItemResolvers<ContextType>,
  TrainingConnection?: TrainingConnectionResolvers<ContextType>,
  TrainingEdge?: TrainingEdgeResolvers<ContextType>,
  TrainingType?: TrainingTypeResolvers<ContextType>,
  Upload?: GraphQLScalarType,
  User?: UserResolvers<ContextType>,
  Video?: VideoResolvers<ContextType>,
};


/**
 * @deprecated
 * Use "Resolvers" root object instead. If you wish to get "IResolvers", add "typesPrefix: I" to your config.
*/
export type IResolvers<ContextType = any> = Resolvers<ContextType>;
