import { AccessibilityProps } from '../shared/index.js';

type AvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
type PresenceStatus = 'online' | 'offline' | 'away' | 'busy' | 'dnd';
interface AvatarUser {
    /** Unique identifier */
    id: string;
    /** Display name */
    name: string;
    /** Avatar image URL */
    src?: string;
    /** Online presence status */
    status?: PresenceStatus;
}
interface AvatarGroupProps {
    /** Array of users to display */
    users: AvatarUser[];
    /** Maximum number of visible avatars */
    max?: number;
    /** Avatar size */
    size?: AvatarSize;
}
interface AvatarGroupAPI {
    /** Users that are visible (within max limit) */
    visibleUsers: AvatarUser[];
    /** Number of overflow users */
    overflowCount: number;
    /** All overflow users (for tooltip/popup) */
    overflowUsers: AvatarUser[];
    /** ARIA props for the group container */
    ariaProps: Partial<AccessibilityProps> & Record<string, unknown>;
    /** Get ARIA props for an individual avatar */
    getAvatarAriaProps(user: AvatarUser): Record<string, unknown>;
    /** Get initials from a user's name */
    getInitials(name: string): string;
    /** Get the overflow badge ARIA props */
    overflowBadgeProps: Record<string, unknown>;
    /** Generated IDs */
    ids: {
        group: string;
        label: string;
    };
}
declare const AVATAR_SIZES: Record<AvatarSize, {
    width: number;
    fontSize: number;
}>;
declare function getInitials(name: string): string;
declare function createAvatarGroup(props: AvatarGroupProps): AvatarGroupAPI;

declare const avatarGroupStyles = "flex items-center -space-x-2";
declare const avatarVariants: (props?: ({
    size?: "xs" | "sm" | "md" | "lg" | "xl" | undefined;
} & {
    className?: string;
}) | undefined) => string;
declare const avatarOverflowBadgeVariants: (props?: ({
    size?: "xs" | "sm" | "md" | "lg" | "xl" | undefined;
} & {
    className?: string;
}) | undefined) => string;
declare const avatarImageStyles = "h-full w-full object-cover";
declare const avatarPresenceDotVariants: (props?: ({
    size?: "xs" | "sm" | "md" | "lg" | "xl" | undefined;
    status?: "online" | "offline" | "away" | "busy" | "dnd" | undefined;
} & {
    className?: string;
}) | undefined) => string;

export { AVATAR_SIZES, type AvatarGroupAPI, type AvatarGroupProps, type AvatarSize, type AvatarUser, type PresenceStatus, avatarGroupStyles, avatarImageStyles, avatarOverflowBadgeVariants, avatarPresenceDotVariants, avatarVariants, createAvatarGroup, getInitials };
