export interface ChatMessage { id: number; senderId: string; message: string; sentAt: number; } export type Component

= React.ComponentType

| React.ForwardRefExoticComponent

| React.FC

| keyof React.ReactHTML; export interface ChatComponents { ChatMinimized?: Component; ChatExpanded?: Component; ChatHeader?: Component; MessageList?: Component; MessageRow?: Component; MessageAvatar?: Component; MessageBody?: Component; ChatInput?: Component; ConnectPrompt?: Component; WelcomeMessage?: Component; } export interface ChatProps { rtKey: string; chatName?: string | React.ReactElement; hideWhenDisconnected?: boolean; components?: ChatComponents; } export interface ChatMinimizedProps { chatName: string | React.ReactElement; expandChat: () => void; } export interface ChatExpandedProps extends ChatHeaderProps, ChatInputProps, MessageListProps { ChatHeader: Component; MessageList: Component; MessageRow: Component; MessageAvatar: Component; MessageBody: Component; ChatInput: Component; } export interface ChatHeaderProps { chatName: string | React.ReactElement; minimizeChat: () => void; } export interface MessageRowProps extends MessageBodyProps, MessageAvatarProps { MessageAvatar: Component; MessageBody: Component; } export interface MessageListProps { messages: ChatMessage[]; MessageRow: Component; MessageAvatar: Component; MessageBody: Component; ConnectPrompt: Component; WelcomeMessage: Component; } export interface MessageAvatarProps { senderId: string; isMe: boolean; } export interface MessageBodyProps extends Omit { isMe: boolean; formatTime?: (ts: number) => string; } export interface ChatInputProps { sendMessage: (message: string) => void; }