/**-----------------------------------------------------------------------------------------
* Copyright © 2026 Progress Software Corporation. All rights reserved.
* Licensed under commercial license. See LICENSE.md in the project root for more information
*-------------------------------------------------------------------------------------------*/
import { Action } from './action.interface';
import { Attachment, AttachmentLayout } from './attachment.interface';
import { ChatFile } from './chat-file-interface';
import { MessageStatus } from './message-status.interface';
import { User } from './user.interface';
/**
 * Represents a Chat message ([see example](https://www.telerik.com/kendo-angular-ui/components/conversational-ui/chat/data-binding)).
 *
 */
export interface Message {
    /**
     * Sets a unique ID for the message.
     */
    id: string | number;
    /**
     * Sets the text content for the message. Some messages may contain only attachments or quick actions.
     */
    text?: string;
    /**
     * Sets the author of the message.
     */
    author: User;
    /**
     * Sets the time when the message was composed.
     */
    timestamp?: Date;
    /**
     * Sets the current status of the message. The status appears when the message is selected by clicking or through keyboard navigation.
     */
    status?: string | MessageStatus;
    /**
     * Sets the array of files attached to the message.
     */
    files?: ChatFile[];
    /**
     * Sets the message attachments.
     */
    attachments?: Attachment[];
    /**
     * Sets the layout for displaying message attachments.
     */
    attachmentLayout?: AttachmentLayout;
    /**
     * Sets the suggested quick actions to display below this message.
     *
     * > Suggested actions appear only for the last message in the conversation.
     */
    suggestedActions?: Action[];
    /**
     * Indicates if the message is pinned. Pinned messages are displayed at the top of the conversation.
     */
    isPinned?: boolean;
    /**
     * Sets the ID of the message to which this message is a reply.
     */
    replyToId?: string | number;
    /**
     * Indicates if the message has been deleted.
     */
    isDeleted?: boolean;
    /**
     * Indicates if the message is still being typed by the user. If `true`, the Chat shows a typing indicator.
     */
    typing?: boolean;
    /**
     * Indicates if sending the message has failed.
     */
    failed?: boolean;
    /**
     * Provides a reference to the original data item, if any.
     */
    dataItem?: any;
}
