import React from 'react';
import './style.less';
export interface IDataOption<T> {
    iconClass?: string;
    label?: string;
    notMatch?: boolean;
    value: T;
}
export interface IDataOptionGroup<T> {
    iconClass?: string;
    groupName: string;
    options: IDataOption<T>[];
}
export interface ISelectProps<T = string> {
    className?: string;
    size?: 'large' | 'default' | 'small';
    loading?: boolean;
    options?: Array<React.ReactNode> | Array<IDataOption<T>> | IDataOptionGroup<T>[];
    value?: T;
    disabled?: boolean;
    onChange?: (value: T) => void;
    /**
     * 当鼠标划过时触发回调
     * @param value 鼠标划过的是第几个 option
     */
    onMouseEnter?: (value: T, index: number) => void;
    maxHeight?: string;
    [prop: string]: any;
    optionStyle?: any;
    equals?: (v1: T | undefined, v2: T | undefined) => boolean;
    optionRenderer?: React.FC<{
        data: IDataOption<T>;
        isCurrent: boolean;
    }>;
    groupTitleRenderer?: React.FC<{
        group: IDataOptionGroup<T>;
        index: number;
    }>;
    headerComponent?: React.FC<any> | React.ComponentClass;
    footerComponent?: React.FC<any> | React.ComponentClass;
    /**
     * 点击时是否启用搜索
     */
    showSearch?: boolean;
    /**
     * 展示选择框提示
     */
    notMatchWarning?: string;
    /**
     * 搜索 placeholder
     */
    searchPlaceholder?: string;
    /**
     * 搜索时，根据输入筛选, 如果showSearch为true，则默认使用 label 判断
     */
    filterOption?: (input: string, options: IDataOption<T>, group?: IDataOptionGroup<T>) => boolean;
    /**
     * 列表为空时的展示组件
     */
    emptyComponent?: React.FC<any>;
    /**
     * 渲染选中项
     */
    selectedRenderer?: React.FC<{
        data: IDataOption<T>;
    }> | React.ComponentClass<{
        data: IDataOption<T>;
    }>;
    /**
     * 在显示可选项之前的操作
     * 返回 true 表示阻止此次显示
     */
    onBeforeShowOptions?: () => boolean;
    /**
     * 允许 select 的选项框宽度比 select宽度大, 默认 false
     */
    allowOptionsOverflow?: boolean;
    /**
     * 定义选择组件下拉选择菜单的渲染方式
     * fixed —— 相对视窗位置
     * absolute —— 相对于组件位置
     * 默认值为 fixed
     */
    dropdownRenderType?: 'fixed' | 'absolute';
    /**
     * 当前鼠标划过属性的描述信息
     */
    description?: string;
}
export declare const Option: React.FC<React.PropsWithChildren<{
    value: string | number | string[];
    children?: any;
    className?: string;
    onClick?: (value: string | number | string[]) => void;
    optionLabelProp?: string;
    disabled?: boolean;
    label?: string | undefined;
    style?: any;
    containerClassName?: string[];
}>>;
export declare function isDataOptions<T = any>(options: Array<React.ReactNode | IDataOption<T> | IDataOptionGroup<T>> | undefined): options is Array<IDataOption<T>>;
export declare function isDataOptionGroups<T = any>(options: Array<React.ReactNode> | Array<IDataOption<T>> | IDataOptionGroup<T>[] | undefined): options is IDataOptionGroup<T>[];
export declare function Select<T = string>({ disabled, options, size, children, value, onChange, onMouseEnter, optionLabelProp, style, optionStyle, className, maxHeight, equals, optionRenderer, groupTitleRenderer, footerComponent, headerComponent, showSearch, filterOption, searchPlaceholder, emptyComponent, selectedRenderer, onBeforeShowOptions, allowOptionsOverflow, dropdownRenderType, description, notMatchWarning, }: ISelectProps<T>): React.JSX.Element;
export interface ISelectOptionsListProps<T = string> {
    className?: string;
    size?: 'large' | 'default' | 'small';
    currentValue?: T;
    options: IDataOption<T>[] | IDataOptionGroup<T>[];
    onSelect: (value: T) => void;
    optionStyle?: any;
    equals?: (v1: T | undefined, v2: T | undefined) => boolean;
    optionRenderer?: React.FC<{
        data: IDataOption<T>;
        isCurrent: boolean;
    }>;
    groupTitleRenderer?: React.FC<{
        group: IDataOptionGroup<T>;
        index: number;
    }>;
    style?: any;
    renderCheck?: boolean;
    headerComponent?: React.FC<any> | React.ComponentClass;
    footerComponent?: React.FC<any> | React.ComponentClass;
    emptyComponent?: React.FC<any> | React.ComponentClass;
}
export declare const SelectOptionsList: React.ForwardRefExoticComponent<ISelectOptionsListProps<unknown> & React.RefAttributes<unknown>>;
//# sourceMappingURL=index.d.ts.map