import { ReactElement } from 'react';
import { GridBaseRow } from '../Grid';
import { CellEditorCommon } from '../GridCell';
export interface MultiSelectOption {
    value: any;
    label?: string;
    subComponent?: (props: any) => ReactElement;
    subValue?: any;
    filter?: string;
    checked?: boolean;
    warning?: string | undefined;
}
export interface GridFormMultiSelectGroup {
    header: string;
    filter?: string;
}
export interface GridFormMultiSelectSaveProps<TData extends GridBaseRow> {
    selectedRows: TData[];
    selectedOptions: MultiSelectOption[];
}
export interface GridFormMultiSelectProps<TData extends GridBaseRow> extends CellEditorCommon {
    className?: 'GridMultiSelect-containerSmall' | 'GridMultiSelect-containerMedium' | 'GridMultiSelect-containerLarge' | 'GridMultiSelect-containerUnlimited' | string | undefined;
    filtered?: boolean;
    filterPlaceholder?: string;
    filterHelpText?: string | ((filter: string, options: MultiSelectOption[]) => string | undefined);
    noOptionsMessage?: string;
    onSelectFilter?: (props: {
        filter: string;
        options: MultiSelectOption[];
    }) => void;
    onSave?: (props: GridFormMultiSelectSaveProps<TData>) => Promise<boolean>;
    headers?: GridFormMultiSelectGroup[];
    options: MultiSelectOption[] | ((selectedRows: TData[]) => Promise<MultiSelectOption[]> | MultiSelectOption[]);
    invalid?: (selectedRows: TData[], selectedOptions: MultiSelectOption[]) => boolean;
}
export declare const GridFormMultiSelect: <TData extends GridBaseRow>(props: GridFormMultiSelectProps<TData>) => import("react/jsx-runtime").JSX.Element;
