import { IActionHandler } from './action-handler.js'; import { IActionCreator } from './action.js'; import { IActionMapExtended, IActionMapInternal } from './action-map.js'; import { IActionHandlerMiddlewareRunner } from './action-handler-middleware.js'; import { IDispatchMiddlewareRunner } from './dispatch-middleware.js'; interface IFlowfulOptions { dispatchMiddleware?: IDispatchMiddlewareRunner; handlerMiddleware?: IActionHandlerMiddlewareRunner; } interface IFlowful { hasHandler(handler: IActionHandler): boolean; addHandler(handler: IActionHandler): boolean; addHandlers(handlers: IActionHandler[]): boolean; removeHandler(handler: IActionHandler): boolean; removeHandlers(handlers: IActionHandler[]): boolean; dispatchActionMap(actionMap: IActionMapExtended): unknown; } declare class Flowful implements IFlowful { protected _className: string; protected _handlers: Set; protected _handlersByInput: Map>; protected _dispatchMiddleware?: IDispatchMiddlewareRunner; protected _handlerMiddleware?: IActionHandlerMiddlewareRunner; constructor(options?: IFlowfulOptions); hasHandler(handler: IActionHandler): boolean; protected _addHandlerInputs(handler: IActionHandler): void; protected _addHandlerOutputs(handler: IActionHandler): void; protected _addHandlerActions(handler: IActionHandler): void; addHandler(handler: IActionHandler): boolean; addHandlers(handlers: IActionHandler[]): boolean; protected _removeHandlerInputs(handler: IActionHandler): void; protected _removeHandlerOutputs(handler: IActionHandler): void; protected _removeHandlerActions(handler: IActionHandler): void; removeHandler(handler: IActionHandler): boolean; removeHandlers(handlers: IActionHandler[]): boolean; protected _isHandlerInterested(handler: IActionHandler, actionMap: IActionMapInternal): boolean; protected _throwCircular(handler: IActionHandler, stack: Set): void; protected _checkCircular(handler: IActionHandler, visited?: WeakSet, stack?: Set): void; protected _collectDependentHandlers(handler: IActionHandler, handlers: IActionHandler[], visited: WeakSet): void; protected _collectHandlers(actionMap: IActionMapInternal): IActionHandler[]; protected _findDirectHandlers(actionMap: IActionMapInternal): Set; protected _performDispatch(actionMap: IActionMapInternal): void; dispatchActionMap(actionMap: IActionMapExtended): any; } export { Flowful, type IFlowful, type IFlowfulOptions };