import * as React from "react";
export type MultiSelectOption = {
    value: string;
    label: React.ReactNode;
    /**
     * Used for filtering (and can optionally be reused by callers to display
     * a human-readable summary elsewhere).
     */
    textValue?: string;
    disabled?: boolean;
};
export type MultiSelectProps = {
    options: MultiSelectOption[];
    value: readonly string[];
    onValueChange: (next: string[]) => void;
    disabled?: boolean;
    /**
     * If provided, MultiSelect will render hidden inputs for form submissions.
     * This is useful for traditional `<form>` usage.
     */
    name?: string;
    /**
     * Class applied to the outer container (wraps search + list).
     */
    className?: string;
    /**
     * Class applied to the scrollable list container.
     */
    listClassName?: string;
    /**
     * Accessible name for the list when there is no visible label.
     * Prefer a visible label when possible.
     */
    "aria-label"?: string;
    /**
     * Opt out of built-in filtering input. (Note: if you rely on `<label htmlFor>`
     * binding from a wrapper like FieldFrame, keep this enabled and pass `searchId`.)
     */
    searchable?: boolean;
    searchId?: string;
    searchAriaDescribedBy?: string;
    searchPlaceholder?: string;
    emptyMessage?: string;
};
export declare function MultiSelect({ options, value, onValueChange, disabled, name, className, listClassName, searchable, searchId, searchAriaDescribedBy, searchPlaceholder, emptyMessage, "aria-label": ariaLabel, }: MultiSelectProps): React.ReactElement;
