/* eslint-disable */
import * as types from './graphql';
import { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/core';

/**
 * Map of all GraphQL operations in the project.
 *
 * This map has several performance disadvantages:
 * 1. It is not tree-shakeable, so it will include all operations in the project.
 * 2. It is not minifiable, so the string of a GraphQL query will be multiple times inside the bundle.
 * 3. It does not support dead code elimination, so it will add unused operations.
 *
 * Therefore it is highly recommended to use the babel or swc plugin for production.
 */
const documents = {
    "\n    query LanguageQuery {\n      me {\n        language @client\n      }\n    }\n  ": types.LanguageQueryDocument,
    "\n    mutation SetLanguage($language: String!) {\n      setLanguage(language: $language) @client {\n        language\n      }\n    }\n  ": types.SetLanguageDocument,
    "\n        query ReadOnlyQuery {\n          me {\n            readOnly\n            selectedClass {\n              readOnly\n            }\n          }\n        }\n      ": types.ReadOnlyQueryDocument,
    "\n  fragment ModuleLevelFragment on ModuleLevelNode {\n    name\n    id\n    filterAttributeType\n  }\n": types.ModuleLevelFragmentFragmentDoc,
    "\n    query ModuleFilterQuery {\n      moduleLevels {\n        ...ModuleLevelFragment\n      }\n      moduleCategories {\n        name\n        id\n        filterAttributeType\n      }\n      me {\n        language @client\n      }\n    }\n  ": types.ModuleFilterQueryDocument,
    "\n    mutation UpdateLastModuleLevelMutation($input: UpdateLastModuleLevelInput!) {\n      updateLastModuleLevel(input: $input) {\n        clientMutationId\n        user {\n          username\n          id\n          lastModuleLevel {\n            ...ModuleLevelFragment\n          }\n        }\n      }\n    }\n  ": types.UpdateLastModuleLevelMutationDocument,
    "\n    query ModuleTitleQuery($slug: String) {\n      module(slug: $slug) {\n        title\n      }\n    }\n  ": types.ModuleTitleQueryDocument,
    "\n  fragment SnapshotListItem on SnapshotNode {\n    shared\n  }\n": types.SnapshotListItemFragmentDoc,
    "\n  fragment SnapshotTitleFragment on SnapshotNode {\n    title\n  }\n": types.SnapshotTitleFragmentFragmentDoc,
    "\n  fragment SnapshotDetailsFragment on SnapshotNode {\n    id\n    title\n    shared\n    created\n    creator\n    mine\n  }\n": types.SnapshotDetailsFragmentFragmentDoc,
    "\n  query ModuleEditModeQuery($slug: String) {\n    module(slug: $slug) {\n      inEditMode @client\n      slug\n    }\n  }\n": types.ModuleEditModeQueryDocument,
    "\n    query ChapterQuery($id: ID!) {\n      chapter(id: $id) {\n        path\n      }\n    }\n  ": types.ChapterQueryDocument,
    "\n    query ContentBlockQuery($id: ID!) {\n      contentBlock(id: $id) {\n        path\n      }\n    }\n  ": types.ContentBlockQueryDocument,
    "\n        query MeLanguage {\n          me {\n            language @client\n          }\n        }\n      ": types.MeLanguageDocument,
    "\n    query ModuleSnapshotsQuery($slug: String!) {\n      module(slug: $slug) {\n        id\n        title\n        metaTitle\n        slug\n        topic {\n          title\n        }\n        snapshots {\n          ...SnapshotDetailsFragment\n        }\n      }\n    }\n  ": types.ModuleSnapshotsQueryDocument,
    "\n  query ModuleSolutions($slug: String) {\n    module(slug: $slug) {\n      solutionsEnabled\n      slug\n    }\n  }\n": types.ModuleSolutionsDocument,
};

/**
 * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
 *
 *
 * @example
 * ```ts
 * const query = graphql(`query GetUser($id: ID!) { user(id: $id) { name } }`);
 * ```
 *
 * The query argument is unknown!
 * Please regenerate the types.
 */
export function graphql(source: string): unknown;

/**
 * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
 */
export function graphql(source: "\n    query LanguageQuery {\n      me {\n        language @client\n      }\n    }\n  "): (typeof documents)["\n    query LanguageQuery {\n      me {\n        language @client\n      }\n    }\n  "];
/**
 * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
 */
export function graphql(source: "\n    mutation SetLanguage($language: String!) {\n      setLanguage(language: $language) @client {\n        language\n      }\n    }\n  "): (typeof documents)["\n    mutation SetLanguage($language: String!) {\n      setLanguage(language: $language) @client {\n        language\n      }\n    }\n  "];
/**
 * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
 */
export function graphql(source: "\n        query ReadOnlyQuery {\n          me {\n            readOnly\n            selectedClass {\n              readOnly\n            }\n          }\n        }\n      "): (typeof documents)["\n        query ReadOnlyQuery {\n          me {\n            readOnly\n            selectedClass {\n              readOnly\n            }\n          }\n        }\n      "];
/**
 * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
 */
export function graphql(source: "\n  fragment ModuleLevelFragment on ModuleLevelNode {\n    name\n    id\n    filterAttributeType\n  }\n"): (typeof documents)["\n  fragment ModuleLevelFragment on ModuleLevelNode {\n    name\n    id\n    filterAttributeType\n  }\n"];
/**
 * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
 */
export function graphql(source: "\n    query ModuleFilterQuery {\n      moduleLevels {\n        ...ModuleLevelFragment\n      }\n      moduleCategories {\n        name\n        id\n        filterAttributeType\n      }\n      me {\n        language @client\n      }\n    }\n  "): (typeof documents)["\n    query ModuleFilterQuery {\n      moduleLevels {\n        ...ModuleLevelFragment\n      }\n      moduleCategories {\n        name\n        id\n        filterAttributeType\n      }\n      me {\n        language @client\n      }\n    }\n  "];
/**
 * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
 */
export function graphql(source: "\n    mutation UpdateLastModuleLevelMutation($input: UpdateLastModuleLevelInput!) {\n      updateLastModuleLevel(input: $input) {\n        clientMutationId\n        user {\n          username\n          id\n          lastModuleLevel {\n            ...ModuleLevelFragment\n          }\n        }\n      }\n    }\n  "): (typeof documents)["\n    mutation UpdateLastModuleLevelMutation($input: UpdateLastModuleLevelInput!) {\n      updateLastModuleLevel(input: $input) {\n        clientMutationId\n        user {\n          username\n          id\n          lastModuleLevel {\n            ...ModuleLevelFragment\n          }\n        }\n      }\n    }\n  "];
/**
 * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
 */
export function graphql(source: "\n    query ModuleTitleQuery($slug: String) {\n      module(slug: $slug) {\n        title\n      }\n    }\n  "): (typeof documents)["\n    query ModuleTitleQuery($slug: String) {\n      module(slug: $slug) {\n        title\n      }\n    }\n  "];
/**
 * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
 */
export function graphql(source: "\n  fragment SnapshotListItem on SnapshotNode {\n    shared\n  }\n"): (typeof documents)["\n  fragment SnapshotListItem on SnapshotNode {\n    shared\n  }\n"];
/**
 * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
 */
export function graphql(source: "\n  fragment SnapshotTitleFragment on SnapshotNode {\n    title\n  }\n"): (typeof documents)["\n  fragment SnapshotTitleFragment on SnapshotNode {\n    title\n  }\n"];
/**
 * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
 */
export function graphql(source: "\n  fragment SnapshotDetailsFragment on SnapshotNode {\n    id\n    title\n    shared\n    created\n    creator\n    mine\n  }\n"): (typeof documents)["\n  fragment SnapshotDetailsFragment on SnapshotNode {\n    id\n    title\n    shared\n    created\n    creator\n    mine\n  }\n"];
/**
 * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
 */
export function graphql(source: "\n  query ModuleEditModeQuery($slug: String) {\n    module(slug: $slug) {\n      inEditMode @client\n      slug\n    }\n  }\n"): (typeof documents)["\n  query ModuleEditModeQuery($slug: String) {\n    module(slug: $slug) {\n      inEditMode @client\n      slug\n    }\n  }\n"];
/**
 * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
 */
export function graphql(source: "\n    query ChapterQuery($id: ID!) {\n      chapter(id: $id) {\n        path\n      }\n    }\n  "): (typeof documents)["\n    query ChapterQuery($id: ID!) {\n      chapter(id: $id) {\n        path\n      }\n    }\n  "];
/**
 * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
 */
export function graphql(source: "\n    query ContentBlockQuery($id: ID!) {\n      contentBlock(id: $id) {\n        path\n      }\n    }\n  "): (typeof documents)["\n    query ContentBlockQuery($id: ID!) {\n      contentBlock(id: $id) {\n        path\n      }\n    }\n  "];
/**
 * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
 */
export function graphql(source: "\n        query MeLanguage {\n          me {\n            language @client\n          }\n        }\n      "): (typeof documents)["\n        query MeLanguage {\n          me {\n            language @client\n          }\n        }\n      "];
/**
 * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
 */
export function graphql(source: "\n    query ModuleSnapshotsQuery($slug: String!) {\n      module(slug: $slug) {\n        id\n        title\n        metaTitle\n        slug\n        topic {\n          title\n        }\n        snapshots {\n          ...SnapshotDetailsFragment\n        }\n      }\n    }\n  "): (typeof documents)["\n    query ModuleSnapshotsQuery($slug: String!) {\n      module(slug: $slug) {\n        id\n        title\n        metaTitle\n        slug\n        topic {\n          title\n        }\n        snapshots {\n          ...SnapshotDetailsFragment\n        }\n      }\n    }\n  "];
/**
 * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
 */
export function graphql(source: "\n  query ModuleSolutions($slug: String) {\n    module(slug: $slug) {\n      solutionsEnabled\n      slug\n    }\n  }\n"): (typeof documents)["\n  query ModuleSolutions($slug: String) {\n    module(slug: $slug) {\n      solutionsEnabled\n      slug\n    }\n  }\n"];

export function graphql(source: string) {
  return (documents as any)[source] ?? {};
}

export type DocumentType<TDocumentNode extends DocumentNode<any, any>> = TDocumentNode extends DocumentNode<  infer TType,  any>  ? TType  : never;