import React, { ReactElement } from 'react';
import { CustomModalContent, PickerModalState } from '../../hooks';
import { ComputedQuery, FiltersMap } from '@wix/bex-core';
import { FloatingNotification, FloatingNotificationProps, IconElement } from '@wix/design-system';
import { PickerProps } from '../Picker';
import { MaxSelectionLabelProps, MultipleSelection } from '../MaxSelection';
import { PickerContentState } from '../../state';
import { PickerListItemProps } from '../PickerListItemProps';
import { PickerContentBaseWrappedProps } from './PickerContentBaseWrapped';
import { CollectionSearchElement } from '../assertComponentType';
export interface PickerContentItemsSelectionProps<T, F extends FiltersMap> extends Partial<PickerContentBaseWrappedProps> {
    modalState: PickerModalState<T, F>;
    customContentButtonText?: string;
    customContentButtonPrefixIcon?: IconElement;
    /**
     * A callback to be called when the custom content button is clicked
     */
    customContentButtonOnClick?: (param: {
        onClose: (newItems?: T[]) => void;
    }) => void;
    customContent?: CustomModalContent<T>;
    /**
     * Shows "Select All" checkbox as a side action (overrides "customContent" prop).
     * If `multiple={number}` or `multiple={false}` are used, this prop does nothing.
     */
    showSelectAllCheckbox?: boolean;
    multiple?: MultipleSelection;
    /**
     * Shows a SingleSelectFilter component in a picker modal to filter items;
     */
    filterComponent?: ReactElement;
    /**
     * A function that render a item row in the selector list
     */
    renderItem: (item: T, index: number) => Partial<PickerListItemProps>;
    /**
     * A render function to be rendered when there're no items to show in the table.<br>
     * You can use the built in [`<CollectionEmptyState />`](./?path=/story/features-display-empty-states--collectionemptystate).<br>
     * The function accepts the following parameters
     *   * `hasAvailableItems`: Indicates whether other items might have been shown using other filtering / search
     *   * `query`: An instance of [ComputedQuery](./?path=/story/common-types--computedquery) that represents the query that resulted with an empty state
     */
    renderEmptyState?: (params: {
        hasAvailableItems: boolean;
        query: ComputedQuery<F>;
    }) => ReactElement<any, any> | null | undefined;
    renderError: PickerProps<T, F>['renderError'];
    /**
     * When set to `true`, the modal primary button will be always enabled.
     */
    enablePrimaryButton?: boolean;
    /**
     * Displays a search input in the picker modal.
     * Accepts a boolean or a custom CollectionSearch element as a parameter.
     * When passing `false`, no search input is displayed.
     * @default true
     * @external
     */
    search?: boolean | CollectionSearchElement;
    /**
     * @deprecated Use search={false} instead
     * Hides the search input of the picker
     */
    hideSearch?: boolean;
    /**
     * Function that returns label for multi selection like:
     * '2 items selected (24 max)`
     * This function accepts argument {num: number, max: number}
     */
    customMaxSelectionLabel?: MaxSelectionLabelProps['customLabel'];
    /**
     * Function that returns custom notification that will be displayed in the picker modal.
     * Useful to describe additional information about the selection (for instance how to increase limit of selected items).
     * @param data.selected - number of selected items
     * @param data.total - total number of items
     */
    renderCustomNotification?: (data: {
        selected?: number;
        total?: number;
    }) => ReactElement<FloatingNotificationProps, typeof FloatingNotification>;
    /** Displays count of selected items in <CustomModalLayout /> `sideActions` */
    showSelectedCount?: boolean;
}
interface PickerContentItemsSelectionStateProps<T, F extends FiltersMap> {
    state: PickerContentState<T, F>;
    renderPickerContent: (params: {
        state: PickerContentState<T, F>;
        renderItem: PickerContentItemsSelectionProps<T, F>['renderItem'];
    }) => ReactElement;
}
export type PickerContentItemsSelectionFullProps<T, F extends FiltersMap = FiltersMap> = PickerContentItemsSelectionProps<T, F> & PickerContentItemsSelectionStateProps<T, F>;
declare function _PickerContentItemsSelection<T, F extends FiltersMap = FiltersMap>(props: PickerContentItemsSelectionFullProps<T, F>): React.JSX.Element;
export declare const PickerContentItemsSelection: typeof _PickerContentItemsSelection & {
    displayName: string;
};
export {};
//# sourceMappingURL=PickerContentItemsSelection.d.ts.map