import type { AvatarProps } from '@mui/material/Avatar';
import type { MenuProps } from '@mui/material/Menu';
import type { PropsWithChildren, ReactElement, ReactNode } from 'react';
import type { SyncFunctionComponent } from '../types/SyncFunctionComponent';
import type { WithoutEmotionSpecific } from '../types/WithoutEmotionSpecific';
export type ProfileMenuItemData = {
    icon?: ReactNode;
    title: ReactNode;
    onClick?: () => void;
    /**
     * @example
     *  const renderItem: ProfileMenuItemData['render'] = ({ title, icon }) => (
     *     <MenuItem>
     *       <Typography variant="caption" color="primary">
     *         {title}
     *       </Typography>
     *       <IconButton variant="text">{icon}</IconButton>
     *     </MenuItem>
     *   );
     */
    render?: SyncFunctionComponent<Omit<ProfileMenuItemData, 'render'>>;
};
export type ProfileProps = {
    /**
     * Имя профиля
     */
    displayName: string;
    /**
     * Дополнительная информация (например email или username)
     */
    annotation?: string;
    /**
     * Аватарка профиля
     */
    avatar?: AvatarProps;
    /**
     * Кастомный рендер menu. Перекрывает menuList и exitButton
     */
    menu?: (props: PropsWithChildren<WithoutEmotionSpecific<MenuProps>>) => ReactElement;
    /**
     * Рендер menu через массив данных. Перекрывает menu и может использоваться с exitButton
     */
    menuList?: ProfileMenuItemData[];
    /**
     * Отображение кнопки выхода и действие на нее
     */
    exitButton?: {
        onClick: () => void;
    };
    /**
     * Скрытие персональных данных от инструментов мониторинга
     */
    isHidePersonalData?: boolean;
    /**
     * Если true, отображается skeleton
     */
    isLoading?: boolean;
};
