import type { BaseQueryFn, EndpointDefinitions, Module, MutationDefinition, QueryArgFrom, QueryDefinition } from '@reduxjs/toolkit/query'; import type { MutationHooks, QueryHooks } from './buildHooks'; import type { HooksWithUniqueNames } from './namedHooks'; import { createSelector as _createSelector } from 'reselect'; import type { QueryKeys } from '../core/apiState'; import type { PrefetchOptions } from '../core/module'; export declare const reactHooksModuleName: unique symbol; export type ReactHooksModule = typeof reactHooksModuleName; declare module '@reduxjs/toolkit/query' { interface ApiModules { [reactHooksModuleName]: { /** * Endpoints based on the input endpoints provided to `createApi`, containing `select`, `hooks` and `action matchers`. */ endpoints: { [K in keyof Definitions]: Definitions[K] extends QueryDefinition ? QueryHooks : Definitions[K] extends MutationDefinition ? MutationHooks : never; }; /** * A hook that accepts a string endpoint name, and provides a callback that when called, pre-fetches the data for that endpoint. */ usePrefetch>(endpointName: EndpointName, options?: PrefetchOptions): (arg: QueryArgFrom, options?: PrefetchOptions) => void; } & HooksWithUniqueNames; } } type RR = typeof import('react-redux'); export interface ReactHooksModuleOptions { /** * The hooks from React Redux to be used */ hooks?: { /** * The version of the `useDispatch` hook to be used */ useDispatch: RR['useDispatch']; /** * The version of the `useSelector` hook to be used */ useSelector: RR['useSelector']; /** * The version of the `useStore` hook to be used */ useStore: RR['useStore']; }; /** * The version of the `batchedUpdates` function to be used */ batch?: RR['batch']; /** * Enables performing asynchronous tasks immediately within a render. * * @example * * ```ts * import { * buildCreateApi, * coreModule, * reactHooksModule * } from '@reduxjs/toolkit/query/react' * * const createApi = buildCreateApi( * coreModule(), * reactHooksModule({ unstable__sideEffectsInRender: true }) * ) * ``` */ unstable__sideEffectsInRender?: boolean; /** * A selector creator (usually from `reselect`, or matching the same signature) */ createSelector?: typeof _createSelector; } /** * Creates a module that generates react hooks from endpoints, for use with `buildCreateApi`. * * @example * ```ts * const MyContext = React.createContext(null); * const customCreateApi = buildCreateApi( * coreModule(), * reactHooksModule({ * hooks: { * useDispatch: createDispatchHook(MyContext), * useSelector: createSelectorHook(MyContext), * useStore: createStoreHook(MyContext) * } * }) * ); * ``` * * @returns A module for use with `buildCreateApi` */ export declare const reactHooksModule: ({ batch, hooks, createSelector, unstable__sideEffectsInRender, ...rest }?: ReactHooksModuleOptions) => Module; export {};