import { IAnyObject, IRenderConfigDependOn, TFormConfig, IRenderConfigDependOnEffect } from '@d-render/shared';
import { IKey } from './util';
type TEffectFn = ((...args: unknown[]) => unknown | Promise<unknown>) | boolean;
interface IPrivateParam {
    keys: Array<string>;
    oldValues: Array<unknown>;
}
type TEffect = [
    TEffectFn,
    IPrivateParam
];
export type IEffects = Array<TEffect>;
export type IExecutor = (values: IAnyObject, outValues: IAnyObject | undefined, effects: IEffects, dependOldValues?: IAnyObject) => void | Promise<void>;
interface IGlobalParam {
    values: IAnyObject;
    outValues?: IAnyObject;
    keys: Array<IKey>;
    oldValues: Array<unknown>;
    executeChangeValueEffect: boolean;
    dependOldValues?: IAnyObject;
}
interface IEffectExecutorConfig {
    executor: IExecutor;
    condition?: (effects: IEffects, executeChangeValueEffect: boolean) => boolean;
    transformStrEffect?: (effectStr: string) => Function;
}
export interface IEffectExecutorConfigs {
    [propname: string]: IEffectExecutorConfig;
}
interface IEffectConfig {
    [propname: string]: IEffects;
}
interface IEffectParam {
    keys?: Array<string>;
    effect?: IRenderConfigDependOn['effect'];
    oldValues?: Array<unknown>;
}
type IEffectParams = Array<IEffectParam>;
export declare class EffectExecutor {
    config: IEffectExecutorConfigs;
    types: Array<string>;
    executeChangeValueEffect?: boolean;
    values?: IAnyObject;
    outValues?: IAnyObject;
    dependOldValues?: IAnyObject;
    effectsConfig?: IEffectConfig;
    constructor(config?: IEffectExecutorConfigs);
    setExecutor(type: string, executor: IExecutor): void;
    compatibleEffect(effectConfig: IRenderConfigDependOnEffect, type: string, param: IPrivateParam | IGlobalParam): (TEffectFn | IPrivateParam | IGlobalParam)[][];
    getGlobalEffect(fieldConfig: TFormConfig, type: string): any;
    getExecuteEffect(params: IEffectParams, fieldConfig: TFormConfig, globalParam: IGlobalParam): IEffectConfig;
    analysisEffects(effectParams: IEffectParams, config: TFormConfig, globalParam: IGlobalParam): void;
    execute(type: string, logKey: string, ...args: [effects: IEffects, executeChangeValueEffect: boolean]): void;
    executeAll(logKey: string): void;
}
export {};
