import { AvatarData } from '../atoms/avatar.tsx';
/**
* Props for the Participant component
*/
export interface ParticipantProps {
/**
* Unique clientId for the participant.
* Used for avatar generation and display name when no custom avatar is provided.
*/
clientId: string;
/**
* Whether the participant is currently present/online in the room.
* Controls the presence indicator color (green for online, gray for offline).
*/
isPresent: boolean;
/**
* Whether this participant represents the current client.
* When true, displays "(you)" label and hides typing indicators for self.
*/
isSelf: boolean;
/**
* Whether the participant is currently typing in the chat.
* Shows animated typing dots and "typing..." text when true (except for current user).
*/
isTyping: boolean;
/**
* Optional custom avatar data for the participant.
* If not provided, uses the useUserAvatar hook to generate/retrieve avatar data.
*/
avatar?: AvatarData;
}
/**
* Participant component displays detailed information about a chat room participant
*
* Features:
* - Avatar display with automatic fallback to generated avatars via useUserAvatar hook
* - Real-time presence indicator (green dot for online, gray for offline)
* - Typing status with animated dots and text indicator
* - Current user identification with "(you)" label
* - Accessible design with proper ARIA attributes and screen reader support
* - Hover effects for interactive feel within participant lists
* - Theme-aware styling supporting light and dark modes
*
* Styling:
* • Status line showing either typing animation, online, or offline state
* • Proper text truncation for long participant names
*
*
* @example
* // Basic participant in a list
*
*
* @example
* // Current user with custom avatar
*
*
*
*/
export declare const Participant: ({ clientId, isPresent, isSelf, isTyping, avatar: propAvatar, }: ParticipantProps) => import("react/jsx-runtime").JSX.Element;