import { Message } from "./Message"; import { Logger } from "../Logger.js"; import { FIFOQueue } from "../FIFOQueue.js"; declare class MessagesQueue extends FIFOQueue { private maxSize; private rwlock; isFull: () => boolean; updateMessageIfExistsElseEnqueueIt: (message: any, forceDequeueIfFull?: boolean) => Message; removeMessage: (message: any) => Message; removeMessageById: (messageId: string) => Message; replaceMessage: (messageOld: any, messageNew: Message) => Message; replaceMessageById: (idMessageOld: string, messageNew: Message) => Message; constructor(_logger: any, _maxSize?: number); get length(): number; } /** * @class * @name Conversation * @public * @description * This class represents a conversation
* A conversation is a "long" interaction (aka the "long tail") between the user ane one or several contacts (Rainbow users or not) based on the IM media if the recipients are Rainbow users.
* A conversation never ends and all interactions done can be retrieved.
*/ declare class Conversation { get messages(): MessagesQueue; set messages(value: any); id: any; dbId: any; type: any; owner: any; contact: any; bubble: any; capabilities: any; avatar: any; presenceStatus: any; name: any; filterName: any; missedCounter: any; missedCalls: any; private _messages; participantStatuses: any; draft: any; uploadFile: any; status: any; historyIndex: any; historyMessages: any; historyDefered: any; historyComplete: any; lastModification: any; creationDate: any; lastMessageText: any; lastMessageSender: any; pip: any; videoCall: any; audioCall: any; pstnConferenceSession: any; webConferenceSession: any; isMutedAudio: any; isMutedVideo: any; infoVisible: any; muted: any; randomBase: any; messageId: any; currentHistoryId: any; static Status: any; static Type: any; static PEERTYPE: any; private static randomBase; private static messageId; preload: boolean; isFavorite: boolean; bookmark: { "messageId": string; "timestamp": string; "unreadMessageNumber": string; }; pendingPromise: Array; private logger; constructor(conversationId: any, logger: Logger, imsOptions: any); /** * @private * @method addMessage * @memberof Conversation * @instance */ addOrUpdateMessage(message: any): any; /*************************************************************/ /*************************************************************/ static createOneToOneConversation(participant: any, logger: Logger, imsOptions: any): Conversation; static createBubbleConversation(bubble: any, logger: Logger, imsOptions: any): Conversation; generateRandomID(): string; static getUniqueMessageId(): string; /*************************************************************/ /*************************************************************/ static stringToStatus(status: any): any; /*************************************************************/ /*************************************************************/ reset(): void; resetHistory(): void; getMessageById(messId: any): Message; getlastEditableMsg(): Message; } /** * Enum peer type * * ``` * { * "UNKNOWN" = "unknown", // when the peer type is unkwon * "USER" = "user", // when the peer type is a user of the rainbow system * "ROOM" = "room" // when the peer type is a bubble * } * ``` * * @public * @enum {number} * @readonly * */ declare enum PEERTYPE { /** * when the peer type is unkwon */ "UNKNOWN" = "unknown", /** * when the peer type is a user of the rainbow system */ "USER" = "user", /** * when the peer type is a bubble */ "ROOM" = "room" } export { Conversation, MessagesQueue, PEERTYPE };