import type { DefinitionType, EndpointDefinitions, MutationDefinition, QueryDefinition, InfiniteQueryDefinition, } from '@reduxjs/toolkit/query' import type { UseInfiniteQuery, UseLazyQuery, UseMutation, UseQuery, } from './buildHooks' type QueryHookNames = { [ K in keyof Definitions as Definitions[K] extends { type: DefinitionType.query } ? `use${Capitalize}Query` : never ]: UseQuery>> } type LazyQueryHookNames = { [ K in keyof Definitions as Definitions[K] extends { type: DefinitionType.query } ? `useLazy${Capitalize}Query` : never ]: UseLazyQuery>> } type InfiniteQueryHookNames = { [ K in keyof Definitions as Definitions[K] extends { type: DefinitionType.infinitequery } ? `use${Capitalize}InfiniteQuery` : never ]: UseInfiniteQuery< Extract> > } type MutationHookNames = { [ K in keyof Definitions as Definitions[K] extends { type: DefinitionType.mutation } ? `use${Capitalize}Mutation` : never ]: UseMutation< Extract> > } export type HooksWithUniqueNames = QueryHookNames & LazyQueryHookNames & InfiniteQueryHookNames & MutationHookNames