/* eslint-disable */
import * as types from './graphql';
import type { 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.
 * Learn more about it here: https://the-guild.dev/graphql/codegen/plugins/presets/preset-client#reducing-bundle-size
 */
type Documents = {
    "\n  mutation Login($payload: LoginPayload!) {\n    login(payload: $payload) {\n      accessToken\n      refreshToken\n      token\n      user {\n        id\n        lastName\n        firstName\n        middleName\n        email\n        login\n        role\n        active\n        createdAt\n        updatedAt\n      }\n    }\n  }\n": typeof types.LoginDocument,
    "\n  mutation RefreshSession($payload: RefreshSessionPayload!) {\n    refreshSession(payload: $payload) {\n      accessToken\n      refreshToken\n      token\n      user {\n        id\n        lastName\n        firstName\n        middleName\n        email\n        login\n        role\n        active\n        createdAt\n        updatedAt\n      }\n    }\n  }\n": typeof types.RefreshSessionDocument,
    "\n  query CurrentUser {\n    currentUser {\n      id\n      lastName\n      firstName\n      middleName\n      email\n      login\n      role\n      active\n      createdAt\n      updatedAt\n    }\n  }\n": typeof types.CurrentUserDocument,
    "\n  mutation Logout {\n    logout\n  }\n": typeof types.LogoutDocument,
    "\n  fragment UserFields on User {\n    id\n    lastName\n    firstName\n    middleName\n    email\n    login\n    role\n    active\n    createdAt\n    updatedAt\n  }\n": typeof types.UserFieldsFragmentDoc,
    "\n  query GetUsers(\n    $page: Int!\n    $pageSize: Int\n    $query: String\n    $roles: [UserRole!]\n    $sortDirection: SortDirection!\n    $sortField: UserSortField!\n  ) {\n    getUsers(\n      page: $page\n      pageSize: $pageSize\n      query: $query\n      roles: $roles\n      sortDirection: $sortDirection\n      sortField: $sortField\n    ) {\n      totalPages\n      totalElements\n      page {\n        ...UserFields\n      }\n    }\n  }\n": typeof types.GetUsersDocument,
    "\n  query GetUser($id: Long!) {\n    getUser(id: $id) {\n      ...UserFields\n    }\n  }\n": typeof types.GetUserDocument,
    "\n  mutation CreateUser($payload: CreateUserPayload!) {\n    createUser(payload: $payload) {\n      ...UserFields\n    }\n  }\n": typeof types.CreateUserDocument,
    "\n  mutation UpdateUser($id: Long!, $payload: UpdateUserPayload!) {\n    updateUser(id: $id, payload: $payload) {\n      ...UserFields\n    }\n  }\n": typeof types.UpdateUserDocument,
    "\n  mutation DeleteUser($id: Long!) {\n    deleteUser(id: $id)\n  }\n": typeof types.DeleteUserDocument,
};
const documents: Documents = {
    "\n  mutation Login($payload: LoginPayload!) {\n    login(payload: $payload) {\n      accessToken\n      refreshToken\n      token\n      user {\n        id\n        lastName\n        firstName\n        middleName\n        email\n        login\n        role\n        active\n        createdAt\n        updatedAt\n      }\n    }\n  }\n": types.LoginDocument,
    "\n  mutation RefreshSession($payload: RefreshSessionPayload!) {\n    refreshSession(payload: $payload) {\n      accessToken\n      refreshToken\n      token\n      user {\n        id\n        lastName\n        firstName\n        middleName\n        email\n        login\n        role\n        active\n        createdAt\n        updatedAt\n      }\n    }\n  }\n": types.RefreshSessionDocument,
    "\n  query CurrentUser {\n    currentUser {\n      id\n      lastName\n      firstName\n      middleName\n      email\n      login\n      role\n      active\n      createdAt\n      updatedAt\n    }\n  }\n": types.CurrentUserDocument,
    "\n  mutation Logout {\n    logout\n  }\n": types.LogoutDocument,
    "\n  fragment UserFields on User {\n    id\n    lastName\n    firstName\n    middleName\n    email\n    login\n    role\n    active\n    createdAt\n    updatedAt\n  }\n": types.UserFieldsFragmentDoc,
    "\n  query GetUsers(\n    $page: Int!\n    $pageSize: Int\n    $query: String\n    $roles: [UserRole!]\n    $sortDirection: SortDirection!\n    $sortField: UserSortField!\n  ) {\n    getUsers(\n      page: $page\n      pageSize: $pageSize\n      query: $query\n      roles: $roles\n      sortDirection: $sortDirection\n      sortField: $sortField\n    ) {\n      totalPages\n      totalElements\n      page {\n        ...UserFields\n      }\n    }\n  }\n": types.GetUsersDocument,
    "\n  query GetUser($id: Long!) {\n    getUser(id: $id) {\n      ...UserFields\n    }\n  }\n": types.GetUserDocument,
    "\n  mutation CreateUser($payload: CreateUserPayload!) {\n    createUser(payload: $payload) {\n      ...UserFields\n    }\n  }\n": types.CreateUserDocument,
    "\n  mutation UpdateUser($id: Long!, $payload: UpdateUserPayload!) {\n    updateUser(id: $id, payload: $payload) {\n      ...UserFields\n    }\n  }\n": types.UpdateUserDocument,
    "\n  mutation DeleteUser($id: Long!) {\n    deleteUser(id: $id)\n  }\n": types.DeleteUserDocument,
};

/**
 * 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  mutation Login($payload: LoginPayload!) {\n    login(payload: $payload) {\n      accessToken\n      refreshToken\n      token\n      user {\n        id\n        lastName\n        firstName\n        middleName\n        email\n        login\n        role\n        active\n        createdAt\n        updatedAt\n      }\n    }\n  }\n"): (typeof documents)["\n  mutation Login($payload: LoginPayload!) {\n    login(payload: $payload) {\n      accessToken\n      refreshToken\n      token\n      user {\n        id\n        lastName\n        firstName\n        middleName\n        email\n        login\n        role\n        active\n        createdAt\n        updatedAt\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  mutation RefreshSession($payload: RefreshSessionPayload!) {\n    refreshSession(payload: $payload) {\n      accessToken\n      refreshToken\n      token\n      user {\n        id\n        lastName\n        firstName\n        middleName\n        email\n        login\n        role\n        active\n        createdAt\n        updatedAt\n      }\n    }\n  }\n"): (typeof documents)["\n  mutation RefreshSession($payload: RefreshSessionPayload!) {\n    refreshSession(payload: $payload) {\n      accessToken\n      refreshToken\n      token\n      user {\n        id\n        lastName\n        firstName\n        middleName\n        email\n        login\n        role\n        active\n        createdAt\n        updatedAt\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 CurrentUser {\n    currentUser {\n      id\n      lastName\n      firstName\n      middleName\n      email\n      login\n      role\n      active\n      createdAt\n      updatedAt\n    }\n  }\n"): (typeof documents)["\n  query CurrentUser {\n    currentUser {\n      id\n      lastName\n      firstName\n      middleName\n      email\n      login\n      role\n      active\n      createdAt\n      updatedAt\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 Logout {\n    logout\n  }\n"): (typeof documents)["\n  mutation Logout {\n    logout\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 UserFields on User {\n    id\n    lastName\n    firstName\n    middleName\n    email\n    login\n    role\n    active\n    createdAt\n    updatedAt\n  }\n"): (typeof documents)["\n  fragment UserFields on User {\n    id\n    lastName\n    firstName\n    middleName\n    email\n    login\n    role\n    active\n    createdAt\n    updatedAt\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 GetUsers(\n    $page: Int!\n    $pageSize: Int\n    $query: String\n    $roles: [UserRole!]\n    $sortDirection: SortDirection!\n    $sortField: UserSortField!\n  ) {\n    getUsers(\n      page: $page\n      pageSize: $pageSize\n      query: $query\n      roles: $roles\n      sortDirection: $sortDirection\n      sortField: $sortField\n    ) {\n      totalPages\n      totalElements\n      page {\n        ...UserFields\n      }\n    }\n  }\n"): (typeof documents)["\n  query GetUsers(\n    $page: Int!\n    $pageSize: Int\n    $query: String\n    $roles: [UserRole!]\n    $sortDirection: SortDirection!\n    $sortField: UserSortField!\n  ) {\n    getUsers(\n      page: $page\n      pageSize: $pageSize\n      query: $query\n      roles: $roles\n      sortDirection: $sortDirection\n      sortField: $sortField\n    ) {\n      totalPages\n      totalElements\n      page {\n        ...UserFields\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 GetUser($id: Long!) {\n    getUser(id: $id) {\n      ...UserFields\n    }\n  }\n"): (typeof documents)["\n  query GetUser($id: Long!) {\n    getUser(id: $id) {\n      ...UserFields\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 CreateUser($payload: CreateUserPayload!) {\n    createUser(payload: $payload) {\n      ...UserFields\n    }\n  }\n"): (typeof documents)["\n  mutation CreateUser($payload: CreateUserPayload!) {\n    createUser(payload: $payload) {\n      ...UserFields\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 UpdateUser($id: Long!, $payload: UpdateUserPayload!) {\n    updateUser(id: $id, payload: $payload) {\n      ...UserFields\n    }\n  }\n"): (typeof documents)["\n  mutation UpdateUser($id: Long!, $payload: UpdateUserPayload!) {\n    updateUser(id: $id, payload: $payload) {\n      ...UserFields\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 DeleteUser($id: Long!) {\n    deleteUser(id: $id)\n  }\n"): (typeof documents)["\n  mutation DeleteUser($id: Long!) {\n    deleteUser(id: $id)\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;