import type { ActionObject, ExtendedActionObject } from '../globals';
interface ActionError {
type?: string;
message?: string;
details?: unknown;
}
/**
* The Action Manager object provides access to methods
* that are used by Actions (ex: as found in Actions-Api or ContainerManager)
* to track promises that are returned by the action.
*/
declare class ActionManager {
private actionMgrActions;
private counterActionMgrId;
/**
* Constructor - Not for use outside of Core! Included for reference only.
*/
constructor();
/**
* Returns a unique (for this session) actionMgrId that should
* be provided in the payload to StateManager.dispatch so the
* ActionManager can use it
* @returns the next actionMgrID
* @private
*/
getNextActionMgrId(): string;
/**
* Registers the given Promise with the given actionMgrID
* @param theActionMgrID the actionMgrID that is associated with the given Promise
* @param thePromise the Promise associated with the given actionMgrID
* @param theResolve the function called when the promise resolves
* @param theReject the function called when the promise rejects
* @param theActionType the type of action associated with this Promise
* @param actionConfig the action config which has the context information
* @param enableLoadingIndicator a boolean flag which tells if the actions need a loading indicator or not
* @returns returns the registered ID if register succeeded or null if it failed (ex: ID already been used)
* @private
*/
register(theActionMgrID: string, thePromise: Promise, theResolve: (value: T) => void, theReject: (reason?: ActionError) => void, theActionType?: string, actionConfig?: ActionObject, enableLoadingIndicator?: boolean): string | null;
/**
* Create a promise for an action and return an object containing the promise
* and the ActionManager actionMgrID associated with that promise
* @param theActionType the action type for which we're creating a promise
* @param theActionMgrID the Action Manager ID associated with the promise. If provided,
* the given ID is used when then promise is registered with the ActionManager. If not provided, we get the
* ID and use the ID we get.
* @returns object with actionMgrID and promise keys: { actionMgrID: , promise: }
* @function
*/
actionManagerPromise: (theActionType: string, theActionMgrID?: string) => {
actionMgrID: string;
promise: Promise;
};
/**
* resolve the promise associated with the given ID
* @param theActionMgrID the ID of the Action Manager entry that should be resolved
* @param data metadata info about the view
* @param allowDispatch flag that dictates if Reset_Loading redux action should be dispatched or not
* @returns returns the resolved ID if resolve was called or null if problem was encountered
* @private
*/
resolveActionByID(theActionMgrID: string | number, data?: T, allowDispatch?: boolean): string | number | null;
/**
* reject the promise associated with the given ID
* @param theActionMgrID the ID of the Action Manager entry that should be resolved
* @returns returns the rejected ID if reject was called or null if problem was encountered
* @param allowDispatch flag that dictates if Reset_Loading redux action should be dispatched or not
* @param error that gives the type of information about the error
* @private
*/
rejectActionByID(theActionMgrID: string | number, allowDispatch?: boolean, error?: ActionError): string | number | null;
/**
* This method is to add remote system id in request headers
* @param remoteHeader - Remote system id to add in request headers.
* @param actionConfig - Action config.
* @function
* @private
*/
setRemoteCaseHeaderByContext(actionConfig: ActionObject, remoteHeader: string | undefined): void;
/**
* This method is to add necessary parameters for traditional remote case
* @param actionConfig
* @param className
* @param remoteClassName
* @returns string
* @private
*/
setTraditionalRemoteCaseParams(actionConfig: ExtendedActionObject, remoteCaseActionDetails: ExtendedActionObject): string;
}
declare const ActionManagerInstance: ActionManager;
export { ActionManagerInstance };