import * as React from "react";
import { ChangeEvent } from "react";
export type MultiSelectValue = string | number | boolean;
interface MultiSelectContextProps<T extends MultiSelectValue = string> {
    fieldValue?: T[];
    onItemClick: (v: T) => void;
}
export declare const MultiSelectContext: React.Context<MultiSelectContextProps<any>>;
/**
 * Props for MultiSelect component
 */
interface MultiSelectProps<T extends MultiSelectValue = string> {
    modalPopover?: boolean;
    className?: string;
    open?: boolean;
    name?: string;
    id?: string;
    onOpenChange?: (open: boolean) => void;
    value?: T[];
    inputClassName?: string;
    onChange?: React.EventHandler<ChangeEvent<HTMLSelectElement>>;
    onValueChange?: (updatedValue: T[]) => void;
    placeholder?: React.ReactNode;
    size?: "smallest" | "small" | "medium" | "large";
    useChips?: boolean;
    label?: React.ReactNode | string;
    disabled?: boolean;
    error?: boolean;
    position?: "item-aligned" | "popper";
    endAdornment?: React.ReactNode;
    multiple?: boolean;
    includeSelectAll?: boolean;
    includeClear?: boolean;
    inputRef?: React.RefObject<HTMLButtonElement | null>;
    padding?: boolean;
    invisible?: boolean;
    children: React.ReactNode;
    renderValues?: (values: T[]) => React.ReactNode;
    portalContainer?: HTMLElement | null;
}
export declare const MultiSelect: React.ForwardRefExoticComponent<MultiSelectProps<string> & React.RefAttributes<HTMLButtonElement>>;
export interface MultiSelectItemProps<T extends MultiSelectValue = string> {
    value: T;
    children?: React.ReactNode;
    className?: string;
}
export declare const MultiSelectItem: React.MemoExoticComponent<(<T extends MultiSelectValue = string>({ children, value, className }: MultiSelectItemProps<T>) => React.JSX.Element)>;
export {};
