import * as React from 'react';
import { PopoverProps } from '../popover/Popover';
import { SelectableItem } from '../../models/SelectableItem';
export type SelectPopoverProps<T extends SelectableItem = SelectableItem> = Pick<PopoverProps, 'anchorEl'> & {
    /**
     * Called every time the popover apply changes.
     */
    onApply: (selectedItemsIds: T['id'][]) => void;
    /**
     * Called every time the popover cancel changes.
     */
    onCancel: () => void;
    /**
     * Called every time the popover search items.
     */
    onSearch: (searchTerm: string) => void;
    /**
     * Called every time the popover load more items.
     */
    onLoadMore: () => void;
    /**
     * The time in ms that the debounce takes to trigger.
     */
    debounce?: number;
    /**
     * If selector can have multiple selections at same time.
     */
    multiple?: boolean;
    /**
     * If infinite scroll have to load more items.
     */
    hasMore?: boolean;
    /**
     * Are items loading.
     */
    isLoading?: boolean;
    /**
     * Are items subtitle2 loading.
     */
    isLoadingSubtitle2?: boolean;
    /**
     * The selectable items.
     */
    items: T[];
    /**
     * Elements colors depending on state.
     */
    itemsColorStyles?: {
        selectedColor: string;
        disabledColor: string;
    };
    /**
     * The selected items.
     */
    selectedItemsIds: T['id'][];
    popoverWidth?: React.CSSProperties['width'];
    /** If `true`, the modal will not restore focus to previously focused element once modal is hidden or unmounted.*/
    disableRestoreFocus?: boolean;
    /**
     * Only enable the Apply button when selected at least this quantity of items.
     */
    requiredSelectedItemsToApply?: number;
    /**
     * Text to show as placeholder of Search input.
     */
    searchPlaceholder?: string;
    /**
     * Text to show in the Apply button.
     */
    applyButtonText?: string;
    /**
     * Maximum number of items that can be selected.
     */
    maxSelectedItems?: number;
    /**
     * If `true`, the current selection will be kept when searching.
     * @default true
     */
    keepCurrentSelectionOnSearch?: boolean;
    /**
     * Text to show when the list is empty.
     */
    emptyListPlaceholder?: string | React.ReactNode;
    /**
     * If `true`, the Apply button will be disabled when there are no changes
     * @default false
     */
    disableApplyWithoutChanges?: boolean;
    /** Popover will be centered in screen */
    centeredInScreen?: boolean;
    /** Padding for div content*/
    paddingContent?: string;
    /**
     * Component to override rendered item
     */
    selectableItemComponent?: React.ComponentType<T>;
    /**
     * Item number per row
     */
    itemsPerRow?: number;
    /**
     * Node as show as item children title
     */
    itemsTitle?: React.ReactNode;
    /**
     * Called when the selection changes before applying the changes.
     */
    onPendingSelectionChange?: (items: T['id'][], shownItems: T['id'][]) => void;
};
/**
 * SelectPopover is a components that renders a complex selector with DataDisplayItems and is multiselectable, infinite scroll and search input.
 */
declare const SelectPopover: <T extends SelectableItem = SelectableItem>({ onApply, onCancel, onLoadMore, onSearch, onPendingSelectionChange, debounce, multiple, hasMore, isLoading, isLoadingSubtitle2, requiredSelectedItemsToApply, searchPlaceholder, items, anchorEl, itemsColorStyles, selectedItemsIds, popoverWidth, disableRestoreFocus, applyButtonText, maxSelectedItems, keepCurrentSelectionOnSearch, emptyListPlaceholder, disableApplyWithoutChanges, centeredInScreen, paddingContent, selectableItemComponent, itemsPerRow, itemsTitle }: SelectPopoverProps<T>) => import("react/jsx-runtime").JSX.Element;
export default SelectPopover;
