import type { Middleware, AnyAction } from 'redux'; import type { ThunkMiddleware } from 'redux-thunk'; import type { ImmutableStateInvariantMiddlewareOptions } from './immutableStateInvariantMiddleware'; import type { SerializableStateInvariantMiddlewareOptions } from './serializableStateInvariantMiddleware'; import { MiddlewareArray } from './utils'; interface ThunkOptions { extraArgument: E; } interface GetDefaultMiddlewareOptions { thunk?: boolean | ThunkOptions; immutableCheck?: boolean | ImmutableStateInvariantMiddlewareOptions; serializableCheck?: boolean | SerializableStateInvariantMiddlewareOptions; } export declare type ThunkMiddlewareFor = O extends { thunk: false; } ? never : O extends { thunk: { extraArgument: infer E; }; } ? ThunkMiddleware : ThunkMiddleware | ThunkMiddleware; export declare type CurriedGetDefaultMiddleware = = { thunk: true; immutableCheck: true; serializableCheck: true; }>(options?: O) => MiddlewareArray | ThunkMiddlewareFor>; export declare function curryGetDefaultMiddleware(): CurriedGetDefaultMiddleware; /** * Returns any array containing the default middleware installed by * `configureStore()`. Useful if you want to configure your store with a custom * `middleware` array but still keep the default set. * * @return The default middleware used by `configureStore()`. * * @public * * @deprecated Prefer to use the callback notation for the `middleware` option in `configureStore` * to access a pre-typed `getDefaultMiddleware` instead. */ export declare function getDefaultMiddleware = { thunk: true; immutableCheck: true; serializableCheck: true; }>(options?: O): MiddlewareArray | ThunkMiddlewareFor>; export {};