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