import { IconType, IconFontColor, IconFontSize, VisualSlotType, AnyIconDefinition } from './types';
import { BadgeProps } from './badge';
import { IconProps } from './icon';
import { TooltipProps } from './tooltip';
/**
 * Configuración del icono principal del botón
 * Extiende todas las props opcionales de Icon para máxima flexibilidad
 */
export interface ButtonIconConfig extends Omit<IconProps, 'name'> {
    /** Icono a mostrar (mapeado desde IconProps.name) */
    icon: IconType | AnyIconDefinition;
    /** Si el icono debe mostrarse */
    show?: boolean;
    /** @deprecated Usar colorDuotonePrimary en su lugar */
    iconDuotonePrimary?: IconFontColor;
    /** @deprecated Usar colorDuotoneSecondary en su lugar */
    iconDuotoneSecondary?: IconFontColor;
    /** @deprecated Usar opacityDuotonePrimary en su lugar */
    iconDuotoneOpacityPrimary?: number;
    /** @deprecated Usar opacityDuotoneSecondary en su lugar */
    iconDuotoneOpacitySecondary?: number;
}
/**
 * Configuración del badge del botón
 * Extiende todas las props opcionales de Badge para máxima flexibilidad
 */
export interface ButtonBadgeConfig extends Omit<BadgeProps, 'label'> {
    /** Etiqueta del badge */
    label?: string;
    /** Si el badge debe mostrarse */
    show?: boolean;
}
/**
 * Configuración de un slot del botón (izquierdo o derecho)
 */
export interface ButtonSlotConfig {
    /** Icono del slot */
    icon?: VisualSlotType;
    /**
     * Tamaño del icono del slot (sobrescribe el mapeo por tamaño del botón).
     * Útil en Switch / tabs donde el control es pequeño y se quiere otro tamaño de icono.
     */
    iconFontSize?: IconFontSize;
    /** Color del icono */
    colorIcon?: IconFontColor;
    /** Handler de click del slot */
    onClick?: (e: React.MouseEvent<HTMLDivElement>) => void;
    /** Props de duotone para el icono del slot */
    iconDuotonePrimary?: IconFontColor;
    iconDuotoneSecondary?: IconFontColor;
    iconDuotoneOpacityPrimary?: number;
    iconDuotoneOpacitySecondary?: number;
    /** Si el slot debe mostrarse */
    show?: boolean;
}
/**
 * Configuración del tooltip del botón
 * Extiende todas las props opcionales de Tooltip para máxima flexibilidad
 */
export interface ButtonTooltipConfig extends Omit<TooltipProps, 'children' | 'label'> {
    /** Texto del tooltip */
    label?: string;
    /** Si el tooltip debe mostrarse */
    show?: boolean;
}
//# sourceMappingURL=buttonConfig.d.ts.map