import { IActionMapExtended } from './action-map.js'; type ChainedDispatchMiddlewareCallback = (actionMap: AM) => any; interface IDispatchMiddlewareRunner { run(actionMap: AM, execute: ChainedDispatchMiddlewareCallback): any; } interface IDispatchMiddleware extends IDispatchMiddlewareRunner { add(callback: DispatchMiddlewareCallback): boolean; remove(callback: DispatchMiddlewareCallback): boolean; compose(): void; } interface IDispatchMiddlewareOptions { cancellable?: boolean; } type DispatchMiddlewareCallback = (next: ChainedDispatchMiddlewareCallback) => ChainedDispatchMiddlewareCallback; declare class DispatchMiddleware implements IDispatchMiddleware { protected _middlewareCallbacks: Set>; protected _middlewareCallbacksArray: DispatchMiddlewareCallback[]; protected _composed?: ChainedDispatchMiddlewareCallback; protected _last?: ChainedDispatchMiddlewareCallback; protected _className: string; protected _errorPrefix: string; options: Required; constructor(options?: IDispatchMiddlewareOptions); compose(): void; add(callback: DispatchMiddlewareCallback): boolean; remove(callback: DispatchMiddlewareCallback): boolean; run(actionMap: IActionMapExtended, execute: ChainedDispatchMiddlewareCallback): any; } export { type ChainedDispatchMiddlewareCallback, DispatchMiddleware, type DispatchMiddlewareCallback, type IDispatchMiddleware, type IDispatchMiddlewareOptions, type IDispatchMiddlewareRunner };