///
import { RendererProps } from '../factory';
import { ConditionGroupValue } from '../types';
import { RendererEvent } from '../utils/renderer-event';
import { IBreakAction } from './BreakAction';
import { IContinueAction } from './ContinueAction';
import { ILoopAction } from './LoopAction';
import { IParallelAction } from './ParallelAction';
import { ISwitchAction } from './SwitchAction';
export declare enum LoopStatus {
NORMAL = 0,
BREAK = 1,
CONTINUE = 2
}
export interface ListenerAction {
actionType: string;
description?: string;
componentId?: string;
componentName?: string;
ignoreError?: boolean;
args?: Record;
data?: Record | null;
dataMergeMode?: 'merge' | 'override';
outputVar?: string;
preventDefault?: boolean;
stopPropagation?: boolean;
expression?: string | ConditionGroupValue;
execOn?: string;
[propName: string]: any;
}
export interface ILogicAction extends ListenerAction {
children?: ListenerAction[];
}
export type LogicAction = IParallelAction | ISwitchAction | ILoopAction | IContinueAction | IBreakAction;
export interface ListenerContext extends React.Component {
[propName: string]: any;
}
interface MappingIgnoreMap {
[propName: string]: string[];
}
export interface RendererAction {
run: (action: ListenerAction, renderer: ListenerContext, event: RendererEvent, mergeData?: any) => Promise | void>;
}
export declare const registerAction: (type: string, action: RendererAction) => void;
export declare const getActionByType: (type: string) => RendererAction;
export declare const getTargetComponent: (action: ListenerAction, renderer: ListenerContext, event: RendererEvent, key?: string) => ListenerContext;
export declare const runActions: (actions: ListenerAction | ListenerAction[], renderer: ListenerContext, event: any) => Promise;
export declare const runAction: (actionInstrance: RendererAction, actionConfig: ListenerAction, renderer: ListenerContext, event: any) => Promise;
export declare const registerActionMappingIgnoreKey: (actionType: string, ignoreKey: string[], replace?: boolean) => void;
export declare const registerActionMappingIgnoreMap: (maps: MappingIgnoreMap, replace?: boolean) => void;
export declare const registerComponentActionMappingIgnoreKey: (cmptType: string, ignoreKey: string[], replace?: boolean) => void;
export declare const registerComponentActionMappingIgnoreMap: (maps: MappingIgnoreMap, replace?: boolean) => void;
export {};