///
import { ListenerAction } from '../actions/Action';
import { RendererProps } from '../factory';
import { IScopedContext } from '../Scoped';
import { TreeItem } from './helper';
import type { PlainObject } from '../types';
export interface debounceConfig {
maxWait?: number;
wait?: number;
leading?: boolean;
trailing?: boolean;
}
export interface trackConfig {
id: string;
name: string;
}
export interface EventListeners {
[propName: string]: {
debounce?: debounceConfig;
track?: trackConfig;
weight?: number;
actions: ListenerAction[];
};
}
export interface OnEventProps {
onEvent?: {
[propName: string]: {
weight?: number;
actions: ListenerAction[];
debounce?: debounceConfig;
track?: trackConfig;
};
};
}
export interface RendererEventListener {
renderer: React.Component;
type: string;
weight: number;
debounce: debounceConfig | null;
track: trackConfig | null;
actions: ListenerAction[];
executing?: boolean;
debounceInstance?: any;
}
export type RendererEvent = {
context: T;
type: string;
prevented?: boolean;
stoped?: boolean;
data?: P;
preventDefault: () => void;
stopPropagation: () => void;
setData: (data: P) => void;
pendingPromise: Promise[];
allDone: () => Promise;
};
export interface RendererEventContext {
data?: any;
[propName: string]: any;
}
export declare function createRendererEvent(type: string, context: T): RendererEvent;
export declare const bindEvent: (renderer: any) => ((eventName?: string) => void) | undefined;
export declare const bindGlobalEventForRenderer: (renderer: any) => (() => void) | undefined;
export declare const bindGlobalEvent: (eventName: string, callback: (data: PlainObject) => void) => (() => void) | undefined;
export declare function dispatchEvent(e: string | React.MouseEvent, renderer: React.Component, scoped: IScopedContext, data: any, broadcast?: RendererEvent): Promise | void>;
export declare function dispatchGlobalEventForRenderer(eventName: string, renderer: React.Component, scoped: IScopedContext, data: any, broadcast: RendererEvent): Promise;
export declare function dispatchGlobalEvent(eventName: string, data: any): Promise;
export declare const getRendererEventListeners: () => RendererEventListener[];
/**
* 兼容历史配置,追加对应name的值
* @param props
* @param data
* @param valueKey
*/
export declare const resolveEventData: (props: any, data: any, valueKey?: string) => object;
/**
* 基于 index、condition、oldCondition 获取匹配的事件目标
* @param tree
* @param ctx
* @param index
* @param condition
* @param oldCondition
* @returns
*/
export declare function getMatchedEventTargets(tree: Array, ctx: any, index?: string | number, condition?: string, oldCondition?: string): Promise;
declare const _default: {};
export default _default;