import { AvatarColor, AvatarTheme, AvatarSize } from '../types';
/**
 * ============================================
 * AVATAR UTILS - ATOMIC DESIGN
 * ============================================
 * Funciones auxiliares para generar clases y procesar datos
 */
/**
 * Obtiene las clases de color según el tema
 *
 * @param color - Color del avatar
 * @param theme - Tema de estilo (solid o soft)
 * @param avatarType - Tipo de avatar (para personalizar letter/icon)
 * @param disabled - Si está deshabilitado
 * @returns Clases de Tailwind para el color
 *
 * @example
 * getColorClasses('blue', 'solid')
 * // => 'ui-bg-blue-600 ui-text-white'
 */
export declare const getColorClasses: (color: AvatarColor, theme: AvatarTheme, avatarType?: "icon" | "letter", disabled?: boolean) => string;
/**
 * Obtiene las clases de tamaño del avatar
 *
 * @param size - Tamaño del avatar
 * @returns Clases de Tailwind para el tamaño
 *
 * @example
 * getSizeClasses('md')
 * // => 'ui-w-40 ui-h-40 ui-text-[12px]'
 */
export declare const getSizeClasses: (size: AvatarSize) => string;
/**
 * Obtiene las clases de borde (stroke) según el tipo de avatar
 *
 * @param stroke - Si debe mostrar borde
 * @param avatarType - Tipo de avatar ('people', 'icon', 'letter')
 * @param color - Color del avatar (solo para icon/letter)
 * @param theme - Tema (solo para icon/letter)
 * @returns Clases de Tailwind para el borde
 *
 * @example
 * // People avatar - borde gris fijo
 * getStrokeClasses(true, 'people')
 * // => 'ui-border-2 ui-border-default'
 *
 * @example
 * // Icon/Letter con soft - borde del color del background soft
 * getStrokeClasses(true, 'icon', 'blue', 'soft')
 * // => 'ui-border-2 ui-border-surface-all-colors-blue'
 */
export declare const getStrokeClasses: (stroke: boolean, avatarType?: "people" | "icon" | "letter", color?: AvatarColor, theme?: AvatarTheme, disabled?: boolean) => string;
/**
 * Obtiene las clases de forma (pill)
 *
 * @param pill - true = circular, false = redondeado
 * @param size - Tamaño del avatar (para ajustar radios pequeños)
 * @returns Clases de Tailwind para la forma
 *
 * @example
 * getShapeClasses(true)
 * // => 'ui-rounded-control-pill'
 */
export declare const getShapeClasses: (pill: boolean, size?: AvatarSize) => string;
/**
 * Genera las clases base del contenedor del avatar
 *
 * Combina todas las clases necesarias para el avatar:
 * - Layout (flex, centrado)
 * - Tamaño
 * - Borde (si aplica)
 * - Forma (circular o redondeado)
 * - Estado disabled
 * - Clases personalizadas
 *
 * @param size - Tamaño del avatar
 * @param stroke - Si debe mostrar borde
 * @param pill - Forma del avatar
 * @param disabled - Si está deshabilitado
 * @param grayscaleWhenDisabled - Si aplica filtro grayscale cuando está disabled
 * @param className - Clases CSS adicionales
 * @param avatarType - Tipo de avatar (para stroke)
 * @param color - Color del avatar (para stroke)
 * @param theme - Tema (para stroke)
 * @returns Clases combinadas para el avatar
 */
export declare const getBaseClasses: (size: AvatarSize, stroke: boolean, pill: boolean, disabled: boolean, grayscaleWhenDisabled: boolean, className?: string, avatarType?: "people" | "icon" | "letter", color?: AvatarColor, theme?: AvatarTheme) => string;
/**
 * Trunca el texto a un máximo de caracteres
 *
 * Útil para avatares tipo 'letter' que muestran iniciales,
 * números de contador (99+), o indicadores (+1)
 *
 * @param text - Texto a truncar
 * @param maxLength - Longitud máxima (default: 3)
 * @returns Texto truncado en mayúsculas
 *
 * @example
 * truncateText('hello', 3) // => 'HEL'
 * truncateText('99+', 3)   // => '99+'
 * truncateText('abc')      // => 'ABC'
 */
export declare const truncateText: (text: string, maxLength?: number) => string;
/**
 * Valida si una URL es válida
 *
 * Usado para validar URLs de imágenes en avatares tipo 'people'
 *
 * @param url - URL a validar
 * @returns true si es una URL válida
 *
 * @example
 * isValidUrl('https://example.com/image.jpg') // => true
 * isValidUrl('not-a-url')                      // => false
 */
export declare const isValidUrl: (url: string) => boolean;
//# sourceMappingURL=index.d.ts.map