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

type AvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
type AvatarLoadingStatus = 'idle' | 'loading' | 'loaded' | 'error';
interface AvatarProps {
    src?: string;
    alt?: string;
    fallback?: string;
    size?: AvatarSize;
}
interface AvatarAPI {
    /** ARIA attributes to spread on the root element */
    ariaProps: Partial<AccessibilityProps>;
    /** Data attributes for CSS styling hooks */
    dataAttributes: Record<string, string>;
    /** Image ARIA props */
    imageProps: {
        alt: string;
        role: string;
    };
    /** Fallback text (initials) */
    fallbackText: string;
    /** Current state */
    state: {
        size: AvatarSize;
        hasSrc: boolean;
    };
}
/**
 * Extract initials from a name or fallback string.
 * Takes first letter of first two words, uppercased.
 */
declare function getInitials(name: string): string;
declare function createAvatar(props?: AvatarProps): AvatarAPI;

declare const avatarTokens: TokenContract;
declare const avatarVariants: (props?: ({
    size?: "xs" | "sm" | "md" | "lg" | "xl" | undefined;
} & {
    className?: string;
}) | undefined) => string;
declare const avatarImageVariants: (props?: ({
    [x: string]: string | undefined;
} & {
    className?: string;
}) | undefined) => string;
declare const avatarFallbackVariants: (props?: ({
    size?: "xs" | "sm" | "md" | "lg" | "xl" | undefined;
} & {
    className?: string;
}) | undefined) => string;

export { type AvatarAPI, type AvatarLoadingStatus, type AvatarProps, type AvatarSize, avatarFallbackVariants, avatarImageVariants, avatarTokens, avatarVariants, createAvatar, getInitials };
