import type { PropsWithChildren } from "react";
import React from "react";
import { type AnyOption, type Option } from "./Autocomplete.types";
export interface MenuOptionProps {
    readonly isHighlighted: boolean;
    readonly option: AnyOption;
    readonly onOptionSelect: (option?: AnyOption) => void;
    /**
     * Whether to add separators between the options.
     */
    readonly addSeparators: boolean;
    readonly isSelected: boolean;
    readonly UNSAFE_className?: {
        option?: BaseMenuOptionProps["UNSAFE_className"];
        content?: MenuOptionContentProps["UNSAFE_className"];
        groupOption?: MenuGroupOptionProps["UNSAFE_className"];
    };
    readonly UNSAFE_style?: {
        option?: BaseMenuOptionProps["UNSAFE_style"];
        content?: MenuOptionContentProps["UNSAFE_style"];
        groupOption?: MenuGroupOptionProps["UNSAFE_style"];
    };
}
/**
 * The rendering of the default MenuOption
 */
export declare function MenuOption({ isHighlighted, option, onOptionSelect, isSelected, addSeparators, UNSAFE_className, UNSAFE_style, }: MenuOptionProps): React.JSX.Element;
interface MenuOptionContentProps {
    readonly UNSAFE_className?: {
        readonly icon?: string;
        readonly text?: string;
        readonly details?: string;
        readonly label?: string;
    };
    readonly UNSAFE_style?: {
        readonly icon?: React.CSSProperties;
        readonly text?: React.CSSProperties;
        readonly label?: React.CSSProperties;
        readonly details?: React.CSSProperties;
    };
    readonly option: Option;
    readonly isSelected: boolean;
}
export declare function MenuOptionContent({ option, isSelected, UNSAFE_className, UNSAFE_style, }: MenuOptionContentProps): React.JSX.Element;
export interface MenuGroupOptionProps {
    readonly option: AnyOption;
    readonly UNSAFE_className?: {
        heading?: string;
    };
    readonly UNSAFE_style?: {
        heading?: React.CSSProperties;
    };
}
/**
 * The rendering of the default MenuGroupOption
 */
export declare function MenuGroupOptions({ option, UNSAFE_className, UNSAFE_style, }: MenuGroupOptionProps): React.JSX.Element;
/**
 * The base component for the MenuGroupOption
 */
export interface BaseMenuGroupOptionProps extends PropsWithChildren {
    readonly UNSAFE_className?: string;
    readonly UNSAFE_style?: React.CSSProperties;
}
export declare function BaseMenuGroupOption({ children, UNSAFE_className, UNSAFE_style, }: BaseMenuGroupOptionProps): React.JSX.Element;
export interface BaseMenuOptionProps<GenericOption extends AnyOption = AnyOption> extends PropsWithChildren {
    readonly option?: GenericOption;
    readonly onOptionSelect?: (option?: GenericOption) => void;
    readonly isHighlighted: boolean;
    readonly addSeparators: boolean;
    readonly UNSAFE_className?: string;
    readonly UNSAFE_style?: React.CSSProperties;
}
/**
 * Renders the base option component. The component takes children and renders them inside a button.
 */
export declare function BaseMenuOption<GenericOption extends AnyOption = AnyOption>({ option, isHighlighted, onOptionSelect, addSeparators, children, UNSAFE_className, UNSAFE_style, }: BaseMenuOptionProps<GenericOption>): React.JSX.Element;
export {};
