import type { CSSProperties, ReactNode } from 'react';
/**
 * 通用记录类型
 */
export declare type BrRecord = Record<string | number | symbol, unknown>;
/**
 * 搜索配置类型
 */
export interface ShowSearchType<T = NodeType> {
    filter?: (inputValue: string, options: T[], fieldNames: FieldNames) => boolean;
    render?: (inputValue: string, path: T[], fieldNames: FieldNames) => React.ReactNode;
    searchPosition?: 'global' | 'leaf';
}
/**
 * 字段名称映射类型
 */
export declare type FieldNames = {
    /** 显示文本的字段名 */
    label: string;
    /** 值的字段名 */
    value: string;
    /** 子节点的字段名 */
    children: string;
};
/**
 * 单个值类型
 */
export declare type ValueCell = React.Key;
/**
 * 级联选择器值类型（数组形式）
 */
export declare type Value = ValueCell[];
/**
 * 节点基础类型
 */
export declare type NodeType<T = BrRecord> = T & {
    /** 是否为叶子节点 */
    isLeaf?: boolean;
};
/**
 * 列项类型（转换后的节点类型）
 */
export declare type ColumnItem<T = BrRecord> = NodeType<T> & {
    /** 唯一标识 */
    key: string;
    /** 父节点ID，使用 '_' 连接 */
    parentsId: string;
    /** 是否为叶子节点 */
    isLeaf?: boolean;
    /** 搜索时，所有层级的 label，用 ' / ' 拼接 */
    searchLabel?: string;
    /** 展示的 label */
    displayLabel?: ReactNode;
    /** 节点层级 */
    level?: number;
};
/**
 * 级联选择器组件属性
 */
export declare type BrCascaderProps = {
    /** 指定当前选中的条目，例['1','1_1'] */
    value?: Value;
    /** 初始默认选中条目 */
    defaultValue?: Value;
    /** 级联树形结构数据 */
    options: NodeType[];
    /** 选择框默认文本 */
    placeholder?: string;
    /** 浮层预设位置：bottomLeft bottomRight topLeft topRight */
    placement?: 'bottomLeft' | 'bottomRight' | 'topLeft' | 'topRight';
    /** 是否支持清除 */
    allowClear?: boolean;
    /** 字段映射配置 */
    fieldNames?: Partial<FieldNames>;
    /** 当此项为 true 时，点选每级菜单选项值都会发生变化 */
    changeOnSelect?: boolean;
    /** 选中变化回调 */
    onChange?: (value?: Value, selectedOptions?: NodeType[], isLeaf?: boolean) => void;
    /**
     * 获取数据项 key,
     * 当数据项 value 相同时，可使用 optionKey 来唯一标识一个选项
     * 可以是字段名或自定义函数
     */
    optionKey?: string | ((item: NodeType) => string);
    /** 加载状态 */
    loading?: boolean;
    /** 搜索配置 */
    showSearch?: boolean | ShowSearchType;
    /** 自定义样式 */
    style?: CSSProperties;
    /** 下拉菜单和选择器同宽 */
    dropdownMatchSelectWidth?: boolean;
    /** 下拉框的 className */
    dropdownClassName?: string;
    /** 下拉框中菜单的 className */
    popupClassName?: string;
    /** 下拉框中菜单的 style */
    popupStyle?: CSSProperties;
    /** 下拉菜单每个菜单面板的 style，按顺序，例如[{width:'100px'},{width:'200px'}] */
    dropdownMenuColumnStyle?: CSSProperties[];
    /**
     * 每列根据内容自适应宽度
     * dropdownMenuColumnStyle 设置的 width 优先级高于该属性
     * 注意：该属性会影响性能。可以配合 popupStyle 限制弹窗最大宽度，避免宽度超过屏幕
     */
    dropdownMenuAutoWidth?: boolean[];
    /**
     * 设置虚拟滚动列表高度
     */
    listHeight?: number;
    /**
     * 获取菜单宽度
     * 默认根据 FieldNames.label 最长情况进行宽度计算，
     * 如果 label 是一个复杂的结构，需要通过 getMenuWidth 返回的 string 计算出宽度
     * @param item 节点项
     * @param menuIndex 菜单索引
     * @returns 宽度字符串
     */
    getMenuWidth?: (item: NodeType, menuIndex: number) => string;
    /** 选择后展示的渲染函数 */
    displayRender?: (label: string[], selectedOptions: NodeType[]) => string;
    /** 菜单渲染父节点 */
    getPopupContainer?: (triggerNode: HTMLElement) => HTMLElement;
    /** 下拉框显示状态变化回调 */
    onDropdownVisibleChange?: (open: boolean) => void;
    /** 用于动态加载选项 */
    loadData?: (selectOption: NodeType[]) => void;
};
