/**
 * 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 FlowSurfaceFieldMenuCandidateDedupeShape = {
    fieldPath: string;
    associationPathName?: string;
    explicitWrapperUse?: string;
    explicitFieldUse?: string;
};
export declare function toTemplatePlainRow(row: any): any;
export declare function buildFlowTemplateSearchFilter(existing: any, search?: string): any;
export declare function normalizeTemplatePage(value: any): number;
export declare function normalizeTemplatePageSize(value: any): number;
export declare function normalizeFieldPath(fieldPath: string, associationPathName?: string): string;
export declare function hasConfiguredFlowContextValue(value: any): boolean;
export declare function buildFilterFieldMeta(field: any): _.Dictionary<any>;
export declare function getCollectionFields(collection: any): any[];
export declare function getCollectionTitle(collection: any): any;
export declare function getCollectionName(collection: any): any;
export declare function getCollectionTitleFieldName(collection: any): any;
export declare function getFieldName(field: any): any;
export declare function getFieldTitle(field: any): any;
export declare function getCollectionModelAttributes(collection: any): any;
export type FlowSurfaceChartBuilderSupportedSubfield = {
    field: string;
    title?: string;
    interface?: string;
};
export declare function getChartBuilderSupportedRelationSubfields(associationPathName: string, targetCollection: any): FlowSurfaceChartBuilderSupportedSubfield[];
export declare function formatChartBuilderSupportedRelationSubfields(associationPath: string, supportedFields?: FlowSurfaceChartBuilderSupportedSubfield[]): string;
export declare function getInvalidChartBuilderRelationDirectSubfieldDetails(input: {
    associationPathName: string;
    selectedSubfieldPath: string;
    targetCollection: any;
}): {
    associationPath: string;
    leafFieldName: string;
    selectedSubfieldPath: string;
    supportedFields: FlowSurfaceChartBuilderSupportedSubfield[];
};
export declare function getUnsupportedChartBuilderRelationSubfieldDetails(input: {
    associationPathName: string;
    leafFieldName: string;
    leafField?: any;
    targetCollection: any;
}): {
    associationPath: string;
    leafFieldName: string;
    columnName: string;
    supportedFields: FlowSurfaceChartBuilderSupportedSubfield[];
};
export declare function resolveAssociationNameFromField(field: any, fallbackCollection?: any): any;
export declare function getFieldInterface(field: any): any;
export declare function getFieldType(field: any): any;
export declare function inferFlowContextTypeFromField(field: any): "object" | "string" | "array" | "number" | "boolean";
export declare function getFieldTarget(field: any): any;
export declare function getFieldFilterable(field: any): any;
export declare function inferAssociationLeafDisplayFieldUse(fieldInterface?: string): string;
export declare function inferFieldMenuEditableFieldUse(fieldInterface?: string): string;
export declare function isAssociationField(field: any): any;
export declare function resolveFieldFromCollection(collection: any, fieldPath: string): any;
export declare function resolveFieldTargetCollection(field: any, dataSourceKey: string, getCollection: (dataSourceKey: string, collectionName: string) => any): any;
export declare function buildCatalogCollectionCycleKey(collection: any, dataSourceKey?: string): string;
export declare function dedupeVisibleFieldCandidates<T extends FlowSurfaceFieldMenuCandidateDedupeShape>(candidates: T[]): T[];
export declare function getAssociationFilterTargetKey(field: any, targetCollection?: any): any;
