import { type ReactElement, type RefObject } from "react";
import { type IInvertableSelectRenderErrorProps, type IInvertableSelectRenderLoadingProps, type IInvertableSelectRenderNoDataProps, type IInvertableSelectRenderSearchBarProps, type IInvertableSelectRenderStatusBarProps } from "./InvertableSelect.js";
/**
 * Properties of List item component implementation
 *
 * @internal
 */
export interface IInvertableSelectVirtualisedRenderItemProps<T> {
    /**
     * Item of list
     */
    item: T;
    /**
     * Title of the item
     */
    title: string;
    /**
     * Indicate that item is selected
     */
    isSelected: boolean;
    /**
     * Indicate which action of the list is focused.
     */
    focusedAction?: string;
    /**
     * Add item to selection callback
     */
    onSelect: () => void;
    /**
     * Remove item from selection
     */
    onDeselect: () => void;
    /**
     * Select item only
     */
    onSelectOnly: () => void;
    /**
     * The ref for the parent list element. Used for focus management.
     */
    listRef?: RefObject<HTMLElement>;
    /**
     * The index of the item in the list. Used for accessibility purposes.
     */
    index?: number;
    /**
     * The number of items in the list. Used for accessibility purposes.
     */
    itemsCount?: number;
}
/**
 * @internal
 */
export interface IInvertableSelectVirtualisedRenderActionsProps {
    checked: boolean;
    onChange: (value: boolean) => void;
    onToggle: () => void;
    totalItemsCount: number;
    hideTotalItemsCount?: boolean;
    isFiltered: boolean;
    isPartialSelection: boolean;
    isVisible: boolean;
    onApplyButtonClick?: () => void;
}
/**
 * @internal
 */
export interface IInvertableSelectVirtualisedProps<T> {
    className?: string;
    width?: number;
    height?: number;
    adaptiveWidth?: boolean;
    adaptiveHeight?: boolean;
    isSingleSelect?: boolean;
    items: T[];
    totalItemsCount?: number;
    hideTotalItemsCount?: boolean;
    itemHeight?: number;
    getItemTitle: (item: T) => string;
    getItemKey: (item: T) => string;
    isItemQuestionMarkEnabled?: (item: T) => boolean;
    isInverted: boolean;
    selectedItems: T[];
    selectedItemsLimit?: number;
    onSelect?: (items: T[], isInverted: boolean) => void;
    numberOfHiddenSelectedItems?: number;
    searchString?: string;
    searchPlaceholder?: string;
    onSearch?: (search: string) => void;
    error?: any;
    canSubmitOnKeyDown?: boolean;
    isLoading?: boolean;
    nextPageItemPlaceholdersCount?: number;
    isLoadingNextPage?: boolean;
    representAs?: "grid" | "listbox";
    onLoadNextPage?: () => void;
    onApplyButtonClick?: () => void;
    renderError?: (props: IInvertableSelectRenderErrorProps) => ReactElement;
    renderLoading?: (props: IInvertableSelectRenderLoadingProps) => ReactElement;
    renderSearchBar?: (props: IInvertableSelectRenderSearchBarProps) => ReactElement;
    renderNoData?: (props: IInvertableSelectRenderNoDataProps) => ReactElement;
    renderItem?: (props: IInvertableSelectVirtualisedRenderItemProps<T>) => ReactElement;
    renderStatusBar?: (props: IInvertableSelectRenderStatusBarProps<T>) => ReactElement;
    renderActions?: (props: IInvertableSelectVirtualisedRenderActionsProps) => ReactElement;
}
/**
 * @internal
 */
export declare function InvertableSelectVirtualised<T>(props: IInvertableSelectVirtualisedProps<T>): import("react/jsx-runtime").JSX.Element;
//# sourceMappingURL=InvertableSelectVirtualised.d.ts.map