import { Component } from 'react';
import { IMenuListItem } from './MenuListItem';
export interface ISelectMenuItem extends IMenuListItem {
    searchContent?: React.ReactNode;
    items?: ISelectMenuItem[];
}
export interface ISelectMenuNestedItem extends ISelectMenuItem {
    idx: number;
    parentIndexes: number[];
    items?: ISelectMenuNestedItem[];
}
export interface ISelectMenuProps {
    value?: unknown;
    searchText?: string;
    items: ISelectMenuItem[];
    onSelect?: (value: unknown, item: ISelectMenuItem) => void;
    filterOption?: (searchText: string, item: ISelectMenuItem) => void;
    onRequestClose?: () => void;
    nullOptionContent?: React.ReactNode;
    nullOption: boolean;
}
export interface ISelectMenuState {
    items: IMenuListItem[];
}
export declare function caselessMatchFilterOption(searchText: string, item: ISelectMenuItem): boolean;
export declare class SelectMenu extends Component<ISelectMenuProps, ISelectMenuState> {
    static defaultProps: {
        filterOption: typeof caselessMatchFilterOption;
        nullOption: boolean;
    };
    static caselessMatchFilterOption: typeof caselessMatchFilterOption;
    private refMenuItemList;
    wrapWithIdx: (items?: ISelectMenuItem[], parentIndexes?: number[]) => ISelectMenuNestedItem[];
    wrapWithNullOption: (items?: ISelectMenuNestedItem[], nullOptionContent?: React.ReactNode) => ISelectMenuNestedItem[];
    wrapWithValueCallback: (items?: ISelectMenuNestedItem[]) => any;
    transformItems: (items: ISelectMenuItem[], nullOption: boolean, nullOptionContent?: React.ReactNode) => ISelectMenuNestedItem[];
    moveFocusIndexDown: () => void;
    moveFocusIndexUp: () => void;
    selectCurrentFocusIndex: (e: any) => void;
    render(): JSX.Element;
}
