import { CSSProperties, PropsWithChildren, ReactChild, ReactFragment, ReactNode, ReactPortal } from "react";
import { IconTypesKeys } from "../../atoms/Icon";
export declare type ComplexOptionText = ReactNode | ReactChild | ReactFragment | ReactPortal | string;
export interface IBaseOption {
    nullable?: boolean;
    selected?: boolean;
    focused?: boolean;
    disabled?: boolean;
    withPadding?: boolean;
    heading?: boolean;
    primary?: boolean;
    withCheckbox?: boolean;
}
export interface IOption<Text = string> {
    icon?: IconTypesKeys;
    text?: Text;
    value?: string | null;
    children?: IOption<ComplexOptionText>[] | IOption<ComplexOptionText>[][] | null;
    disabled?: boolean;
    description?: string;
    heading?: boolean;
    title?: boolean;
    opened?: boolean;
    primary?: boolean;
    indeterminate?: boolean;
    prefix?: ReactNode;
    suffix?: ReactNode;
    style?: CSSProperties;
}
export declare type IJSXOption = IOption<ReactNode>;
export interface IOptionComponentProps {
    item: IOption<ComplexOptionText>;
    focusedValue?: string | number | null;
    multiple?: boolean;
    selectedOptions?: IOption<ComplexOptionText>[];
    select: (item: IOption<ComplexOptionText>) => void;
    className?: string;
    withPadding?: boolean;
    heading?: boolean;
}
export interface IMenuProps extends Omit<IOptionComponentProps, "item" | "select">, PropsWithChildren {
    options?: IOption<ComplexOptionText>[] | IOption<ComplexOptionText>[][] | null;
    title?: ReactNode;
    withPadding?: boolean;
    selectOption?(items?: IOption<ComplexOptionText>[], item?: IOption<ComplexOptionText>): void;
    setFocusedOption?(item: IOption<ComplexOptionText>): void;
    loading?: boolean;
}
export interface IChildOptionProps {
    text?: string;
    value?: string;
    disabled?: boolean;
    dropdown?: {
        nullableColor: string;
    };
}
