import { IconProp, IconDefinition } from '@fortawesome/fontawesome-svg-core';
import { IconType } from '../../../shared/types/types';
type AnyIconDefinition = IconProp | IconDefinition | {
    icon: IconDefinition['icon'];
    prefix?: string;
};
/**
 * ============================================
 * AVATAR TYPES - ATOMIC DESIGN
 * ============================================
 * Definición de tipos para el componente Avatar
 * siguiendo principios de Atomic Design
 */
/**
 * Tamaños disponibles para el Avatar
 * @type AvatarSize
 */
export type AvatarSize = 'xxs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';
/**
 * Colores disponibles para temas en icon y letter
 * @type AvatarColor
 */
export type AvatarColor = 'blue' | 'red' | 'orange' | 'yellow' | 'lime' | 'green' | 'cyan' | 'azure' | 'violet' | 'magenta' | 'rose';
/**
 * Temas de estilo para icon y letter
 * - solid: Fondo sólido con texto blanco
 * - soft: Fondo claro con texto oscuro
 * @type AvatarTheme
 */
export type AvatarTheme = 'solid' | 'soft';
/**
 * Tipos de Avatar disponibles
 * - people: Muestra imagen de persona
 * - icon: Muestra un icono
 * - letter: Muestra letras/números (máx 3 caracteres)
 * @type AvatarType
 */
export type AvatarType = 'people' | 'icon' | 'letter';
/**
 * ============================================
 * BASE PROPS
 * ============================================
 * Props compartidas por todos los tipos de Avatar
 */
interface BaseAvatarProps {
    /** Tamaño del avatar (default: 'md') */
    size?: AvatarSize;
    /** Clases CSS adicionales */
    className?: string;
    /** Agrega borde de 2px (default: false) */
    stroke?: boolean;
    /** Forma: true = circular, false = border-radius 10px (default: true) */
    pill?: boolean;
    /** Estado deshabilitado (default: false) */
    disabled?: boolean;
    /** Aplica filtro grayscale cuando está disabled (default: true) */
    grayscaleWhenDisabled?: boolean;
    /** Indicador de status (punto de color o icono) */
    status?: AvatarStatusProps;
}
/**
 * ============================================
 * PEOPLE AVATAR PROPS
 * ============================================
 * Avatar que muestra una imagen de persona
 */
export interface PeopleAvatarProps extends BaseAvatarProps {
    type: 'people';
    /** URL de la imagen (si no se provee, se usa el icono por defecto) */
    src?: string;
    /** Texto alternativo para la imagen */
    alt?: string;
}
/**
 * ============================================
 * ICON AVATAR PROPS
 * ============================================
 * Avatar que muestra un icono (por defecto UserOutlined, pero personalizable)
 */
export interface IconAvatarProps extends BaseAvatarProps {
    type: 'icon';
    /** Tema de estilo (default: 'solid') */
    theme?: AvatarTheme;
    /** Color del avatar (default: 'blue') */
    color?: AvatarColor;
    /** Icono personalizado (default: UserOutlined) */
    icon?: IconType | AnyIconDefinition;
}
/**
 * ============================================
 * AVATAR STATUS TYPES
 * ============================================
 * Indicador de estado para el Avatar
 */
/** Tipo de status: color sólido o icono */
export type AvatarStatusType = 'color' | 'icon';
/** Colores disponibles para el status */
export type AvatarStatusColor = 'brand' | 'success' | 'warning' | 'danger' | 'disabled';
/** Tamaños del status */
export type AvatarStatusSize = 'sm' | 'md' | 'lg';
/** Props del indicador de status */
export interface AvatarStatusProps {
    /** Tipo de status: 'color' muestra un punto de color, 'icon' muestra un icono */
    type?: AvatarStatusType;
    /** Color del status */
    color?: AvatarStatusColor;
    /** Tamaño del status */
    size?: AvatarStatusSize;
    /** Icono personalizado (solo para type='icon') */
    icon?: IconType | AnyIconDefinition;
}
/**
 * ============================================
 * LETTER AVATAR PROPS
 * ============================================
 * Avatar que muestra letras, números o símbolos
 * Ideal para iniciales o contadores (ej: "AB", "99+", "+1")
 */
export interface LetterAvatarProps extends BaseAvatarProps {
    type: 'letter';
    /** Texto a mostrar (máximo 3 caracteres, se trunca automáticamente) */
    text: string;
    /** Tema de estilo (default: 'solid') */
    theme?: AvatarTheme;
    /** Color del avatar (default: 'blue') */
    color?: AvatarColor;
}
/**
 * ============================================
 * AVATAR PROPS (UNION TYPE)
 * ============================================
 * Union type que representa todas las posibles props del Avatar
 */
export type AvatarProps = PeopleAvatarProps | IconAvatarProps | LetterAvatarProps;
/**
 * ============================================
 * AVATAR STACK ITEM
 * ============================================
 * Tipo flexible para elementos del stack.
 * Si tiene `src`, automáticamente se usa type='people' (sobrescribe cualquier type especificado).
 * Si tiene `text`, se usa type='letter'.
 * Si no tiene `src` ni `text`, se usa type='icon'.
 */
export type AvatarStackItem = AvatarProps | (BaseAvatarProps & {
    src?: string;
    alt?: string;
    type?: 'people';
}) | (BaseAvatarProps & {
    text: string;
    type?: 'letter';
    theme?: AvatarTheme;
    color?: AvatarColor;
}) | (BaseAvatarProps & {
    type?: 'icon';
    theme?: AvatarTheme;
    color?: AvatarColor;
});
/**
 * ============================================
 * AVATAR WITH STACK PROPS
 * ============================================
 * Props del Avatar con soporte para stack (avatares apilados)
 *
 * Nota: Si un elemento del stack tiene `src`, automáticamente
 * se sobrescribe el type a 'people', incluso si se especifica otro type.
 */
export interface AvatarWithStackProps {
    /** Array de avatares para mostrar en stack. Si tiene `src`, se usa type='people' automáticamente */
    stack: AvatarStackItem[];
    /** Tamaño del avatar (default: 'md') - se aplica a todos los avatares del stack */
    size?: AvatarSize;
    /** Clases CSS adicionales para el contenedor del stack */
    className?: string;
    /** Número máximo de avatares a mostrar. Si hay más, se muestra un contador con el número restante (ej: "+5") */
    maxVisible?: number;
    /** Color del avatar contador cuando se excede maxVisible (default: 'blue') */
    counterColor?: AvatarColor;
    /** Tema del avatar contador cuando se excede maxVisible (default: 'solid') */
    counterTheme?: AvatarTheme;
    /** Agrega borde de 2px a todos los avatares del stack (default: false) */
    stroke?: boolean;
}
export {};
//# sourceMappingURL=index.d.ts.map