import React, { ReactElement } from "react";
import { PlacementWithLogical, UseDisclosureReturn } from "@chakra-ui/react";
import { SortAndFilterFields, ParamsType } from "../../dml/interfaces";
import { UseFormReturn } from "react-hook-form";
interface FilterPopoverProp {
    params?: ParamsType;
    initRef: React.MutableRefObject<HTMLDivElement | null>;
    fields: SortAndFilterFields[];
    enableCounter: boolean;
    applyCondition?: any;
    placement?: PlacementWithLogical;
    role?: string;
    table?: string;
    action?: string;
    permissions?: any;
    setLoaded?: any;
    buttonSize: "sm" | "xs";
    view?: Record<string, any>;
    buttonText?: string | ReactElement;
    height?: string;
    variant?: "children" | "standalone" | "standaloneWithTooltip";
    externalFilter?: UseFormReturn<{
        filter: Record<string, any>;
    }>;
    externalDisclosure?: UseDisclosureReturn;
}
export interface FilterField {
    type: string;
    name: string;
    operator: string;
    value: any;
    references?: Record<string, any>;
    relation?: any;
}
export interface Group {
    operator: string;
    type: string;
    fields: FilterField[];
}
export declare const disallowedFilterField: Set<string>;
export declare const dateField: Set<string>;
export declare const logicalOperator: Set<string>;
declare const FilterPopover: React.MemoExoticComponent<({ params, initRef, fields, enableCounter, buttonSize, applyCondition, placement, table, role, action, permissions, buttonText, view, height, externalFilter, variant, externalDisclosure, }: FilterPopoverProp) => JSX.Element>;
export default FilterPopover;
