import { IActionCreator, ActionMode, IAction } from './action.js'; import { IActionMapInternal, IActionMapBasic } from './action-map.js'; type ActionHandlerCallback = (this: IActionHandler, actionMap: AM, inject: Inject) => any; interface IActionHandlerConfiguration { inputs: readonly IActionCreator[]; outputs?: readonly IActionCreator[]; run: ActionHandlerCallback; name?: string; inject?: Inject; } interface IActionHandler { getName: () => string; getInputs: () => readonly IActionCreator[]; getInputSet: () => ReadonlySet; getOutputs: () => readonly IActionCreator[] | undefined; getOutputSet: () => ReadonlySet | undefined; getInputsAndOutputs: () => readonly IActionCreator[]; getInputsAndOutputsSet: () => ReadonlySet; inject: (inject: Inject) => void; getInjected: () => Inject; invoke: (actionMap: IActionMapInternal) => any; } declare class ActionHandler implements IActionHandler { protected _inputs: readonly IActionCreator[]; protected _inputSet: ReadonlySet; protected _outputs?: readonly IActionCreator[]; protected _outputSet?: ReadonlySet; protected _inputsAndOutputs: readonly IActionCreator[]; protected _inputsAndOutputsSet: ReadonlySet; protected _name: string; protected _injected: Inject; protected _callback: ActionHandlerCallback; constructor(config: IActionHandlerConfiguration); getName(): string; getInputs(): readonly IActionCreator>[]; getInputSet(): ReadonlySet>>; getOutputs(): readonly IActionCreator>[] | undefined; getOutputSet(): ReadonlySet>> | undefined; getInputsAndOutputs(): readonly IActionCreator>[]; getInputsAndOutputsSet(): ReadonlySet>>; inject(inject: Inject): void; getInjected(): Inject; invoke(actionMap: IActionMapInternal): any; } declare function createHandler(config: IActionHandlerConfiguration): ActionHandler; export { ActionHandler, type ActionHandlerCallback, type IActionHandler, type IActionHandlerConfiguration, createHandler };