UNPKG

2.35 kBTypeScriptView Raw
1import type { ThunkDispatch } from '@reduxjs/toolkit';
2import type { MaybePromise, UnwrapPromise } from './tsHelpers';
3export interface BaseQueryApi {
4 signal: AbortSignal;
5 abort: (reason?: string) => void;
6 dispatch: ThunkDispatch<any, any, any>;
7 getState: () => unknown;
8 extra: unknown;
9 endpoint: string;
10 type: 'query' | 'mutation';
11 /**
12 * Only available for queries: indicates if a query has been forced,
13 * i.e. it would have been fetched even if there would already be a cache entry
14 * (this does not mean that there is already a cache entry though!)
15 *
16 * This can be used to for example add a `Cache-Control: no-cache` header for
17 * invalidated queries.
18 */
19 forced?: boolean;
20}
21export declare type QueryReturnValue<T = unknown, E = unknown, M = unknown> = {
22 error: E;
23 data?: undefined;
24 meta?: M;
25} | {
26 error?: undefined;
27 data: T;
28 meta?: M;
29};
30export declare type BaseQueryFn<Args = any, Result = unknown, Error = unknown, DefinitionExtraOptions = {}, Meta = {}> = (args: Args, api: BaseQueryApi, extraOptions: DefinitionExtraOptions) => MaybePromise<QueryReturnValue<Result, Error, Meta>>;
31export declare type BaseQueryEnhancer<AdditionalArgs = unknown, AdditionalDefinitionExtraOptions = unknown, Config = void> = <BaseQuery extends BaseQueryFn>(baseQuery: BaseQuery, config: Config) => BaseQueryFn<BaseQueryArg<BaseQuery> & AdditionalArgs, BaseQueryResult<BaseQuery>, BaseQueryError<BaseQuery>, BaseQueryExtraOptions<BaseQuery> & AdditionalDefinitionExtraOptions, NonNullable<BaseQueryMeta<BaseQuery>>>;
32export declare type BaseQueryResult<BaseQuery extends BaseQueryFn> = UnwrapPromise<ReturnType<BaseQuery>> extends infer Unwrapped ? Unwrapped extends {
33 data: any;
34} ? Unwrapped['data'] : never : never;
35export declare type BaseQueryMeta<BaseQuery extends BaseQueryFn> = UnwrapPromise<ReturnType<BaseQuery>>['meta'];
36export declare type BaseQueryError<BaseQuery extends BaseQueryFn> = Exclude<UnwrapPromise<ReturnType<BaseQuery>>, {
37 error?: undefined;
38}>['error'];
39export declare type BaseQueryArg<T extends (arg: any, ...args: any[]) => any> = T extends (arg: infer A, ...args: any[]) => any ? A : any;
40export declare type BaseQueryExtraOptions<BaseQuery extends BaseQueryFn> = Parameters<BaseQuery>[2];