import type { FC } from "react";
import type { CascaderProps } from "../Cascader/index";
import React from "react";
type QFWithOperatorItems = Array<QFWithOperatorItem>;
type QFWithOperatorItemValidate = (value?: string | number | boolean | Array<string | number | boolean>) => {
    isValid: boolean;
    errmsg?: string;
} | undefined;
export type QFWithOperatorItemType = "string" | "number" | "time_range" | "datetime" | "cascader" | "multi_cascader" | "select" | "multi_select" | "tree_select" | "multi_tree_select" | "custom";
export type OperatorType = "=" | "!=" | "like" | "not like" | ">" | "<" | "in" | "not_in" | "<>" | "><" | "regex" | "not regex";
export type QFWithOperatorItem = {
    key: string;
    label: React.ReactNode;
    type: QFWithOperatorItemType;
    placeholder?: string;
    defaultVisible?: boolean;
    options?: QFWithOperatorItemOptionsType;
    maxTagCount?: number | "responsive";
    showSearch?: boolean;
    inputWidth?: number;
    width?: number;
    minWidth?: number;
    flex?: number;
    validate?: QFWithOperatorItemValidate;
    operators?: OperatorType[];
    hideOperators?: boolean;
    meta?: {
        cascaderChangeOnSelect?: boolean;
        cascaderLoadData?: (selectOptions: CascaderProps["options"]) => QFWithOperatorItemOptions;
        selectWithSearch?: boolean;
        treeNodeLabelProp?: string;
        treeNodeFilterProp?: string;
        defaultOperator?: string;
        operatorOptions?: OperatorType[];
        dropdownClassName?: string;
    };
    allowClear?: boolean;
    disabled?: boolean;
    minNum?: number;
    maxNum?: number;
    hint?: React.ReactNode;
    showHighLight?: boolean;
} | {
    key: string;
    label: React.ReactNode;
    type: "custom";
    placeholder?: string;
    maxTagCount?: number;
    width?: number;
    minWidth?: number;
    flex?: number;
    defaultVisible?: boolean;
    options?: QFWithOperatorItemOptionsType;
    validate?: QFWithOperatorItemValidate;
    operators?: OperatorType[];
    hideOperators?: boolean;
    meta?: {
        defaultOperator?: string;
        operatorOptions?: OperatorType[];
    };
    component: FC<{
        value: any;
        placeholder?: string;
        options?: QFWithOperatorItemOptionsType;
        onChange: (value?: any, oper?: string, visible?: boolean) => void;
    }>;
    valueLabel?: (value: any) => undefined | string | Array<string>;
    disabled?: boolean;
    hint?: React.ReactNode;
    showHighLight?: boolean;
};
export type QFWithOperatorItemOptionsType = ((searchText?: string, selectedValue?: Array<string | number>) => Promise<QFWithOperatorItemOptions>) | QFWithOperatorItemOptions;
export type QFWithOperatorItemOptions = Array<{
    label: string;
    value: string | number;
    children?: QFWithOperatorItemOptions;
}>;
export interface QFWithOperatorProps<VALUE extends Record<string, any>> {
    items: QFWithOperatorItems;
    labelStyle?: "out" | "in";
    labelClassName?: string;
    value?: VALUE;
    shadow?: boolean;
    searchKey?: string;
    moreButton?: boolean;
    moreOpen?: boolean;
    moreOpenChange?: (value: boolean) => void;
    moreButtonClassName?: string;
    tailSlot?: React.ReactNode;
    children?: React.ReactNode;
    onChange?: (value: VALUE, validate: boolean) => void;
    hideClassName?: string;
    columns?: number;
    labelWidth?: number;
    inputWidth?: number;
    className?: string;
    showHighLight?: boolean;
}
export declare enum LABEL_STYLE {
    "外部" = "out",
    "内部" = "in"
}
export {};
