import React, { ReactNode } from 'react'; import { AlertProps, AvatarProps, LabelGroupProps } from '@patternfly/react-core'; import { ActionProps } from '../ResponseActions/ResponseActions'; import { SourcesCardProps } from '../SourcesCard'; import { QuickStart, QuickstartAction } from './QuickStarts/types'; import QuickResponse from './QuickResponse/QuickResponse'; import { UserFeedbackProps } from './UserFeedback/UserFeedback'; import { UserFeedbackCompleteProps } from './UserFeedback/UserFeedbackComplete'; import { TableProps } from '@patternfly/react-table'; import { PluggableList } from 'react-markdown/lib'; export interface MessageAttachment { /** Name of file attached to the message */ name: string; /** Unique identifier of file attached to the message */ id?: string | number; /** Callback for when attachment label is clicked */ onClick?: (event: React.MouseEvent, name: string, id?: string | number) => void; /** Callback for when attachment label is closed */ onClose?: (event: React.MouseEvent, name: string, id?: string | number) => void; /** Whether file is loading */ isLoading?: boolean; /** Aria label for attachment close button */ closeButtonAriaLabel?: string; /** Custom test id for the language in the attachment component */ languageTestId?: string; /** Custom test id for the loading spinner in the attachment component */ spinnerTestId?: string; } export interface MessageExtraContent { /** Content to display before the main content */ beforeMainContent?: ReactNode; /** Content to display after the main content */ afterMainContent?: ReactNode; /** Content to display at the end */ endContent?: ReactNode; } export interface MessageProps extends Omit, 'role'> { /** Unique id for message */ id?: string; /** Role of the user sending the message */ role: 'user' | 'bot'; /** Message content */ content?: string; /** Extra Message content */ extraContent?: MessageExtraContent; /** Name of the user */ name?: string; /** Avatar src for the user */ avatar: string; /** Timestamp for the message */ timestamp?: string; /** Set this to true if message is being loaded */ isLoading?: boolean; /** Array of attachments attached to a message */ attachments?: MessageAttachment[]; /** Props for message actions, such as feedback (positive or negative), copy button, share, and listen */ actions?: { [key: string]: ActionProps; }; /** Sources for message */ sources?: SourcesCardProps; /** Label for the English word "AI," used to tag messages with role "bot" */ botWord?: string; /** Label for the English "Loading message," displayed to screenreaders when loading a message */ loadingWord?: string; codeBlockProps?: { 'aria-label'?: string; className?: string; }; /** Props for quick responses */ quickResponses?: QuickResponse[]; /** Props for quick responses container */ quickResponseContainerProps?: Omit; /** Props for user feedback card */ userFeedbackForm?: Omit; /** Props for user feedback response */ userFeedbackComplete?: Omit; /** Whether avatar is round */ hasRoundAvatar?: boolean; /** Any additional props applied to the avatar, for additional customization */ avatarProps?: Omit; /** Props for QuickStart card */ quickStarts?: { quickStart: QuickStart; onSelectQuickStart: (id?: string) => void; minuteWord?: string; minuteWordPlural?: string; prerequisiteWord?: string; prerequisiteWordPlural?: string; quickStartButtonAriaLabel?: string; className?: string; onClick?: () => void; action?: QuickstartAction; }; /** Turns the container into a live region so that changes to content within the Message, such as appending a feedback card, are reliably announced to assistive technology. */ isLiveRegion?: boolean; /** Ref applied to message */ innerRef?: React.Ref; /** Props for table message. It is important to include a detailed aria-label that describes the purpose of the table. */ tableProps?: Required> & TableProps; /** Additional rehype plugins passed from the consumer */ additionalRehypePlugins?: PluggableList; /** Whether to open links in message in new tab. */ openLinkInNewTab?: boolean; /** Optional inline error message that can be displayed in the message */ error?: AlertProps; } export declare const MessageBase: React.FunctionComponent; declare const Message: React.ForwardRefExoticComponent & React.RefAttributes>; export default Message;