import { ComponentProps, DetailedHTMLProps, HTMLAttributes, ReactElement } from "react";
import Input from "../Input";
import { AnchoredTooltipAlignment } from "../AnchoredTooltip/AnchoredTooltip";
export type SelectItem = ({
    label: string;
    value: string;
} | {
    label: ReactElement;
    labelStr: string;
    value: string;
}) & Omit<DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLElement>, "ref" | "color">;
type SingleMode<I extends SelectItem> = {
    mode?: "single";
    onClick: (i: I) => void;
} & ({
    selected?: I["value"];
    label: string;
} | {
    selected: I["value"];
    label?: string;
});
type MultiMode<I extends SelectItem> = {
    mode: "multi";
    onClick: (i: I[]) => void;
    selected?: I["value"][];
};
/**
 * A dropdown select
 **/
declare function Select<I extends SelectItem>({ items, label, loading, rootClassName, dropdownClassName: _drop, alignTo, filter, ...otherProps }: {
    loading?: boolean;
    items: Readonly<I[]>;
    rootClassName?: string;
    dropdownClassName?: string;
    alignTo?: AnchoredTooltipAlignment;
    filter?: (item: I, term: string) => boolean;
} & (SingleMode<I> | MultiMode<I>) & Omit<ComponentProps<typeof Input>, "selected" | "onClick" | "onSelect">): import("react/jsx-runtime").JSX.Element;
/**
 * A dropdown select component that lets users choose one or more options from a list.
 * It can show a loading state and supports filtering through search.
 */
export default Select;
