/**
 * 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';
export type FlowSurfaceDefaultActionPopupType = 'addNew' | 'view' | 'edit';
export type FlowSurfaceDefaultActionPopupUse = 'AddNewActionModel' | 'ViewActionModel' | 'EditActionModel';
type FlowSurfaceDefaultActionPopupSubmitAction = {
    key: string;
    type: 'submit';
    settings: {
        title: string;
        type: string;
        confirm: boolean;
    };
};
export type FlowSurfaceDefaultActionPopupConfig = {
    type: FlowSurfaceDefaultActionPopupType;
    use: FlowSurfaceDefaultActionPopupUse;
    defaultButtonTitle: string;
    defaultPopupTabTitle: string;
    blockKey: string;
    blockType: 'createForm' | 'editForm' | 'details';
    blockUse: 'CreateFormModel' | 'EditFormModel' | 'DetailsBlockModel';
    resourceBinding: 'currentCollection' | 'currentRecord';
    blockSettings: Record<string, any>;
    submitAction?: FlowSurfaceDefaultActionPopupSubmitAction;
};
export type FlowSurfaceDefaultActionPopupFieldCandidate = {
    field?: any;
    fieldPath?: string;
};
export type FlowSurfaceDefaultActionPopupFieldGroupField = string | {
    field: string;
    titleField?: string;
    settings?: Record<string, any>;
};
export type FlowSurfaceDefaultActionPopupFieldGroupCandidate = {
    key?: string;
    title: string;
    fields: FlowSurfaceDefaultActionPopupFieldGroupField[];
};
type FlowSurfaceDefaultActionPopupFieldFilterOptions = {
    excludeAuditTimestampFields?: boolean;
    excludeAssociationFields?: boolean;
    excludeRelationBackingForeignKeyFields?: boolean;
};
type FlowSurfaceDefaultActionPopupFieldsInput = any[] | {
    fieldPaths?: any[];
    fieldGroups?: FlowSurfaceDefaultActionPopupFieldGroupCandidate[];
};
export declare const FLOW_SURFACE_DEFAULT_ACTION_POPUP_TYPES: Set<FlowSurfaceDefaultActionPopupType>;
export declare const FLOW_SURFACE_DEFAULT_ACTION_POPUP_USES: Set<FlowSurfaceDefaultActionPopupUse>;
export declare function isFlowSurfaceDefaultActionPopupType(type?: string): type is FlowSurfaceDefaultActionPopupType;
export declare function isFlowSurfaceDefaultActionPopupUse(use?: string): use is FlowSurfaceDefaultActionPopupUse;
export declare function getFlowSurfaceDefaultActionPopupConfigByUse(use?: string): FlowSurfaceDefaultActionPopupConfig;
export declare function resolveFlowSurfaceDefaultActionPopupTabTitle(use?: string, currentTitle?: string | null): string;
export declare function isFlowSurfaceDefaultActionPopupBusinessField(field: any): boolean;
export declare function pickFlowSurfaceDefaultActionPopupFieldPaths(candidates: FlowSurfaceDefaultActionPopupFieldCandidate[], options?: FlowSurfaceDefaultActionPopupFieldFilterOptions): string[];
export declare function collectFlowSurfaceDefaultActionPopupFieldGroupFieldPaths(fieldGroups: FlowSurfaceDefaultActionPopupFieldGroupCandidate[] | undefined): Set<string>;
export declare function pickFlowSurfaceDefaultActionPopupFieldGroups(candidates: FlowSurfaceDefaultActionPopupFieldCandidate[], fieldGroups: FlowSurfaceDefaultActionPopupFieldGroupCandidate[] | undefined, options?: FlowSurfaceDefaultActionPopupFieldFilterOptions): FlowSurfaceDefaultActionPopupFieldGroupCandidate[];
export declare function buildFlowSurfaceDefaultActionPopupBlocks(use: string | undefined, fieldsInput: FlowSurfaceDefaultActionPopupFieldsInput): _.Dictionary<string | any[] | Record<string, any> | FlowSurfaceDefaultActionPopupFieldGroupCandidate[] | FlowSurfaceDefaultActionPopupSubmitAction[] | {
    binding: "currentCollection" | "currentRecord";
}>[];
export declare function hasFlowSurfaceInlinePopupTemplate(popup?: Record<string, any>): boolean;
export declare function hasFlowSurfaceInlinePopupBlocks(popup?: Record<string, any>): boolean;
export {};
