import { APICursorHttpResponse } from "../../helpers/apiCursor.helper"; import { BaseDemultiplexedHttpChatsResource } from "../../resources/chats.resource"; import { StreamListener } from "../websockets/websocketManager"; import { ChatMessage, ChatMessageData, MultichatMessage } from "./message"; export interface ChatCreationData { client?: number; type?: string; metadata?: { [key: string]: any; }; } export interface ChatData { client: { [key: string]: any; }; created: string; current_agent: number; id: number; last_client_attribute_update_at: string; last_message_at: string; unread_count: number; uuid: string; type: { [key: string]: any; }; client_attributes: ChatClientInfoAttribute[]; session: string; } export interface ChatResourceFilters { type?: string; last_message_after?: string; last_message_before?: string; amount_messages_gte?: string | number; amount_messages_lte?: string | number; created_before?: string; created_after?: string; amount_client_attributes_gte?: string | number; amount_client_attributes_lte?: string | number; status?: string; page_size?: string | number; } export interface ChatMessageResourceFilters { sent_before?: string; sent_after?: string; msg_interface?: string; page_size?: number; exclude_typing?: boolean; } export interface ChatClientInfoAttribute { key: string; value: string; utterance: string; } /** * A single chat. Uses StreamListeners to keep tabs on the Chat's status. * @constructor */ export declare class Chat extends BaseDemultiplexedHttpChatsResource { receivedMessages: ChatMessage[]; sortKey: string; _subResources: { "currentStatuses": { resource: string; url: string; }; 'messages': { url: () => string; resource: string; }; 'metadata': { url: () => string; }; }; /** * @param data * * @param sessionKey - The User's Session ID for the Multichat API */ constructor(data: ChatData, sessionKey: string); newMessage(data: MultichatMessage | ChatMessageData): ChatMessage; setMetaData(metadata: { [key: string]: any; }): Promise; getMetaData(): Promise; /** * @returns {ChatMessage[]} - All loaded messages, from pagination calls and also the received ones */ readonly loadedMessages: ChatMessage[]; /** * Add the passed messages to the messages in this chat. * @param messages */ mergeMessages(messages: Array): void; requestMessages(uuid: string, filters?: ChatMessageResourceFilters): Promise>; onMessage(callback: Function): () => void; _findMainStreamListener(listener: StreamListener): boolean; /** * Listen for updates on one specific Chat instance */ listenForUpdates(): this; }