import type * as IShared from '../../../shared/interface'; import { Chat, File } from '../../../shared/entities/stock'; export type Entity = Chat; export declare const Route = "chat"; export declare const UpperName = "Chat"; export declare const LowerName: string; export interface IChatBalloon { chat?: Pick & { id?: string; read?: boolean; client_read?: boolean; translation?: string; lang?: string; }; file?: Pick & { id?: string; read?: boolean; client_read?: boolean; }; created_at: Date; created_by: string; is_customer: boolean; ghost?: boolean; } export type IReport = Pick; export interface IFindActiveByOwnerIdResponse { chat: IChatBalloon[]; last_group_report?: IReport; } export interface ICreateRequest { chat_document_header_id: string; message: string; username: string; is_customer: boolean; } export interface IUpdateRequest { chat_document_header_id?: string; message?: string; email_processed?: boolean; email_delivered?: boolean; email_opened?: boolean; email_clicked?: boolean; read?: boolean; client_read?: boolean; username?: string; } export interface IMarkAllClientReadUnreadRequest { chat_document_header_id: string; client_read: boolean; } export interface ITranslateRequest { chat_id: string; target_language_id: string; message: string; } export interface IRepository { findByOwnerId(params: IShared.IFindByIdRequest): Promise; create(data: ICreateRequest): Promise; update(selector: IShared.IFindByIdRequest, data: IUpdateRequest): Promise; deleteOne(selector: IShared.IFindByIdRequest): Promise; markAllAsRead(params: IShared.IFindByIdRequest): Promise; markAllAsUnread(params: IShared.IFindByIdRequest): Promise; publicMarkAllClientReadUnread(params: IMarkAllClientReadUnreadRequest): Promise; resendLast(params: IShared.IFindByIdRequest): Promise; translate(data: ITranslateRequest): Promise; } export type IController = IShared.IEntityWithUserToken;