Index: node_modules/@reduxjs/toolkit/src/dynamicMiddleware/index.ts
===================================================================
--- node_modules/@reduxjs/toolkit/src/dynamicMiddleware/index.ts	(revision a762898ecd37a452c782821d4c2c4955c6ed2521)
+++ node_modules/@reduxjs/toolkit/src/dynamicMiddleware/index.ts	(revision a762898ecd37a452c782821d4c2c4955c6ed2521)
@@ -0,0 +1,93 @@
+import type { Dispatch, Middleware, UnknownAction } from 'redux'
+import { compose } from '../reduxImports'
+import { createAction } from '../createAction'
+import { isAllOf } from '../matchers'
+import { nanoid } from '../nanoid'
+import { getOrInsertComputed } from '../utils'
+import type {
+  AddMiddleware,
+  DynamicMiddleware,
+  DynamicMiddlewareInstance,
+  MiddlewareEntry,
+  WithMiddleware,
+} from './types'
+export type {
+  DynamicMiddlewareInstance,
+  GetDispatchType as GetDispatch,
+  MiddlewareApiConfig,
+} from './types'
+
+const createMiddlewareEntry = <
+  State = any,
+  DispatchType extends Dispatch<UnknownAction> = Dispatch<UnknownAction>,
+>(
+  middleware: Middleware<any, State, DispatchType>,
+): MiddlewareEntry<State, DispatchType> => ({
+  middleware,
+  applied: new Map(),
+})
+
+const matchInstance =
+  (instanceId: string) =>
+  (action: any): action is { meta: { instanceId: string } } =>
+    action?.meta?.instanceId === instanceId
+
+export const createDynamicMiddleware = <
+  State = any,
+  DispatchType extends Dispatch<UnknownAction> = Dispatch<UnknownAction>,
+>(): DynamicMiddlewareInstance<State, DispatchType> => {
+  const instanceId = nanoid()
+  const middlewareMap = new Map<
+    Middleware<any, State, DispatchType>,
+    MiddlewareEntry<State, DispatchType>
+  >()
+
+  const withMiddleware = Object.assign(
+    createAction(
+      'dynamicMiddleware/add',
+      (...middlewares: Middleware<any, State, DispatchType>[]) => ({
+        payload: middlewares,
+        meta: {
+          instanceId,
+        },
+      }),
+    ),
+    { withTypes: () => withMiddleware },
+  ) as WithMiddleware<State, DispatchType>
+
+  const addMiddleware = Object.assign(
+    function addMiddleware(
+      ...middlewares: Middleware<any, State, DispatchType>[]
+    ) {
+      middlewares.forEach((middleware) => {
+        getOrInsertComputed(middlewareMap, middleware, createMiddlewareEntry)
+      })
+    },
+    { withTypes: () => addMiddleware },
+  ) as AddMiddleware<State, DispatchType>
+
+  const getFinalMiddleware: Middleware<{}, State, DispatchType> = (api) => {
+    const appliedMiddleware = Array.from(middlewareMap.values()).map((entry) =>
+      getOrInsertComputed(entry.applied, api, entry.middleware),
+    )
+    return compose(...appliedMiddleware)
+  }
+
+  const isWithMiddleware = isAllOf(withMiddleware, matchInstance(instanceId))
+
+  const middleware: DynamicMiddleware<State, DispatchType> =
+    (api) => (next) => (action) => {
+      if (isWithMiddleware(action)) {
+        addMiddleware(...action.payload)
+        return api.dispatch
+      }
+      return getFinalMiddleware(api)(next)(action)
+    }
+
+  return {
+    middleware,
+    addMiddleware,
+    withMiddleware,
+    instanceId,
+  }
+}
Index: node_modules/@reduxjs/toolkit/src/dynamicMiddleware/react/index.ts
===================================================================
--- node_modules/@reduxjs/toolkit/src/dynamicMiddleware/react/index.ts	(revision a762898ecd37a452c782821d4c2c4955c6ed2521)
+++ node_modules/@reduxjs/toolkit/src/dynamicMiddleware/react/index.ts	(revision a762898ecd37a452c782821d4c2c4955c6ed2521)
@@ -0,0 +1,101 @@
+import type {
+  DynamicMiddlewareInstance,
+  GetDispatch,
+  GetState,
+  MiddlewareApiConfig,
+  TSHelpersExtractDispatchExtensions,
+} from '@reduxjs/toolkit'
+import { createDynamicMiddleware as cDM } from '@reduxjs/toolkit'
+import type { Context } from 'react'
+import type { ReactReduxContextValue } from 'react-redux'
+import {
+  createDispatchHook,
+  ReactReduxContext,
+  useDispatch as useDefaultDispatch,
+} from 'react-redux'
+import type { Action, Dispatch, Middleware, UnknownAction } from 'redux'
+
+export type UseDispatchWithMiddlewareHook<
+  Middlewares extends Middleware<any, State, DispatchType>[] = [],
+  State = any,
+  DispatchType extends Dispatch<UnknownAction> = Dispatch<UnknownAction>,
+> = () => TSHelpersExtractDispatchExtensions<Middlewares> & DispatchType
+
+export type CreateDispatchWithMiddlewareHook<
+  State = any,
+  DispatchType extends Dispatch<UnknownAction> = Dispatch<UnknownAction>,
+> = {
+  <
+    Middlewares extends [
+      Middleware<any, State, DispatchType>,
+      ...Middleware<any, State, DispatchType>[],
+    ],
+  >(
+    ...middlewares: Middlewares
+  ): UseDispatchWithMiddlewareHook<Middlewares, State, DispatchType>
+  withTypes<
+    MiddlewareConfig extends MiddlewareApiConfig,
+  >(): CreateDispatchWithMiddlewareHook<
+    GetState<MiddlewareConfig>,
+    GetDispatch<MiddlewareConfig>
+  >
+}
+
+type ActionFromDispatch<DispatchType extends Dispatch<Action>> =
+  DispatchType extends Dispatch<infer Action> ? Action : never
+
+type ReactDynamicMiddlewareInstance<
+  State = any,
+  DispatchType extends Dispatch<UnknownAction> = Dispatch<UnknownAction>,
+> = DynamicMiddlewareInstance<State, DispatchType> & {
+  createDispatchWithMiddlewareHookFactory: (
+    context?: Context<ReactReduxContextValue<
+      State,
+      ActionFromDispatch<DispatchType>
+    > | null>,
+  ) => CreateDispatchWithMiddlewareHook<State, DispatchType>
+  createDispatchWithMiddlewareHook: CreateDispatchWithMiddlewareHook<
+    State,
+    DispatchType
+  >
+}
+
+export const createDynamicMiddleware = <
+  State = any,
+  DispatchType extends Dispatch<UnknownAction> = Dispatch<UnknownAction>,
+>(): ReactDynamicMiddlewareInstance<State, DispatchType> => {
+  const instance = cDM<State, DispatchType>()
+  const createDispatchWithMiddlewareHookFactory = (
+    // @ts-ignore
+    context: Context<ReactReduxContextValue<
+      State,
+      ActionFromDispatch<DispatchType>
+    > | null> = ReactReduxContext,
+  ) => {
+    const useDispatch =
+      context === ReactReduxContext
+        ? useDefaultDispatch
+        : createDispatchHook(context)
+    function createDispatchWithMiddlewareHook<
+      Middlewares extends Middleware<any, State, DispatchType>[],
+    >(...middlewares: Middlewares) {
+      instance.addMiddleware(...middlewares)
+      return useDispatch
+    }
+    createDispatchWithMiddlewareHook.withTypes = () =>
+      createDispatchWithMiddlewareHook
+    return createDispatchWithMiddlewareHook as CreateDispatchWithMiddlewareHook<
+      State,
+      DispatchType
+    >
+  }
+
+  const createDispatchWithMiddlewareHook =
+    createDispatchWithMiddlewareHookFactory()
+
+  return {
+    ...instance,
+    createDispatchWithMiddlewareHookFactory,
+    createDispatchWithMiddlewareHook,
+  }
+}
Index: node_modules/@reduxjs/toolkit/src/dynamicMiddleware/tests/index.test-d.ts
===================================================================
--- node_modules/@reduxjs/toolkit/src/dynamicMiddleware/tests/index.test-d.ts	(revision a762898ecd37a452c782821d4c2c4955c6ed2521)
+++ node_modules/@reduxjs/toolkit/src/dynamicMiddleware/tests/index.test-d.ts	(revision a762898ecd37a452c782821d4c2c4955c6ed2521)
@@ -0,0 +1,95 @@
+import type { Action, Middleware, UnknownAction } from 'redux'
+import type { ThunkDispatch } from 'redux-thunk'
+import { configureStore } from '../../configureStore'
+import { createDynamicMiddleware } from '../index'
+
+const untypedInstance = createDynamicMiddleware()
+
+interface AppDispatch extends ThunkDispatch<number, undefined, UnknownAction> {
+  (n: 1): 1
+}
+
+const typedInstance = createDynamicMiddleware<number, AppDispatch>()
+
+declare const staticMiddleware: Middleware<(n: 1) => 1>
+
+const store = configureStore({
+  reducer: () => 0,
+  middleware: (gDM) =>
+    gDM().prepend(typedInstance.middleware).concat(staticMiddleware),
+})
+
+declare const compatibleMiddleware: Middleware<{}, number, AppDispatch>
+declare const incompatibleMiddleware: Middleware<{}, string, AppDispatch>
+
+declare const addedMiddleware: Middleware<(n: 2) => 2>
+
+describe('type tests', () => {
+  test('instance typed at creation ensures middleware compatibility with store', () => {
+    const store = configureStore({
+      reducer: () => '',
+      // @ts-expect-error
+      middleware: (gDM) => gDM().prepend(typedInstance.middleware),
+    })
+  })
+
+  test('instance typed at creation enforces correct middleware type', () => {
+    typedInstance.addMiddleware(
+      compatibleMiddleware,
+      // @ts-expect-error
+      incompatibleMiddleware,
+    )
+
+    const dispatch = store.dispatch(
+      typedInstance.withMiddleware(
+        compatibleMiddleware,
+        // @ts-expect-error
+        incompatibleMiddleware,
+      ),
+    )
+  })
+
+  test('withTypes() enforces correct middleware type', () => {
+    const addMiddleware = untypedInstance.addMiddleware.withTypes<{
+      state: number
+      dispatch: AppDispatch
+    }>()
+
+    addMiddleware(
+      compatibleMiddleware,
+      // @ts-expect-error
+      incompatibleMiddleware,
+    )
+
+    const withMiddleware = untypedInstance.withMiddleware.withTypes<{
+      state: number
+      dispatch: AppDispatch
+    }>()
+
+    const dispatch = store.dispatch(
+      withMiddleware(
+        compatibleMiddleware,
+        // @ts-expect-error
+        incompatibleMiddleware,
+      ),
+    )
+  })
+
+  test('withMiddleware returns typed dispatch, with any applicable extensions', () => {
+    const dispatch = store.dispatch(
+      typedInstance.withMiddleware(addedMiddleware),
+    )
+
+    // standard
+    expectTypeOf(dispatch({ type: 'foo' })).toEqualTypeOf<Action<string>>()
+
+    // thunk
+    expectTypeOf(dispatch(() => 'foo')).toBeString()
+
+    // static
+    expectTypeOf(dispatch(1)).toEqualTypeOf<1>()
+
+    // added
+    expectTypeOf(dispatch(2)).toEqualTypeOf<2>()
+  })
+})
Index: node_modules/@reduxjs/toolkit/src/dynamicMiddleware/tests/index.test.ts
===================================================================
--- node_modules/@reduxjs/toolkit/src/dynamicMiddleware/tests/index.test.ts	(revision a762898ecd37a452c782821d4c2c4955c6ed2521)
+++ node_modules/@reduxjs/toolkit/src/dynamicMiddleware/tests/index.test.ts	(revision a762898ecd37a452c782821d4c2c4955c6ed2521)
@@ -0,0 +1,74 @@
+import type { Middleware } from 'redux'
+import { createDynamicMiddleware } from '../index'
+import { configureStore } from '../../configureStore'
+import type { BaseActionCreator, PayloadAction } from '../../createAction'
+import { createAction } from '../../createAction'
+import { isAllOf } from '../../matchers'
+
+const probeType = 'probeableMW/probe'
+
+export interface ProbeMiddleware
+  extends BaseActionCreator<number, typeof probeType> {
+  <Id extends number>(id: Id): PayloadAction<Id, typeof probeType>
+}
+
+export const probeMiddleware = createAction(probeType) as ProbeMiddleware
+
+const matchId =
+  <Id extends number>(id: Id) =>
+  (action: any): action is PayloadAction<Id> =>
+    action.payload === id
+
+export const makeProbeableMiddleware = <Id extends number>(
+  id: Id,
+): Middleware<{
+  (action: PayloadAction<Id, typeof probeType>): Id
+}> => {
+  const isMiddlewareAction = isAllOf(probeMiddleware, matchId(id))
+  return (api) => (next) => (action) => {
+    if (isMiddlewareAction(action)) {
+      return id
+    }
+    return next(action)
+  }
+}
+
+const staticMiddleware = makeProbeableMiddleware(1)
+
+describe('createDynamicMiddleware', () => {
+  it('allows injecting middleware after store instantiation', () => {
+    const dynamicInstance = createDynamicMiddleware()
+    const store = configureStore({
+      reducer: () => 0,
+      middleware: (gDM) =>
+        gDM().prepend(dynamicInstance.middleware).concat(staticMiddleware),
+    })
+    // normal, pre-inject
+    expect(store.dispatch(probeMiddleware(2))).toEqual(probeMiddleware(2))
+    // static
+    expect(store.dispatch(probeMiddleware(1))).toBe(1)
+
+    // inject
+    dynamicInstance.addMiddleware(makeProbeableMiddleware(2))
+
+    // injected
+    expect(store.dispatch(probeMiddleware(2))).toBe(2)
+  })
+  it('returns dispatch when withMiddleware is dispatched', () => {
+    const dynamicInstance = createDynamicMiddleware()
+    const store = configureStore({
+      reducer: () => 0,
+      middleware: (gDM) => gDM().prepend(dynamicInstance.middleware),
+    })
+
+    // normal, pre-inject
+    expect(store.dispatch(probeMiddleware(2))).toEqual(probeMiddleware(2))
+
+    const dispatch = store.dispatch(
+      dynamicInstance.withMiddleware(makeProbeableMiddleware(2)),
+    )
+    expect(dispatch).toEqual(expect.any(Function))
+
+    expect(dispatch(probeMiddleware(2))).toBe(2)
+  })
+})
Index: node_modules/@reduxjs/toolkit/src/dynamicMiddleware/tests/react.test-d.ts
===================================================================
--- node_modules/@reduxjs/toolkit/src/dynamicMiddleware/tests/react.test-d.ts	(revision a762898ecd37a452c782821d4c2c4955c6ed2521)
+++ node_modules/@reduxjs/toolkit/src/dynamicMiddleware/tests/react.test-d.ts	(revision a762898ecd37a452c782821d4c2c4955c6ed2521)
@@ -0,0 +1,81 @@
+import type { Context } from 'react'
+import type { ReactReduxContextValue } from 'react-redux'
+import type { Action, Middleware, UnknownAction } from 'redux'
+import type { ThunkDispatch } from 'redux-thunk'
+import { createDynamicMiddleware } from '../react'
+
+interface AppDispatch extends ThunkDispatch<number, undefined, UnknownAction> {
+  (n: 1): 1
+}
+
+const untypedInstance = createDynamicMiddleware()
+
+const typedInstance = createDynamicMiddleware<number, AppDispatch>()
+
+declare const compatibleMiddleware: Middleware<{}, number, AppDispatch>
+declare const incompatibleMiddleware: Middleware<{}, string, AppDispatch>
+
+declare const customContext: Context<ReactReduxContextValue | null>
+
+declare const addedMiddleware: Middleware<(n: 2) => 2>
+
+describe('type tests', () => {
+  test('instance typed at creation enforces correct middleware type', () => {
+    const useDispatch = typedInstance.createDispatchWithMiddlewareHook(
+      compatibleMiddleware,
+      // @ts-expect-error
+      incompatibleMiddleware,
+    )
+
+    const createDispatchWithMiddlewareHook =
+      typedInstance.createDispatchWithMiddlewareHookFactory(customContext)
+    const useDispatchWithContext = createDispatchWithMiddlewareHook(
+      compatibleMiddleware,
+      // @ts-expect-error
+      incompatibleMiddleware,
+    )
+  })
+
+  test('withTypes() enforces correct middleware type', () => {
+    const createDispatchWithMiddlewareHook =
+      untypedInstance.createDispatchWithMiddlewareHook.withTypes<{
+        state: number
+        dispatch: AppDispatch
+      }>()
+    const useDispatch = createDispatchWithMiddlewareHook(
+      compatibleMiddleware,
+      // @ts-expect-error
+      incompatibleMiddleware,
+    )
+
+    const createCustomDispatchWithMiddlewareHook = untypedInstance
+      .createDispatchWithMiddlewareHookFactory(customContext)
+      .withTypes<{
+        state: number
+        dispatch: AppDispatch
+      }>()
+    const useCustomDispatch = createCustomDispatchWithMiddlewareHook(
+      compatibleMiddleware,
+      // @ts-expect-error
+      incompatibleMiddleware,
+    )
+  })
+
+  test('useDispatchWithMW returns typed dispatch, with any applicable extensions', () => {
+    const useDispatchWithMW =
+      typedInstance.createDispatchWithMiddlewareHook(addedMiddleware)
+    const dispatch = useDispatchWithMW()
+
+    // standard
+    expectTypeOf(dispatch({ type: 'foo' })).toEqualTypeOf<Action<string>>()
+
+    // thunk
+    expectTypeOf(dispatch(() => 'foo')).toBeString()
+
+    // static
+    expectTypeOf(dispatch(1)).toEqualTypeOf<1>()
+
+    // added
+    expectTypeOf(dispatch(2)).toEqualTypeOf<2>()
+  })
+})
Index: node_modules/@reduxjs/toolkit/src/dynamicMiddleware/tests/react.test.tsx
===================================================================
--- node_modules/@reduxjs/toolkit/src/dynamicMiddleware/tests/react.test.tsx	(revision a762898ecd37a452c782821d4c2c4955c6ed2521)
+++ node_modules/@reduxjs/toolkit/src/dynamicMiddleware/tests/react.test.tsx	(revision a762898ecd37a452c782821d4c2c4955c6ed2521)
@@ -0,0 +1,101 @@
+import * as React from 'react'
+import { createDynamicMiddleware } from '../react'
+import { configureStore } from '../../configureStore'
+import { makeProbeableMiddleware, probeMiddleware } from './index.test'
+import { render } from '@testing-library/react'
+import type { Dispatch } from 'redux'
+import type { ReactReduxContextValue } from 'react-redux'
+import { Provider } from 'react-redux'
+
+const staticMiddleware = makeProbeableMiddleware(1)
+
+describe('createReactDynamicMiddleware', () => {
+  describe('createDispatchWithMiddlewareHook', () => {
+    it('injects middleware upon creation', () => {
+      const dynamicInstance = createDynamicMiddleware()
+      const store = configureStore({
+        reducer: () => 0,
+        middleware: (gDM) =>
+          gDM().prepend(dynamicInstance.middleware).concat(staticMiddleware),
+      })
+      // normal, pre-inject
+      expect(store.dispatch(probeMiddleware(2))).toEqual(probeMiddleware(2))
+      // static
+      expect(store.dispatch(probeMiddleware(1))).toBe(1)
+
+      const useDispatch = dynamicInstance.createDispatchWithMiddlewareHook(
+        makeProbeableMiddleware(2),
+      )
+
+      // injected
+      expect(store.dispatch(probeMiddleware(2))).toBe(2)
+    })
+
+    it('returns dispatch', () => {
+      const dynamicInstance = createDynamicMiddleware()
+      const store = configureStore({
+        reducer: () => 0,
+        middleware: (gDM) =>
+          gDM().prepend(dynamicInstance.middleware).concat(staticMiddleware),
+      })
+
+      const useDispatch = dynamicInstance.createDispatchWithMiddlewareHook(
+        makeProbeableMiddleware(2),
+      )
+
+      let dispatch: Dispatch | undefined
+      function Component() {
+        dispatch = useDispatch()
+
+        return null
+      }
+      render(<Component />, {
+        wrapper: ({ children }) => (
+          <Provider store={store}>{children}</Provider>
+        ),
+      })
+      expect(dispatch).toBe(store.dispatch)
+    })
+  })
+  describe('createDispatchWithMiddlewareHookFactory', () => {
+    it('returns the correct store dispatch', () => {
+      const dynamicInstance = createDynamicMiddleware()
+      const store = configureStore({
+        reducer: () => 0,
+        middleware: (gDM) =>
+          gDM().prepend(dynamicInstance.middleware).concat(staticMiddleware),
+      })
+      const store2 = configureStore({
+        reducer: () => '',
+        middleware: (gDM) =>
+          gDM().prepend(dynamicInstance.middleware).concat(staticMiddleware),
+      })
+
+      const context = React.createContext<ReactReduxContextValue | null>(null)
+
+      const createDispatchWithMiddlewareHook =
+        dynamicInstance.createDispatchWithMiddlewareHookFactory(context)
+
+      const useDispatch = createDispatchWithMiddlewareHook(
+        makeProbeableMiddleware(2),
+      )
+
+      let dispatch: Dispatch | undefined
+      function Component() {
+        dispatch = useDispatch()
+
+        return null
+      }
+      render(<Component />, {
+        wrapper: ({ children }) => (
+          <Provider store={store}>
+            <Provider context={context} store={store2}>
+              {children}
+            </Provider>
+          </Provider>
+        ),
+      })
+      expect(dispatch).toBe(store2.dispatch)
+    })
+  })
+})
Index: node_modules/@reduxjs/toolkit/src/dynamicMiddleware/types.ts
===================================================================
--- node_modules/@reduxjs/toolkit/src/dynamicMiddleware/types.ts	(revision a762898ecd37a452c782821d4c2c4955c6ed2521)
+++ node_modules/@reduxjs/toolkit/src/dynamicMiddleware/types.ts	(revision a762898ecd37a452c782821d4c2c4955c6ed2521)
@@ -0,0 +1,82 @@
+import type { Dispatch, Middleware, MiddlewareAPI, UnknownAction } from 'redux'
+import type { BaseActionCreator, PayloadAction } from '../createAction'
+import type { GetState } from '../createAsyncThunk'
+import type { ExtractDispatchExtensions, FallbackIfUnknown } from '../tsHelpers'
+
+export type GetMiddlewareApi<MiddlewareApiConfig> = MiddlewareAPI<
+  GetDispatchType<MiddlewareApiConfig>,
+  GetState<MiddlewareApiConfig>
+>
+
+export type MiddlewareApiConfig = {
+  state?: unknown
+  dispatch?: Dispatch
+}
+
+// TODO: consolidate with cAT helpers?
+export type GetDispatchType<MiddlewareApiConfig> = MiddlewareApiConfig extends {
+  dispatch: infer DispatchType
+}
+  ? FallbackIfUnknown<DispatchType, Dispatch>
+  : Dispatch
+
+export type AddMiddleware<
+  State = any,
+  DispatchType extends Dispatch<UnknownAction> = Dispatch<UnknownAction>,
+> = {
+  (...middlewares: Middleware<any, State, DispatchType>[]): void
+  withTypes<MiddlewareConfig extends MiddlewareApiConfig>(): AddMiddleware<
+    GetState<MiddlewareConfig>,
+    GetDispatchType<MiddlewareConfig>
+  >
+}
+
+export type WithMiddleware<
+  State = any,
+  DispatchType extends Dispatch<UnknownAction> = Dispatch<UnknownAction>,
+> = BaseActionCreator<
+  Middleware<any, State, DispatchType>[],
+  'dynamicMiddleware/add',
+  { instanceId: string }
+> & {
+  <Middlewares extends Middleware<any, State, DispatchType>[]>(
+    ...middlewares: Middlewares
+  ): PayloadAction<Middlewares, 'dynamicMiddleware/add', { instanceId: string }>
+  withTypes<MiddlewareConfig extends MiddlewareApiConfig>(): WithMiddleware<
+    GetState<MiddlewareConfig>,
+    GetDispatchType<MiddlewareConfig>
+  >
+}
+
+export interface DynamicDispatch {
+  // return a version of dispatch that knows about middleware
+  <Middlewares extends Middleware<any>[]>(
+    action: PayloadAction<Middlewares, 'dynamicMiddleware/add'>,
+  ): ExtractDispatchExtensions<Middlewares> & this
+}
+
+export type MiddlewareEntry<
+  State = unknown,
+  DispatchType extends Dispatch<UnknownAction> = Dispatch<UnknownAction>,
+> = {
+  middleware: Middleware<any, State, DispatchType>
+  applied: Map<
+    MiddlewareAPI<DispatchType, State>,
+    ReturnType<Middleware<any, State, DispatchType>>
+  >
+}
+
+export type DynamicMiddleware<
+  State = unknown,
+  DispatchType extends Dispatch<UnknownAction> = Dispatch<UnknownAction>,
+> = Middleware<DynamicDispatch, State, DispatchType>
+
+export type DynamicMiddlewareInstance<
+  State = unknown,
+  DispatchType extends Dispatch<UnknownAction> = Dispatch<UnknownAction>,
+> = {
+  middleware: DynamicMiddleware<State, DispatchType>
+  addMiddleware: AddMiddleware<State, DispatchType>
+  withMiddleware: WithMiddleware<State, DispatchType>
+  instanceId: string
+}
