import type { ThunkDispatch } from '@reduxjs/toolkit' import type { MaybePromise, UnwrapPromise } from './tsHelpers' export interface BaseQueryApi { signal: AbortSignal abort: (reason?: string) => void dispatch: ThunkDispatch getState: () => unknown extra: unknown endpoint: string type: 'query' | 'mutation' /** * Only available for queries: indicates if a query has been forced, * i.e. it would have been fetched even if there would already be a cache entry * (this does not mean that there is already a cache entry though!) * * This can be used to for example add a `Cache-Control: no-cache` header for * invalidated queries. */ forced?: boolean } export type QueryReturnValue = | { error: E data?: undefined meta?: M } | { error?: undefined data: T meta?: M } export type BaseQueryFn< Args = any, Result = unknown, Error = unknown, DefinitionExtraOptions = {}, Meta = {}, > = ( args: Args, api: BaseQueryApi, extraOptions: DefinitionExtraOptions, ) => MaybePromise> export type BaseQueryEnhancer< AdditionalArgs = unknown, AdditionalDefinitionExtraOptions = unknown, Config = void, > = ( baseQuery: BaseQuery, config: Config, ) => BaseQueryFn< BaseQueryArg & AdditionalArgs, BaseQueryResult, BaseQueryError, BaseQueryExtraOptions & AdditionalDefinitionExtraOptions, NonNullable> > export type BaseQueryResult = UnwrapPromise> extends infer Unwrapped ? Unwrapped extends { data: any } ? Unwrapped['data'] : never : never export type BaseQueryMeta = UnwrapPromise< ReturnType >['meta'] export type BaseQueryError = Exclude< UnwrapPromise>, { error?: undefined } >['error'] export type BaseQueryArg any> = T extends (arg: infer A, ...args: any[]) => any ? A : any export type BaseQueryExtraOptions = Parameters[2]