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>>; }; type MutationHookNames = { [ K in keyof Definitions as Definitions[K] extends { type: DefinitionType.mutation; } ? `use${Capitalize}Mutation` : never ]: UseMutation>>; }; export type HooksWithUniqueNames = QueryHookNames & LazyQueryHookNames & InfiniteQueryHookNames & MutationHookNames;