import type { ElementType, MouseEventHandler } from 'react';
import type { ButtonProps } from '../../Button';
import type { ConfirmActionProps } from '../../ConfirmAction';
export type CardGridMainActionBase<TItem> = {
    /**
     * Название действия (также используется как текст внутри кнопки)
     */
    name: string;
    /**
     * Если `true`, при клике на кнопку будет вызываться подтверждение действия
     */
    needConfirm?: boolean;
    /**
     * Поясняющий текст для подтверждения действия
     */
    confirmText?: ConfirmActionProps['text'];
    /**
     * Параметры кнопки подтверждения действия
     */
    confirmButtonProps?: ConfirmActionProps['confirmButtonProps'];
    /**
     * Если true, блокирует взаимодействие с actions
     */
    isBlockingOperation?: boolean;
    /**
     * Причина блокировки действия
     */
    disabledReason?: string;
    /**
     * Текст тултипа при наведении на кнопку
     */
    note?: string;
    /**
     * Причина блокировки строки во время загрузки
     */
    loadingNote?: string;
    /**
     * Обработчик действия
     */
    onClick?: (data: TItem) => void;
};
export type CardGridMainActionComponent<TItem, TComponent extends ElementType = ElementType> = CardGridMainActionBase<TItem> & Omit<ButtonProps<TComponent>, 'children' | 'onClick'>;
export type CardGridActionHandler<TItem> = (onClick: CardGridMainActionComponent<TItem>['onClick']) => MouseEventHandler<HTMLElement> | undefined;
export type CardGridMainAction<TItem> = CardGridMainActionComponent<TItem, ElementType>;
