import { ReactElement } from 'react';
import { MaybePromise } from '../../utils/util';
import { CellEditorCommon } from '../GridCell';
import { GridBaseRow } from '../types';
export interface GridPopoutEditDropDownSelectedItem<TData extends GridBaseRow, TOption> {
    selectedRows: TData[];
    selectedRowIds: TData['id'][];
    value: TOption;
    subComponentValue?: any;
}
interface FinalSelectOption<TOptionValue> {
    value: TOptionValue;
    label?: ReactElement | string;
    disabled?: boolean | string;
    subComponent?: (props: any, ref: any) => any;
}
export declare const primitiveToSelectOption: <T>(value: T) => SelectOption<T>;
export declare const MenuSeparatorString = "_____MENU_SEPARATOR_____";
export declare const MenuSeparator: Readonly<{
    value: "_____MENU_SEPARATOR_____";
}>;
export declare const MenuHeaderString = "_____MENU_HEADER_____";
export declare const MenuHeaderItem: (title: string) => {
    label: string;
    value: string;
};
export type SelectOption<TOptionValue = any> = FinalSelectOption<TOptionValue>;
export interface GridFormDropDownProps<TData extends GridBaseRow, TOptionValue> extends CellEditorCommon {
    className?: 'GridPopoverEditDropDown-containerSmall' | 'GridPopoverEditDropDown-containerMedium' | 'GridPopoverEditDropDown-containerLarge' | 'GridPopoverEditDropDown-containerUnlimited' | 'GridPopoverEditDropDown-containerAutoWidth' | string | undefined;
    filtered?: 'local' | 'reload';
    filterDefaultValue?: string;
    filterPlaceholder?: string;
    filterHelpText?: string;
    noOptionsMessage?: string;
    onSelectedItem?: (props: GridPopoutEditDropDownSelectedItem<TData, TOptionValue>) => Promise<void> | void;
    onSelectFilter?: (props: GridPopoutEditDropDownSelectedItem<TData, TOptionValue>) => Promise<void> | void;
    options: FinalSelectOption<TOptionValue>[] | ((selectedRows: TData[], filter?: string) => MaybePromise<FinalSelectOption<TOptionValue>[] | undefined>) | undefined;
    topComponent?: () => ReactElement;
}
export declare const GridFormDropDown: <TData extends GridBaseRow, TOptionValue>(props: GridFormDropDownProps<TData, TOptionValue>) => import("react").JSX.Element;
export {};
