import { Thread, ThreadInterface, ThreadMessage, MessageInterface } from '../../types' import { BaseExtension, ExtensionTypeEnum } from '../extension' /** * Conversational extension. Persists and retrieves conversations. * @abstract * @extends BaseExtension */ export abstract class ConversationalExtension extends BaseExtension implements ThreadInterface, MessageInterface { /** * Conversation extension type. */ type(): ExtensionTypeEnum | undefined { return ExtensionTypeEnum.Conversational } abstract getThreads(): Promise abstract saveThread(thread: Thread): Promise abstract deleteThread(threadId: string): Promise abstract addNewMessage(message: ThreadMessage): Promise abstract writeMessages(threadId: string, messages: ThreadMessage[]): Promise abstract getAllMessages(threadId: string): Promise }