import { type ReactElement, type ReactNode } from "react";
import { type IDropdownBodyRenderProps, type IDropdownButtonRenderProps } from "../Dropdown/Dropdown.js";
import { type IInvertableSelectRenderActionsProps, type IInvertableSelectRenderItemProps, type IInvertableSelectRenderNoDataProps, type IInvertableSelectRenderSearchBarProps, type IInvertableSelectRenderStatusBarProps } from "../List/InvertableSelect/InvertableSelect.js";
import { type OverlayPositionType } from "../typings/overlay.js";
import type { IAlignPoint } from "../typings/positioning.js";
/**
 * @internal
 */
export interface IDropdownInvertableSelectProps<T> {
    /**
     * Text to show before the selection text.
     */
    title?: string;
    /**
     * List of options to show in the select.
     */
    options: T[];
    /**
     * Class name to apply to the dropdown.
     */
    className?: string;
    /**
     * Class name to apply to the dropdown body.
     */
    bodyClassName?: string;
    /**
     * Function to get the title of an item.
     */
    getItemTitle: (item: T) => string;
    /**
     * Function to retrieve the unique key of an item.
     */
    getItemKey: (item: T) => string;
    /**
     * Callback function that is called when the selection changes.
     */
    onChange: (selectedItems: T[], isInverted: boolean) => void;
    /**
     * Width of the select.
     */
    width?: number;
    /**
     * Alignment points for the dropdown.
     */
    alignPoints?: IAlignPoint[];
    /**
     * Initial selected items.
     */
    initialValue?: T[];
    /**
     * Indicates whether the initial selection is inverted.
     */
    initialIsInverted?: boolean;
    /**
     * Initial search text.
     */
    initialSearchString?: string;
    /**
     * Header to show above the select.
     */
    header?: ReactNode;
    /**
     * Render function for the status bar.
     */
    renderStatusBar?: (props: IInvertableSelectRenderStatusBarProps<T>) => ReactElement;
    /**
     * Render function for the search bar.
     */
    renderSearchBar?: (props: IInvertableSelectRenderSearchBarProps) => ReactElement;
    /**
     * Render function for the no data state.
     */
    renderNoData?: (props: IInvertableSelectRenderNoDataProps) => ReactElement;
    /**
     * Render function for the button.
     */
    renderButton?: (props: IDropdownButtonRenderProps) => ReactNode;
    /**
     * Render function for the actions.
     */
    renderActions?: (props: IDropdownBodyRenderProps) => ReactElement;
    /**
     * Render function for the item.
     */
    renderItem?: (props: IInvertableSelectRenderItemProps<T>) => ReactElement;
    /**
     * Render function for list actions
     */
    renderListActions?: (props: IInvertableSelectRenderActionsProps) => ReactElement;
    /**
     * Overlay position type.
     */
    overlayPositionType?: OverlayPositionType;
    /**
     * On open handler
     */
    onOpen?: () => void;
    /**
     * On close handler
     */
    onClose?: () => void;
    /**
     * Close on escape
     */
    closeOnEscape?: boolean;
    /**
     * Accessibility configuration for the dropdown.
     */
    accessibilityConfig?: {
        triggerRole?: "button" | "combobox";
        popupRole?: "listbox" | "tree" | "grid" | "dialog";
        popupLabel?: string;
    };
}
/**
 * @internal
 */
export declare function DropdownInvertableSelect<T>(props: IDropdownInvertableSelectProps<T>): import("react/jsx-runtime").JSX.Element;
export interface IDropdownInvertableSelectActionsProps {
    onApply: () => void;
    onCancel: () => void;
    isApplyDisabled?: boolean;
}
//# sourceMappingURL=DropdownInvertableSelect.d.ts.map