/**
 * This file is part of the NocoBase (R) project.
 * Copyright (c) 2020-2024 NocoBase Co., Ltd.
 * Authors: NocoBase Team.
 *
 * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
 * For more information, please refer to: https://www.nocobase.com/agreement.
 */
import _ from 'lodash';
import type { FlowSurfacePlanSelector, FlowSurfacePlanRequestValues, FlowSurfacePlanStep, FlowSurfaceReadLocator, FlowSurfaceResolvedTarget } from '../types';
import type { FlowSurfaceCompiledPlanStep, FlowSurfacePlanSurfaceContext } from './types';
type NormalizePlanSelectorDeps = {
    normalizeGetTarget: (value: any) => FlowSurfaceReadLocator;
};
type NormalizePlanSelectorOptions = {
    allowKey?: boolean;
};
type NormalizePlanStepsDeps = NormalizePlanSelectorDeps & {
    validatePayloadShape: (actionName: string, value: any, path: string) => void;
};
type CompilePlanStepDeps = NormalizePlanSelectorDeps & {
    resolveLocator: (target: FlowSurfaceReadLocator, options?: {
        transaction?: any;
    }) => Promise<FlowSurfaceResolvedTarget>;
    loadResolvedSurfaceTree?: (resolved: FlowSurfaceResolvedTarget, transaction?: any) => Promise<any>;
    buildPlanKeyKind: (node: any, resolvedKind?: string) => string;
};
export declare function normalizePlanSelector(actionName: string, selector: any, deps: NormalizePlanSelectorDeps, fieldName?: string, options?: NormalizePlanSelectorOptions): FlowSurfacePlanSelector;
export declare function normalizePlanSteps(actionName: string, values: FlowSurfacePlanRequestValues, deps: NormalizePlanStepsDeps): {
    id: string;
    action: "setFieldValueRules" | "setBlockLinkageRules" | "setFieldLinkageRules" | "setActionLinkageRules" | "configure" | "createPage" | "addTab" | "addPopupTab" | "addBlock" | "addField" | "addAction" | "addRecordAction" | "compose" | "createMenu" | "convertTemplateToCopy" | "destroyPage" | "updateTab" | "moveTab" | "removeTab" | "updatePopupTab" | "movePopupTab" | "removePopupTab" | "updateSettings" | "addEventFlow" | "setEventFlow" | "removeEventFlow" | "setEventFlows" | "setLayout" | "moveNode" | "removeNode";
    selectors: _.Dictionary<any>;
    values: Record<string, any>;
}[];
export declare function compilePlanStep(actionName: string, step: FlowSurfacePlanStep, index: number, context: FlowSurfacePlanSurfaceContext, deps: CompilePlanStepDeps, priorStepIds: Set<string>, priorCreatedKeys: Set<string>, options?: {
    transaction?: any;
}): Promise<FlowSurfaceCompiledPlanStep>;
export {};
