/**
 * 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 { CollectionFieldOptions_deprecated } from '../collection-manager';
import { Collection } from '../data-source/collection/Collection';
import React from 'react';
declare enum FILTER_OPERATOR {
    AND = "$and",
    OR = "$or"
}
export type FilterParam = {
    [K in FILTER_OPERATOR]?: any;
};
export interface ForeignKeyField {
    /** 外键字段所在的数据表的名称 */
    collectionName: string;
    isForeignKey: boolean;
    key: string;
    name: string;
    parentKey: null | string;
    reverseKey: null | string;
    [key: string]: any;
}
export interface DataBlock {
    /** 唯一标识符，schema 中的 x-uid 值 */
    uid: string;
    /** 用户自行设置的区块名称 */
    title?: string;
    /** 与数据区块相关的数据表信息 */
    collection: Collection;
    /** 根据提供的参数执行该方法即可刷新数据区块的数据 */
    doFilter: (params: any, params2?: any) => Promise<void>;
    /** 清除筛选区块设置的筛选参数 */
    clearFilter: (uid: string) => void;
    /** 将数据区块的数据置为空 */
    clearData: () => void;
    /** 清除表格的选中项 */
    clearSelection?: () => void;
    /** 数据区块表中所有的关系字段 */
    associatedFields?: CollectionFieldOptions_deprecated[];
    /** 数据区块表中所有的外键字段 */
    foreignKeyFields?: ForeignKeyField[];
    /** 数据区块已经存在的过滤条件（通过 `设置数据范围` 或者其它能设置筛选条件的功能） */
    defaultFilter?: FilterParam;
    /** 数据区块用于请求数据的接口 */
    service?: any;
    /** 数据区块所的 DOM 容器 */
    dom: HTMLElement;
    /**
     * auto: 数据区块会在初始渲染时请求数据
     * manual: 只有当点击了筛选按钮，才会请求数据
     */
    dataLoadingMode?: 'auto' | 'manual';
    /** 让整个区块悬浮起来 */
    highlightBlock: () => void;
    /** 取消悬浮 */
    unhighlightBlock: () => void;
}
/**
 * 主要用于记录当前页面中的数据区块的信息，用于在过滤区块中使用
 * @param props
 * @returns
 */
export declare const FilterBlockProvider: React.FC;
/**
 * 用于收集当前页面中的数据区块的信息，用于在过滤区块中使用
 * @param param0
 * @returns
 */
export declare const DataBlockCollector: ({ children, params, }: {
    children: React.ReactNode;
    params?: {
        filter?: FilterParam;
    };
}) => React.JSX.Element;
/**
 * 返回一些方法用于收集和获取当前页面中的数据区块的信息
 * @returns
 */
export declare const useFilterBlock: () => {
    inProvider: boolean;
    recordDataBlocks: (...args: any[]) => void;
    getDataBlocks: () => DataBlock[];
    removeDataBlock: (...args: any[]) => void;
};
export {};
