import React from 'react';
import { TooltipProps } from '../Tooltip/Tooltip';
type PropsWithLabel = {
    /** Label text */
    labelText: string;
    /** Optional Right aligned Label */
    rightLabel?: React.ReactNode;
    /** Label tooltip */
    labelTooltip?: Omit<TooltipProps, 'children'>;
    /** Option to make this field required */
    required?: boolean;
};
type PropsWithoutLabel = {
    labelText?: never;
    rightLabel?: never;
    labelTooltip?: never;
    required?: never;
};
type LabelProps = PropsWithLabel | PropsWithoutLabel;
type MultipleSelectionBaseProps = LabelProps & {
    /** Array of options displayed in the UI */
    options: string[];
    /** Array of user selected options that we want selected when the component mounts. These strings should come from the strings provided in the `options` prop. */
    selectedOptions: string[];
    /** Function to set the array of selected options */
    callout: (selectedList: string[]) => void;
    /** Custom placeholder text for the SearchBar */
    searchPlaceholder?: string;
    /** Optional function that will make a callout with the search `value` passed back */
    onSearchChange?: (value: string) => void;
    /** Custom text that will display if no items match the search input */
    noListDataText?: string;
    /** Array of secondary values to be displayed in the UI */
    secondaryOptions?: (string | undefined)[];
    /** Optional prop to disabled the use of this component */
    disabled?: boolean;
    /** Optionally show the ListLoading component when options are not readily available */
    loading?: boolean;
    /** Optional prop to disabled the use of specific options. These strings should come from the strings provided in the `options` prop. */
    disabledOptions?: string[];
    /** Optionally hide the Select All */
    hideSelectAll?: boolean;
};
type ExposedProps = MultipleSelectionBaseProps & {
    /** Option to make the component exposed and displayed similar to what the `InlineMultiSelect` looks like. */
    exposed: boolean;
    /** Optionally override the maxHeight for the exposed container. */
    maxHeight?: number | string;
    appendTo?: never;
    selectPlaceholder?: never;
    /** Option to reset list search on callout */
    resetSearch?: boolean;
};
type StandardProps = MultipleSelectionBaseProps & {
    /** Useful when we want to attach this to another component making use of Tippy */
    appendTo?: 'parent' | ((element: Element) => Element);
    /** Custom placeholder text for the Select Dropdown */
    selectPlaceholder: string;
    exposed?: never;
    maxHeight?: never;
    resetSearch?: never;
};
export type MultipleSelectionProps = ExposedProps | StandardProps;
export type MultipleSelectionHeaders = {
    id: number;
    label: string;
    isChecked: boolean;
};
/**
 * @deprecated Use the `MultiSelect` component instead. This component will be removed in a future release.
 **/
declare const MultipleSelection: ({ appendTo, selectedOptions, options, callout, selectPlaceholder, labelText, searchPlaceholder, onSearchChange, noListDataText, required, labelTooltip, rightLabel, exposed, maxHeight, secondaryOptions, resetSearch, disabled, loading, disabledOptions, hideSelectAll, }: MultipleSelectionProps) => JSX.Element;
export default MultipleSelection;
