/**
 * 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 { FlowSurfaceNodeDefaults, FlowSurfaceNodeSpec } from './types';
type BuildFieldParams = {
    wrapperUse: string;
    fieldUse: string;
    fieldPath: string;
    dataSourceKey: string;
    collectionName: string;
    associationPathName?: string;
    filterFormInit?: Record<string, any>;
    wrapperProps?: Record<string, any>;
    fieldProps?: Record<string, any>;
    uid?: string;
    innerUid?: string;
};
export declare function buildPersistedRootPageModel(options: {
    pageUid?: string;
    pageTitle: string;
    routeId: string | number;
    enableTabs?: boolean;
    displayTitle?: boolean;
    pageDocumentTitle?: string;
}): {
    uid: string;
    use: string;
    props: {
        routeId: string | number;
        title: string;
        enableTabs: boolean;
        displayTitle: boolean;
    };
    stepParams: {
        pageSettings: {
            general: {
                title: string;
                displayTitle: boolean;
                enableTabs: boolean;
                documentTitle: string;
            };
        };
    };
};
export declare function buildSyntheticRootPageTabModel(options: {
    uid: string;
    title: string;
    route: Record<string, any>;
    documentTitle?: string;
    icon?: string;
    use?: string;
    props?: Record<string, any>;
    decoratorProps?: Record<string, any>;
    stepParams?: Record<string, any>;
    flowRegistry?: Record<string, any>;
    grid?: Record<string, any> | null;
}): {
    subModels?: {
        grid: Record<string, any>;
    };
    uid: string;
    use: string;
    props: {
        route: Record<string, any>;
        title: string;
        icon: string;
    };
    decoratorProps: Record<string, any>;
    flowRegistry: Record<string, any>;
    stepParams: {
        pageTabSettings: any;
    };
};
export declare function buildBlockTree(options: {
    type?: string;
    use?: string;
    containerUse?: string;
    resourceInit?: Record<string, any>;
    enableDefaultSorting?: boolean;
    props?: Record<string, any>;
    decoratorProps?: Record<string, any>;
    stepParams?: Record<string, any>;
    flowRegistry?: Record<string, any>;
}): FlowSurfaceNodeSpec;
export declare function buildPopupPageTree(options: {
    pageUid?: string;
    tabUid?: string;
    gridUid?: string;
    pageTitle?: string;
    tabTitle?: string;
    displayTitle?: boolean;
    enableTabs?: boolean;
}): {
    uid: string;
    use: string;
    props: {
        displayTitle: boolean;
        enableTabs: boolean;
        title?: string;
    };
    stepParams: {
        pageSettings: {
            general: {
                displayTitle: boolean;
                enableTabs: boolean;
                title?: string;
            };
        };
    };
    subModels: {
        tabs: {
            uid: string;
            use: string;
            props: {
                title: string;
            };
            stepParams: {
                pageTabSettings: {
                    tab: {
                        title: string;
                    };
                };
            };
            subModels: {
                grid: {
                    uid: string;
                    use: string;
                };
            };
        }[];
    };
};
export declare function buildFieldTree(params: BuildFieldParams): {
    wrapperUid: string;
    innerUid: string;
    model: {
        uid: string;
        use: string;
        props: Record<string, any>;
        stepParams: Record<string, any>;
        subModels: {
            field: {
                uid: string;
                use: string;
                props: Record<string, any>;
                stepParams: Record<string, any> & {
                    fieldSettings: {
                        init: _.Dictionary<string>;
                    };
                    fieldBinding: {
                        use: string;
                    };
                };
            };
        };
    };
} | {
    wrapperUid: string;
    innerUid: string;
    model: {
        uid: string;
        use: string;
        props: Record<string, any>;
        stepParams: Record<string, any>;
        subModels: {
            field: {
                subModels?: Record<string, FlowSurfaceNodeSpec | FlowSurfaceNodeSpec[]>;
                uid: string;
                use: string;
                props: Record<string, any>;
                stepParams: Record<string, any> & {
                    fieldSettings: {
                        init: _.Dictionary<string>;
                    };
                };
            };
        };
    };
};
export declare function buildStandaloneFieldNode(options: {
    use: 'JSColumnModel' | 'JSItemModel' | 'DividerItemModel';
    uid?: string;
    props?: Record<string, any>;
    decoratorProps?: Record<string, any>;
    stepParams?: Record<string, any>;
}): {
    uid: string;
    use: "JSColumnModel" | "JSItemModel" | "DividerItemModel";
    props: Record<string, any>;
    decoratorProps: Record<string, any>;
    stepParams: Record<string, any>;
};
export declare function buildActionTree(options: {
    type?: string;
    use?: string;
    containerUse?: string;
    resourceInit?: Record<string, any>;
    props?: Record<string, any>;
    decoratorProps?: Record<string, any>;
    stepParams?: Record<string, any>;
    flowRegistry?: Record<string, any>;
}): {
    subModels?: Record<string, FlowSurfaceNodeSpec | FlowSurfaceNodeSpec[]>;
    use: string;
    props: Record<string, any>;
    decoratorProps: Record<string, any>;
    stepParams: Record<string, any>;
    flowRegistry: Record<string, any>;
};
export declare function buildCanonicalTableActionsColumnNode(options?: {
    uid?: string;
    props?: Record<string, any>;
    decoratorProps?: Record<string, any>;
    stepParams?: Record<string, any>;
    flowRegistry?: Record<string, any>;
}): {
    uid: string;
    use: string;
    props: Record<string, any>;
    decoratorProps: Record<string, any>;
    stepParams: {
        tableColumnSettings: {
            title: {
                title: string;
            };
        };
    } & Record<string, any>;
    flowRegistry: Record<string, any>;
};
export declare function assignClientKeysToUids(spec: FlowSurfaceNodeSpec, clientKeyToUid: Record<string, string>): FlowSurfaceNodeSpec;
export declare function getStandaloneFieldDefaults(use: string): FlowSurfaceNodeDefaults;
export {};
