import { MenuProps } from 'antd';
import React, { ReactNode } from 'react';
type TagPopupItem = Array<{
    label: string;
    key: string | number;
    onClick?: (v: string) => void;
}>;
type RenderProps = TagPopupProps & {
    text?: string;
    placeholder?: string;
    autoOpen?: boolean;
    onSelect?: (value: string, path?: number[], tagNode?: Record<string, any>) => void;
};
export type TagPopupProps = {
    /**
     * 子元素内容
     */
    children?: React.ReactNode;
    /**
     * 下拉菜单项列表或返回下拉菜单项列表的函数
     */
    items?: TagPopupItem | ((props: RenderProps) => Promise<TagPopupItem>);
    /**
     * 组件CSS前缀类名
     */
    prefixCls?: string | string[] | false;
    /**
     * 自定义下拉菜单渲染函数
     * @param defaultNode 默认渲染的节点
     * @param props 组件属性
     */
    dropdownRender?: (defaultNode: ReactNode, props: RenderProps) => React.ReactNode;
    /**
     * 下拉菜单的自定义样式
     */
    dropdownStyle?: React.CSSProperties;
    /**
     * 菜单属性配置
     */
    menu?: MenuProps;
    /**
     * 当没有数据时显示的内容
     */
    notFoundContent?: React.ReactNode;
    /**
     * 下拉菜单主体的样式
     */
    bodyStyle?: React.CSSProperties;
    /**
     * 组件自定义类名
     */
    className?: string;
    /**
     * 控制下拉菜单是否展开
     */
    open?: boolean;
    /**
     * 下拉菜单展开状态变化的回调函数
     * @param open 是否展开
     */
    onOpenChange?: (open: boolean) => void;
    /**
     * 在弹出框打开之前的回调函数
     * 可以用于控制弹出框是否打开
     * @param open 是否打开
     * @param props 组件属性
     * @returns 是否允许打开
     */
    beforeOpenChange?: (open: boolean, props: RenderProps) => boolean;
    /**
     * 自定义标签渲染函数
     * @param props 组件属性
     * @param defaultDom 默认渲染的DOM
     * @returns 自定义渲染的React节点
     */
    tagRender?: (props: Omit<RenderProps, 'onSelect'> & {
        onSelect: (value: string, tagNode?: Record<string, any>) => void;
    }, defaultDom: ReactNode) => React.ReactNode;
    /**
     * 自定义标签文本渲染函数
     * @param props 组件属性
     * @param text 文本内容
     * @returns 处理后的文本
     */
    tagTextRender?: (props: RenderProps, text: string) => string;
    /**
     * 标签文本的样式，可以是样式对象或返回样式对象的函数
     */
    tagTextStyle?: ((props: RenderProps) => React.CSSProperties) | React.CSSProperties;
    /**
     * 标签文本的类名
     */
    tagTextClassName?: string;
    /**
     * 输入值改变时触发的回调函数
     * @param value 输入的值
     * @param props 组件属性
     * @returns
     */
    onChange?: (value: string, props: RenderProps) => void;
    type?: 'panel' | 'dropdown';
};
export declare const TagPopup: (props: RenderProps) => React.JSX.Element;
export {};
