import * as React from 'react';
import type { TreeSelectProps } from 'bonree-tree-select';
import type { LabelValueType } from 'bonree-tree-select/lib/interface';
import type { Placement } from 'bonree-select/lib/generate';
import type { CascaderValueType, DataNode, FieldNames, ShowSearchType } from './interface';
interface BaseCascaderProps extends Omit<TreeSelectProps, 'value' | 'defaultValue' | 'filterTreeNode' | 'labelInValue' | 'loadData' | 'multiple' | 'showCheckedStrategy' | 'showSearch' | 'treeCheckable' | 'treeDataSimpleMode' | 'treeNodeFilterProp' | 'treeNodeLabelProp' | 'treeDefaultExpandAll' | 'treeDefaultExpandedKeys' | 'treeExpandedKeys' | 'treeIcon' | 'onChange'> {
    options?: DataNode[];
    children?: React.ReactElement;
    value?: CascaderValueType | CascaderValueType[];
    defaultValue?: CascaderValueType | CascaderValueType[];
    changeOnSelect?: boolean;
    allowClear?: boolean;
    disabled?: boolean;
    fieldNames?: FieldNames;
    displayRender?: (label: React.ReactNode[], selectedOptions: DataNode[]) => React.ReactNode;
    showSearch?: boolean | ShowSearchType;
    searchValue?: string;
    onSearch?: (search: string) => void;
    /** @deprecated Use `open` instead */
    popupVisible?: boolean;
    /** @deprecated Use `dropdownClassName` instead */
    popupClassName?: string;
    dropdownClassName?: string;
    /** @deprecated Use `placement` instead */
    popupPlacement?: Placement;
    placement?: Placement;
    /** @deprecated Use `onDropdownVisibleChange` instead */
    onPopupVisibleChange?: (open: boolean) => void;
    onDropdownVisibleChange?: (open: boolean) => void;
    expandTrigger?: 'hover' | 'click';
    dropdownMenuColumnStyle?: React.CSSProperties;
    /** @private Internal usage. Do not use in your production. */
    dropdownPrefixCls?: string;
    loadData?: (selectOptions: DataNode[]) => void;
    expandIcon?: React.ReactNode;
    loadingIcon?: React.ReactNode;
    requestFailureIcon?: React.ReactNode;
    requestFailureText?: string;
    refreshText?: string;
    empty?: React.ReactNode;
    /** 是否显示"全部"选项 */
    showAll?: boolean;
    /** "全部"选项的文案 */
    selectAllText?: React.ReactNode;
    /** 当选中第一层所有选项后是否只反显"全部"一项 */
    isSelectAll?: boolean;
}
declare type OnSingleChange = (value: CascaderValueType, selectOptions: DataNode[]) => void;
declare type OnMultipleChange = (value: CascaderValueType[], selectOptions: DataNode[][]) => void;
export declare enum LOAD_STATUS {
    LOADING = "RC_LOADING_RC",
    EMPTY = "RC_EMPTY_RC",
    FAILED = "RC_LOADED_FAILED_RC"
}
export interface SingleCascaderProps extends BaseCascaderProps {
    checkable?: false;
    onChange?: OnSingleChange;
}
export interface MultipleCascaderProps extends BaseCascaderProps {
    checkable: true | React.ReactNode;
    maxTagPlaceholder?: (omittedValues: LabelValueType[]) => React.ReactNode;
    onChange?: OnMultipleChange;
}
export declare type CascaderProps = SingleCascaderProps | MultipleCascaderProps;
interface CascaderRef {
    focus: () => void;
    blur: () => void;
}
declare const Cascader: React.ForwardRefExoticComponent<CascaderProps & React.RefAttributes<CascaderRef>>;
export default Cascader;
