/**
 * 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.
 */
export type FlowSurfacePlanSelectorMode = 'none' | 'target' | 'rootUidTarget' | 'sourceTarget';
export type FlowSurfacePlanActionSpec = {
    selectorMode: FlowSurfacePlanSelectorMode;
};
export type FlowSurfacePlanMutateActionSpec = FlowSurfacePlanActionSpec & {
    executionKind: 'mutate';
};
export type FlowSurfacePlanOnlyActionSpec = FlowSurfacePlanActionSpec & {
    executionKind: 'planOnly';
};
export type FlowSurfaceResolvedPlanActionSpec = FlowSurfacePlanMutateActionSpec | FlowSurfacePlanOnlyActionSpec;
export declare const FLOW_SURFACE_PLAN_ACTION_SPECS: {
    readonly createMenu: {
        readonly selectorMode: "none";
        readonly executionKind: "mutate";
    };
    readonly createPage: {
        readonly selectorMode: "none";
        readonly executionKind: "mutate";
    };
    readonly compose: {
        readonly selectorMode: "target";
        readonly executionKind: "planOnly";
    };
    readonly configure: {
        readonly selectorMode: "target";
        readonly executionKind: "planOnly";
    };
    readonly setFieldValueRules: {
        readonly selectorMode: "target";
        readonly executionKind: "planOnly";
    };
    readonly setBlockLinkageRules: {
        readonly selectorMode: "target";
        readonly executionKind: "planOnly";
    };
    readonly setFieldLinkageRules: {
        readonly selectorMode: "target";
        readonly executionKind: "planOnly";
    };
    readonly setActionLinkageRules: {
        readonly selectorMode: "target";
        readonly executionKind: "planOnly";
    };
    readonly updateSettings: {
        readonly selectorMode: "target";
        readonly executionKind: "mutate";
    };
    readonly addEventFlow: {
        readonly selectorMode: "target";
        readonly executionKind: "mutate";
    };
    readonly setEventFlow: {
        readonly selectorMode: "target";
        readonly executionKind: "mutate";
    };
    readonly removeEventFlow: {
        readonly selectorMode: "target";
        readonly executionKind: "mutate";
    };
    readonly setEventFlows: {
        readonly selectorMode: "target";
        readonly executionKind: "mutate";
    };
    readonly setLayout: {
        readonly selectorMode: "target";
        readonly executionKind: "mutate";
    };
    readonly addTab: {
        readonly selectorMode: "target";
        readonly executionKind: "mutate";
    };
    readonly updateTab: {
        readonly selectorMode: "target";
        readonly executionKind: "mutate";
    };
    readonly moveTab: {
        readonly selectorMode: "sourceTarget";
        readonly executionKind: "mutate";
    };
    readonly removeTab: {
        readonly selectorMode: "rootUidTarget";
        readonly executionKind: "mutate";
    };
    readonly addPopupTab: {
        readonly selectorMode: "target";
        readonly executionKind: "mutate";
    };
    readonly updatePopupTab: {
        readonly selectorMode: "target";
        readonly executionKind: "mutate";
    };
    readonly movePopupTab: {
        readonly selectorMode: "sourceTarget";
        readonly executionKind: "mutate";
    };
    readonly removePopupTab: {
        readonly selectorMode: "target";
        readonly executionKind: "mutate";
    };
    readonly addBlock: {
        readonly selectorMode: "target";
        readonly executionKind: "mutate";
    };
    readonly addField: {
        readonly selectorMode: "target";
        readonly executionKind: "mutate";
    };
    readonly addAction: {
        readonly selectorMode: "target";
        readonly executionKind: "mutate";
    };
    readonly addRecordAction: {
        readonly selectorMode: "target";
        readonly executionKind: "mutate";
    };
    readonly moveNode: {
        readonly selectorMode: "sourceTarget";
        readonly executionKind: "mutate";
    };
    readonly removeNode: {
        readonly selectorMode: "target";
        readonly executionKind: "mutate";
    };
    readonly convertTemplateToCopy: {
        readonly selectorMode: "target";
        readonly executionKind: "planOnly";
    };
    readonly destroyPage: {
        readonly selectorMode: "rootUidTarget";
        readonly executionKind: "mutate";
    };
} & {
    readonly createMenu: unknown;
    readonly createPage: unknown;
    readonly compose: unknown;
    readonly configure: unknown;
    readonly setFieldValueRules: unknown;
    readonly setBlockLinkageRules: unknown;
    readonly setFieldLinkageRules: unknown;
    readonly setActionLinkageRules: unknown;
    readonly updateSettings: unknown;
    readonly addEventFlow: unknown;
    readonly setEventFlow: unknown;
    readonly removeEventFlow: unknown;
    readonly setEventFlows: unknown;
    readonly setLayout: unknown;
    readonly addTab: unknown;
    readonly updateTab: unknown;
    readonly moveTab: unknown;
    readonly removeTab: unknown;
    readonly addPopupTab: unknown;
    readonly updatePopupTab: unknown;
    readonly movePopupTab: unknown;
    readonly removePopupTab: unknown;
    readonly addBlock: unknown;
    readonly addField: unknown;
    readonly addAction: unknown;
    readonly addRecordAction: unknown;
    readonly moveNode: unknown;
    readonly removeNode: unknown;
    readonly convertTemplateToCopy: unknown;
    readonly destroyPage: unknown;
};
export type FlowSurfacePlanStepActionName = keyof typeof FLOW_SURFACE_PLAN_ACTION_SPECS;
export type FlowSurfacePlanOnlyActionName = {
    [K in FlowSurfacePlanStepActionName]: (typeof FLOW_SURFACE_PLAN_ACTION_SPECS)[K] extends {
        executionKind: 'planOnly';
    } ? K : never;
}[FlowSurfacePlanStepActionName];
export declare const FLOW_SURFACE_PLAN_STEP_ACTIONS: ("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")[];
export declare function getFlowSurfacePlanSelectorRequirements(selectorMode: FlowSurfacePlanSelectorMode): {
    readonly requiresTarget: false;
    readonly requiresSource: false;
} | {
    readonly requiresTarget: true;
    readonly requiresSource: false;
} | {
    readonly requiresTarget: true;
    readonly requiresSource: false;
} | {
    readonly requiresTarget: true;
    readonly requiresSource: true;
};
export declare function getFlowSurfacePlanActionSpec(action: string): FlowSurfaceResolvedPlanActionSpec | undefined;
export declare function isFlowSurfacePlanOnlyAction(action: string): action is FlowSurfacePlanOnlyActionName;
