/**
 * 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 { Field } from '@formily/core';
import { Schema } from '@formily/react';
import { CollectionFieldOptions_deprecated } from '../../../../collection-manager';
/**
 * #### 处理 `子表单` 和 `子表格` 中的特殊情况
 *
 * - 提供一个判断当前是否是特殊情况的方法
 * - 提供一个设置默认值的方法
 */
export declare const useSpecialCase: () => {
    /**
     * 特殊情况指的是：当前字段是 `对一` 字段且存在于 `对多` 字段的 `子表格` 或 `子表单` 中
     * 详细说明见：https://nocobase.feishu.cn/docx/EmNEdEBOnoQohUx2UmBcqIQ5nyh#CUdLdy6OpoPKjyx9DLPc3lqknVc
     */
    isSpecialCase: () => boolean;
    setDefaultValue: (value: any) => void;
};
/**
 * 通过存在于 `子表格` 和 `子表单` 中的字段，获取父级字段的 fieldSchema
 * @param fieldSchema
 */
export declare function getParentFieldSchema(fieldSchema: Schema): Schema<any, any, any, any, any, any, any, any, any>;
/**
 * 特殊情况指的是：当前字段是 `对一` 字段且存在于 `对多` 字段的 `子表格` 或 `子表单` 中
 * 详细说明见：https://nocobase.feishu.cn/docx/EmNEdEBOnoQohUx2UmBcqIQ5nyh#CUdLdy6OpoPKjyx9DLPc3lqknVc
 * @returns
 */
export declare function isSpecialCaseField({ collectionField, fieldSchema, getCollectionField, }: {
    collectionField: CollectionFieldOptions_deprecated;
    fieldSchema: Schema;
    getCollectionField: (name: string) => CollectionFieldOptions_deprecated;
}): boolean;
/**
 * 将 `对多` 字段的子表单或子表格中的 `对一` 字段的值转换成 `对多` 字段的值
 * @param value `子表单` 和 `子表格` 中的 `对一` 字段的经过解析之后的变量的值
 * @param deps
 * @returns
 */
export declare function transformValue(value: any, deps: {
    field: Field;
    subFieldSchema: Schema;
}): any;
/**
 * 判断一个 record 是否是从数据库中获取的，如果是则返回 true，否则返回 false
 * @param value useRecord  返回的值
 * @returns boolean
 */
export declare function isFromDatabase(value: Record<string, any>): boolean;
/**
 * 解决 `子表格` 中的 “一对多/多对一” 字段的默认值问题。
 *
 * 问题：如果子表格是空的，会导致默认值不会被设置，这是因为子表格中没有 FormItem 渲染，而设置默认值的逻辑就在 FormItem 中。
 *
 * 解决方法：
 * 1. 如果子表格是空的，就设置一个值，这样会渲染出 FormItem。
 * 2. 在 FormItem 中会设置默认值。
 * 3. 如果子表格中没有设置默认值，就会再把子表格重置为空。
 * @param param0
 */
export declare const useSubTableSpecialCase: ({ rootField, rootSchema }: {
    rootField: any;
    rootSchema: any;
}) => void;
/**
 * Determines if one array is a subset of another array
 * @param subset The potential subset
 * @param superset The potential superset
 * @returns Returns true if subset is a subset of superset, otherwise false
 */
export declare function isSubset(subset: any[], superset: any[]): boolean;
export declare function useHasUsedVariable(): {
    hasUsedVariable: (variableName: string, rootSchema: Schema) => boolean;
};
